pxctest

Execute tests in parallel on multiple iOS Simulators.

Installation

To install via Homebrew you can use the plu/homebrew-pxctest tap:

brew tap plu/pxctest
brew install pxctestCopy the code

Usage

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-testingCopy the code

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. XctestrunCopy the code

The --destination option can be passed in several times and will execute the tests in parallel on all Simulators.

run-tests –preferences

This option expects a path to a file, which contains some JSON. After loading this file, its content gets applied to the Simulator’s preferences property list file located at Library/Preferences/com.apple.Preferences.plist.

Example: You can turn off all keyboard settings that you can find in the Simulator’s Settings app by using following JSON content:

{
  "KeyboardAllowPaddle": false,
  "KeyboardAssistant": false,
  "KeyboardAutocapitalization": false,
  "KeyboardAutocorrection": false,
  "KeyboardCapsLock": false,
  "KeyboardCheckSpelling": false,
  "KeyboardPeriodShortcut": false,
  "KeyboardPrediction": false,
  "KeyboardShowPredictionBar": false
}Copy the code

FBSimulatorControl

The functionality of pxctest would not be possible without the great FBSimulatorControl Framework provided by Lawrence Lomax at Facebook.

There are two command line tools that come with FBSimulatorControl:

  • fbsimctl – command line interface to the FBSimulatorControl Framework
  • fbxctest – test runner for running iOS testing bundles for the iOS Simulator Platform

Both of them are more flexible than pxctest, so it might be worth having a look at them.

License

MIT