The architecture of Mendoza is based on a set of NSOperations orchestrated by a single NSOperationQueue. The chart below shows operation's dependencies and external plugins support.
Initial setup checking that all nodes are ready to properly execute tests
Validate configuration file checking for missing credentials, passwords, network reachability and dependencies.
For macOS projects we validate that the all testing nodes are running the same OS version.
Prepares filesystem on the compiling node.
Prepares filesystem on the remote testing nodes.
A workaround tasks that applies to Macbook with closed lids.
Extract test methods from UI test target files. Can be overridden by plugin implementation.
Compile project using xcodebuild's build-for-testing
which will produce a test bundle that will be later sent to remote nodes. Pre/post compilation can be customize with plugins.
Returning a sorted list of tests from longest to shortest execution time will optimize total execution time of your test suite
Prepares simulators on testing nodes by installing missing runtimes or simulator devices.
The test bundle generated by the compilation operation is sent over to remote nodes.
Tests are executed using xcodebuild's test-without-building
passing the tests to be executed on each node vias only-testing
parameter.
Collects the results sending them to the destination node.
Write test result summary files (json, html)
Reclaim disk space by removing unneeded files
Reset simulators cleanup.
Reset filesystem cleanup. Can be extended by the TearDown plugin