Skip to main content

A simple UI testing framework for macOS

Project description

MacUITest

A simple framework that helps to create functional and UI tests against almost any macOS application.

  • Created to help testers to automate their routine tasks with ease and help me with structuring my experience;
  • I'll be glad to receive suggestions on evolution of the project!

Tips

  • Allow Accessibility access in a Security&Privacy pane of System Preferences;
  • You might me asked to allow various access rights anyway, those are new macOS restrictions you cannot easily avoid from Python, just allow them;
  • When calling ObjC mouse wrapper a Python Launcher will show up in Dock. To avoid this behavior, you need to add LSUIElement -string "1" to a Python.app property list. Mine was located easily by running brew --prefix python3. It'll be under Frameworks -> Python.framework -> Resources;
  • Get UI Browser app, it helps to locate AppleScript locators of the elements on your screen, very helpful;

Table of Contents


Installation

  • Install a modern Python version (at least 3.6): brew install python3
  • Update pip's setup tools: pip3 install --upgrade pip setuptools wheel
  • Install the the package: pip3 install macuitest and you should be ready to go

Features

  • Many of useful operations on macOS are introduced in a macuitest.lib.operating_system package. A macos module inside the package will allow you to manipulate files, processes, change some of system settings, etc.;
  • An application module inside macuitest.lib.apps may describe almost any GUI macOS app. Creating an instance of which will allow you to perform launch/quit operations, read some of its attributes, have basic control over its main window, etc.;
  • applescript_wrapper module under macuitest.lib.applescript_lib allows to run some AppleScript commands;
  • And last but not least, you can describe most if not every element of an application using applescript_element, native_element and ui_element modules inside macuitest.lib.elements. They describe allow to work with AppleScript, PyObjC translated (Native) and UI (built on screenshots) elements retrospectively.

Examples

from macuitest.lib.apps.application import Application
from macuitest.lib.elements.applescript_element import ASElement

test_app = 'Calculator'
calculator = Application(test_app)

button_one = ASElement('button "1" of group 2 of window 1', process=test_app)
button_zero = ASElement('button "0" of group 2 of window 1', process=test_app)
input_field = ASElement('static text 1 of group 1 of window 1', process=test_app)

calculator.launch()
button_one.click_mouse()
button_zero.click_mouse()
button_one.click_mouse()
assert input_field.text == '101'  # Hopefully you get 101 there :)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

macuitest-0.6.5.tar.gz (60.2 kB view details)

Uploaded Source

File details

Details for the file macuitest-0.6.5.tar.gz.

File metadata

  • Download URL: macuitest-0.6.5.tar.gz
  • Upload date:
  • Size: 60.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.8.4

File hashes

Hashes for macuitest-0.6.5.tar.gz
Algorithm Hash digest
SHA256 8774e483afb5a1d2f2127f03614095e0bf96d3d2e404637a3fca1b0516a9b2af
MD5 f4469eea8ba6440e490e67f6386072c5
BLAKE2b-256 d1c5a56df704f88f0e662e6871187a53c09e8ba164c379b01ffcf2dbcf6ddda6

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page