Appium Test Automation Framework
Appium is a mobile test automation framework (and tool) for native, hybrid and mobile-web apps for iOS and Android. It uses JSONWireProtocol internally to interact with iOS and Android apps using Selenium’s WebDriver.
In its architecture, Appium is an HTTP server written in Node.js that creates and handles multiple WebDriver sessions. Appium starts tests on the device and listens for commands from the main Appium server. It is almost the same as the Selenium server that gets HTTP requests from Selenium client libraries.
Appium enables users to execute tests on mobile devices regardless of OS. This is possible because the Appium framework is basically a wrapper that translates Selenium’s WebDriver commands to UIAutomation (iOS), UIautomator (Android, API level 17 or higher) or Selendroid (Android, API level 16 or lower) commands, depending on the device’s type.
For Android, this is how Appium compares to other test automation frameworks:
Android test suites are based on JUnit. In addition, Android provides an architecture and fully integrated testing capabilities with its standard tools, which help developers to test at every level, from unit to framework. Android instrumentation is a set of control methods in the Android system. These methods control an Android component independently of its normal life cycle.
One of the best things about Appium is that, despite sounding architecturally complex, it actually isn’t — at all. For developers, it provides support for various programming languages, freedom from having to select tools, compatibility across the most important platforms (Android and iOS), freedom from having to install and configure devices to test and more.
If you are familiar with Selenium, then you’ve got Appium covered. An Appium test is pretty much the same as a Selenium test: They use the same WebDriver, and DesiredCapabilities is used the same way. Configuring an application to run on Appium has a lot of similarities to Selenium — for example, those DesiredCapabilities.
Also, Appium includes a component called the Appium Inspector. This inspector enables a host of functionality — for example, showing all of those UI elements in the application and enabling basic recording and playback.
Testdroid Cloud allows testers to use various testing frameworks to run their automated tests on against real devices in the Testdroid cloud. Appium is one of these frameworks.
You can run your tests either remotely from your localhost or in Testdroid Cloud.
Typically testing is started with developing tests on localhost and running them using the Appium client against a device in Testdroid Cloud. Once the tests work on one device it’s time to move testing against multiple devices in the cloud. Here tests are executed in parallel against all chosen devices.
Running Appium Locally
The first thing is to run your tests as Appium client on your local computer. This is the way you typically would run your tests when your test device is connected to your computer.
The downsides with this approach is that you are running your tests sequencially against single devices in the cloud. This approach is slow and fragile to any network error.
There are plenty of examples on Github in different programming languages to help set up the environment and run your first tests.
Running Appium in Public Cloud
Tests can also be run in parallel in cloud. The app to test needs to be uploaded with associated tests to Testdroid Cloud. Tests are run in parallel against all the chosen devices as soon as they become available. Test results are stored in cloud once they are executed and user is notified by email.
Appium with Python
Appium with Java
Testdroid Cloud Desired Capabilities
Requirements for .ipa
Here is the procedure to create your iOS mobile application (.ipa files) to run your app in Testdroid Cloud.