A New Way to Use Appium/Selenium with Real Devices on Cloud

Bitbar, the mobile devops company. Logo, large

Dear Testdroiders,

Appium has been the number one smoking hot framework during the past quarters and there are no signs of this trend cooling down anytime soon. We’ve been providing Appium/Selenium support for Testdroid Cloud now for more than a year and significant portion of Testdroid Cloud test runs are Appium/Selenium runs nowadays. To make things even more convenient for our users, we’re about to introduce an awesome new feature that will make executing those test runs much easier and less error-prone – as you don’t have to play those desired caps all the time.

Download Our Appium Beginner’s Guide to Set Up Your Appium Testing Environment Today

We recently released a new version of Testdroid Cloud and with this version, we’ve brought out a new feature that enables completely new way to execute Appium/Selenium tests on our devices. Basically, with this implementation users with Appium/Selenium scripts are not required to configure desired capabilities as they would do with current client-side execution. We call this implementation “Appium Server Side” execution that basically means that test scripts can run locally on our environment – you just upload your .APK or .IPA and test package to Testdroid Cloud and our our system takes care of proper configuration and manages all details for desired capabilities.

How it Works?

The application is uploaded to Testdroid Cloud the same way in both approaches. You can do it manually or use the Testdroid API to get your application file (APK or IPA) included in the project where test execution will take its place. Also, the test package (as a zip file including all test assets, script etc.) can be uploaded the same way as you would be doing with other test automation frameworks. Like the application file, you can push the test zip package through Testdroid API (as a test file) or use the manual web front-end.

Great news is that all the other Testdroid Cloud features work seamlessly with the server-side Appium and you can – for example – configure and create new device groups and run those tests within these device groups without any modifications to desired capabilities. This itself can save you hours from configuration time.


With client-side Appium you will need to configure those Testdroid desired capabilities and make sure everything is ready for execution on Testdroid Cloud. The test script will then go through and communicates with Appium Broker that passes all configuration details to Appium Server and then to the device (one device at time). The server-side Appium does this parallel with all selected devices, making the whole process much faster.

Both approaches will allow you to reserve all test assets (scripts, screenshots, logs etc.) under your Testdroid Cloud projects, but with server-side Appium all other features are available and easy to use.

Desired Capabilities – And How to Get Rid of Those

Let’s look at things from both, localhost and Testdroid Cloud point of view. When you run any Appium tests, you configure desired capabilities accordingly and point Webdriver either to localhost (http://localhost:4723/wd/hub) or Testdroid Cloud (http://appium.testdroid.com/wd/hub). For example, if you use Testdroid Cloud you also add Testdroid Desired Capabilities for your test script – for example like this:

“testdroid_username”: “user@domain.com”,
“testdroid_password”: “p4s$w0rd”,
“testdroid_target”: “ios”,
“testdroid_project”: “My First Project”,
“testdroid_testrun”: “Test 1”,
“testdroid_device”: “iPad Mini 7.0.4 A1432”,
“testdroid_app”: “application.ipa”
“app”: “com.bitbar.testdroid.BitbarIOSSample”

There are few more options for configuring desired capabilities, so please check this if you want to know all details of it.

Behind the Scenes

Despite the usability is much more smooth with server-side Appium, from the infrastructural point of view both are pretty similar. The picture below illustrates what happens behind the scenes regardless of which way user is using it.

Screen Shot 2015-04-21 at 12.46.35 PM

The things behind the scene are pretty much the same regardless of which approach you take. If you use client-side execution, you must configure those desired caps and our Appium Broker together with Appium Server takes care of running tests one by one on those devices. With server-side Appium execution, our system takes care of simultaneous test runs on those devices you have selected. There aren’t any limitation of how many devices you can use simultaneously so even hundreds of different variants if you want.

The Benefits of Server-Side Appium

First of all, one the most significant improvement provided with this server-side Appium implementation is the ability to execute Appium tests parallel on real devices. As Appium was originally designed to provide tight relation to emulator or one device at time, we’ve now extended the possibility to use it across even hundreds of real devices simultaneously.

Secondly, users do not need to configure any of those devices on desired capabilities, but all can be done with Device Group creation and configuration by dragging and dropping desired devices into your device groups. This eliminates the variety of errors that typically came with configuring devices in script.

Also, all test runs are now easy to monitor through real-time views at Testdroid Cloud. At a glance, you will see how test runs are doing, get instant feedback on failures, and possibility to maintain all test results (screenshots, logs, performance stats etc.) and file assets under your projects.

Want an access to Server-Side Appium? Please let us know (sales at bitbar dot com) and let us know in comment section what you think about this feature! We’re looking forward for your comments and questions.

The Beginner’s Guide of Using Appium for Mobile App Testing

Learn all the basics about Appium, how to set it up and how to use it for mobile app testing.


  • John

    The best innovation since sliced bread! Thank you!