The recent launch of iOS 10 has sparked some serious discussion in test automation ecosystem and among framework developers. Several test automation frameworks have had issues with the latest iOS version and this have forced developers and testers to tweak their testing environments, scripts and tool setups.
We’ll take a look at the state of the art with iOS 10 and how to overcome with those issues with Calabash.
From UIAutomation to XCUITest
The most significant change in test automation between Xcode 8 and Xcode 7 is the UIAutomation support. Apple has now removed Instrument’s UIAutomation from Xcode 8 and replaced it with Xcode’s UI Testing Infrastructure (XCUITest).
As UIAutomation is not available anymore in Xcode 8, all uia_* calls now raise an error when tests are executed.
Calabash also have had some issues with iOS 10 and basically running Calabash tests on devices with iOS 10 requires the following tools/setup:
- Calabash iOS server version 0.20.0
- Xcode 8 (the latest version)
- Ruby >= 2.2 (preferably the latest)
- run_loop gem >= 2.2
As Apple removed UIAutomation each and every framework have had impact with test script execution. Calabash’s bridge between Calabash-iOS and Xcode command-line tools is called DeviceAgent, and it is based on XCUITest framework.
To update your Calabash environment and version, just execute the following command:
$ gem install calabash-cucumber
If you need to update your Xcode version you can also use
DEVELOPER_DIR environment variable, or simply install it over the older Xcode version. NOTE! If you want to run tests on iOS 8 (or older) you also need Xcode 7 installed. Because of this, we recommend having both versions installed and available.
If you are using MacOS Sierra you basically need to use Xcode 8 as the old Xcode 7 isn’t supported on it.