Wednesday, December 16, 2015
Updated June 1, 2017.
Appium, an open source project that provides mobile UI automation based on Selenium Web Driver for iOS and Android devices, is gaining popularity among the enterprise test teams we’re talking to. Some might think the price (Appium is open-source freeware) drives its popularity, but I think it’s more likely because a lot of enterprise testing shops already know Selenium from another venue, desktop web automation. It’s natural to want to transfer the skills.
But perhaps the most common question we hear from potential Appium users is, “Do we need an Apple Mac in order to run Appium tests on iOS devices?” Shops who are at arm’s length (geographically) from their in-house developers, or those who have outsourced development to third parties, typically don’t have even one Mac in house. The developers, wherever they may be, are almost certainly using Macs already, especially if they’re using Xcode, Apple’s IDE for Objective-C and Swift.
Apple has provided some great capabilities for developers and testers alike in Xcode, including UI Automation and powerful debugging and profiling capabilities in Instruments. For iOS 9, Apple has even built a record-and-play and scripting capability in Xcode itself, allowing UI automation tests to be recorded and played back in the same Xcode project as the app.
So why the need for a Mac? Just as Mobile Labs has done with deviceConnect™ (the server in deviceConnect runs on a Mac computer system), companies and open-source projects alike who want to utilize the capabilities that Apple provides need to connect iOS devices to a Mac. This is because Xcode and its capabilities are only produced and licensed for use on OS X, the Mac’s operating system. Luckily, Mac servers come in some very affordable, yet powerful, packages like the Mac Mini.
In the case of Appium, the requirement for a Mac lies in Apple’s UI Automation, which means that the Mac OS X version of Xcode must be installed, and as is stated succinctly in the Appium documentation in notes for both Windows and Linux, “You will not be able to test iOS apps on a […Windows or Linux] server, because Appium relies on OS X-only libraries to support iOS testing. You can however use the Remote Server option to connect to an Appium server running on a Mac.”
For testers working in a mostly Windows environment, Mobile Labs has many support options. With the deviceBridge™ client, testers can connect devices to a remote Appium server running on a Mac with attached iOS devices.
With the latest release of deviceConnect, the Appium server is built directly into the deviceConnect server. This eases the need to configure many Appium servers for script execution. The built-in Appium server makes a single end point to execute scripts against many different devices. When a script executes, an available device will automatically be retained based on the capabilities that are defined within the test. When the test finishes, the device will be released and available for the next script or tester to use. deviceConnect’s Appium support reduces the need for additional Mac computers while leveraging devices that can be shared for development, automation and manual testing use.
The picture shows the flexibility of Appium’s implementation. Because the interface to the server uses HTTP-based JSON wire protocol to encapsulate the Selenium Web Driver protocol, the number of possible clients and development tools is almost limitless. This is because the Appium and Web Driver clients are libraries – so things as disparate as Ruby and Visual Studio are supported.
Because tests are cross-platform, a client can run a single test on both iOS and Android devices. Note that because the Appium server must have access to Apple’s UI Automation, iOS devices can only be supported on an Apple Mac.
What we were asking today was, “Do Appium users need a Mac to test iOS devices with Appium?” and they do, because Apple’s tools and libraries needed for testing iOS devices (Xcode, UI Automation, Instruments) are built by Apple for the Mac, are only distributed by Apple for the Mac, and are only licensed for running on a Mac. The situation is the simple result of Apple producing Mac-based iOS development tools.