Execute tests in parallel on multiple iOS Simulators.
To install via Homebrew you can use theplu/homebrew-pxctest tap:
brew tap plu/pxctest brew install pxctest
Compile your tests with build-for-testing
, example:
xcodebuild / -IDEBuildLocationStyle=Custom / -IDECustomBuildLocationType=Absolute / -IDECustomBuildProductsPath="$PWD/build/Products" / -scheme 'MyApp' / -workspace 'MyApp.xcworkspace' / -destination 'platform=iOS Simulator,name=iPhone 5,OS=10.1' / build-for-testing
In build/Products
you should find a .xctestrun
file. This can then be passed to pxctest
:
pxctest / run-tests / --destination 'name=iPhone 5,os=iOS 9.3' / --destination 'name=iPhone 5,os=iOS 10.1' / --testrun build/Products/MyApp_iphonesimulator10.1-i386.xctestrun
The --destination
option can be passed in several times and will execute the tests in parallel on all Simulators.
To see a list of possible options, just run:
pxctest run-tests --help
Most of the options should be self-explanatory. If not, please open an issue or submit some pull request. However the --defaults
option needs a special section here.
This option expects a path to a file, which contains some JSON. After loading this file, its content gets applied to the Simulator's defaults. On the top level the keys must be either a relative path or a domain where the defaults are located.
Example: You can turn off all keyboard settings that you can find in the Simulator's Settings app by using following JSON content:
{ "com.apple.Preferences": { "KeyboardAllowPaddle": false, "KeyboardAssistant": false, "KeyboardAutocapitalization": false, "KeyboardAutocorrection": false, "KeyboardCapsLock": false, "KeyboardCheckSpelling": false, "KeyboardPeriodShortcut": false, "KeyboardPrediction": false, "KeyboardShowPredictionBar": false } }
git clone --recursive https://github.com/plu/pxctest.git pxctest cd pxctest scripts/bootstrap.sh NSUnbufferedIO=YES xcodebuild -scheme pxctest test | xcpretty -c
The functionality of pxctest
would not be possible without the great FBSimulatorControl Framework provided byLawrence Lomax atFacebook.
There are two command line tools that come withFBSimulatorControl:
Both of them are more flexible than pxctest
, so it might be worth having a look at them.
MIT