Welcome to Emcee project, an ultimate solution for running iOS tests in parallel locally and across many Macs.
Emcee allows you to run UI tests on many physical machines, distributing the work and getting the results of the test run faster. Shared queue manages the order of test execution. Emcee workers execute tests and maintain lifecycle of their simulators automatically. Emcee can generate the Junit and trace reports to make you see how the test run behaved on different machines.
Up to date documentation is available on Wiki.
Rich test plans using simple JSON file format
Automatic simulator lifecycle management
Per-test timeouts, simulator settings, environment variables
Single test queue to run tests from multiple parallel pull requests
Prioritized jobs and job groups for different kinds of test runs
Load balancing of worker machines to achieve optimal parallelization performance
On-the-go maintenance of the workers
Integration into existing test management systems via plugins
Easy to use command line interface
Rich test discovery mechanism
Swift Package for using and extending Emcee the way you want
Emcee uses Swift Package Manager for building, testing and exposing the Swift packages.
To start exploring code open
Package.swift in Xcode 11 or execute
make open to generate and open Xcode project.
We are happy to accept your pull requests. If something does not work for you, please let us know by submitting an issue. Read the docs and suggest improvements to them as well!
General commands that help you with a development workflow:
Package.swift file is generated automatically. You must update it before submitting a pull request (run
make package). CI checks will fail if you forget to do so.
brew install libssh2
|Last commit: 15 hours ago|
xcresult-eys into Plugins
@venigreat implemented a feature that allows to access
xcresult bundles from plugins, allowing to process them on the go.
TestContext.environment now contains a new entry which points to a
xcresult bundle. You can and should use
XcodebuildTestRunnerConstants.envXcresultPath to get the name of that env.
By the way, there is an open source Allure plugin for Emcee
@venigreat implemented the following feature: Emcee now allows to access SSH by using private key files. Previously it only used password based auth. You specify auth mechanism via queue configuration.
@venigreat implemented a third feature: Emcee now can add arbitrary HTTP headers to its network requests. This is useful if your storage (e.g. artifactory, nexus, etc.) requires authentication via headers, or if your back-end wants to track its clients via some