A glance into Appium’s practical means to keep up to date with Apple’s operating system updates.  More specifically,  how will Appium support iOS 10?
Introduction
Appium‘s greatness lies in the abstraction of a platform’s native system frameworks by using webdriver via a platform and language-neutral protocol to operate mobile and hybrid applications. In a nutshell, it allows developers to create universal tests for multiple purposes and various versions.
To work its magic, Appium relies on system frameworks provided by the operating system vendors and in case of iOS, it relies on Apple. Enormous amounts of  effort  have been invested in this abstraction layer by the open source community, to cover all possible combinations and variations with the fine tuning for iOS test automation.
As time goes by, the more advanced the environment becomes and mobile giants such as Apple continue to rise. Up until iOS 9.2, Apple’s only automation technology was called UIAutomation. Starting with iOS 10, this framework has been completely removed from the list of available instruments and introduced its successor – the XCUITest.
How will Appium Support iOS 10 – Solution
In order to continue supporting test automation on iOS 9.3 and higher, Appium adopted a new driver which was originally developed by Facebook- WebDriverAgent. It links the XCUITest framework and executes commands such as launching and killing applications, tapping and scrolling views, directly on the device.
Missing Features
While the capabilities of the new framework matches those of its predecessor, Appium still needs to increase its efforts in order to produce equal capabilities as provided by UIAutomation. In spite of the release of version 1.6, although some features are missing:
- Geolocation
- Device shaking
- Device locking
- Device rotation
The release date of the missing features is unclear, since some of them are not even supported by XCUITest framework and some are just buggy. If you are using these in your test automation, you should comment them out until better days come.
What You Must Change
XCUITest doesn’t natively support XPath locators, making them up to 100 times slower. It was always advised not to use XPath due to its non-generic approach, however in iOS 10 it becomes one of the major drawbacks and must be revised in your automated tests.
Current State
Overall, Appium’s smooth transition to iOS 10 automation is impressive. However, there is a lot more coming  with the release of version 1.6.2 which handles some of the issues mentioned previously (tapping , landscape mode, failing gestures, etc.). As well as, XPath querying was improved but not fully resolved.
Stay tuned for our future updates!