Mozilla Iris is a tool that uses on-screen pattern and text matching, while manipulating a machine's mouse and keyboard, to test visual and interactive states of an application. For more detailed information and troubleshooting tips, please view our wiki.
- Python 3
git clone https://github.com/mozilla/iris # Run the Mac bootstrap script cd iris ./bootstrap/bootstrap.sh # Run this command to agree to xcode terms of service sudo xcodebuild -license accept
- Restart your Mac in order for certain libraries to be recognized
- In System Preferences, go to Mission Control and change the keyboard shortcut for "Application Windows" to "-", or none
- Launch Iris
cd iris pipenv install pipenv shell iris sample
Windows 7 / Windows 10 Professional instructions:
git clone https://github.com/mozilla/iris cd iris bootstrap\bootstrap.sh # Install project requirements and activate the virtualenv pipenv install pipenv shell # Run Iris iris sample
Ubuntu Linux 16.04 instructions:
- Python 3
- Follow instructions below for disabling Keyring
- Open Settings > Displays > "Scale for Menu and Title bars:" and verify that it is set to 1
git clone https://github.com/mozilla/iris cd iris ./bootstrap/bootstrap.sh # Note: This will take around 10 minutes to download, compile, and install dependencies # Run the following commands to complete installation and launch Iris pipenv install pipenv shell iris sample
The Iris project is meant to be used with your own "target" and tests. A target is basically a pytest plugin invoked by Iris, which will then gather data during the run to present in a web-based interface known as the Iris Control Center.
Iris is available as a PyPI library named
moziris. It requires system dependencies that are installed using the bootstrap script from this repo.
Once your system is configured, and the setup instructions have been followed, you can test some of Iris' functionality.
To invoke the "sample" target - which is just a placeholder project for demonstration purposes:
To open the Control Center, which is the web-based UI for managing local Iris runs:
To verify that the Iris API itself exists, without running tests, this command will move your mouse on screen:
A complete list of command-line options is available when invoking the
For more detailed examples, see the project wiki.
See our project wiki for more information on contributing to Iris.
Enable Pre-Commit Hooks
Iris has pre-commit hooks for flake8 linting and black code formatting. These hooks will run black and flake8 prior to committing your changes.
This means that black will format all python files in-place, and flake8 will lint your code for any errors.
If there are flake8 violations, your changes will not be committed. The list of ignored rules is documented in the
tox.ini file. There should be a compelling reason to do so before adding to this list.
If you already have Iris installed on your system prior to this patch, you will need to run
pipenv install again to install the pre-commit module.
# Install dependencies, including pre-commit pipenv install # Install pre-commit hooks defined in .pre-commit-config.yaml pre-commit install
That's it! Here's an example of how it works:
# make some changes git add -A git commit -m 'detailed commit message' [WARNING] Unstaged files detected. [INFO] Stashing unstaged files to /Users/ksereduck/.cache/pre-commit/patch1570121459. black....................................................................Passed Flake8...................................................................Failed hookid: flake8 targets/firefox/bug_manager.py:11:1: E402 module level import not at top of file targets/firefox/bug_manager.py:12:1: E402 module level import not at top of file targets/firefox/bug_manager.py:14:1: E402 module level import not at top of file targets/firefox/bug_manager.py:15:1: E402 module level import not at top of file targets/firefox/bug_manager.py:16:1: E402 module level import not at top of file [INFO] Restored changes from /Users/ksereduck/.cache/pre-commit/patch1570121459.