Skip to main content

Documentation

Appium Cloud Testing

Appium is the open-source W3C WebDriver framework for native, hybrid and mobile-web applications. TestingBot runs Appium tests on real iPhones, iPads and Android devices in our EU datacenter, alongside iOS simulators and Android emulators for fast iteration. Bring your existing Appium tests in Java, Python, Node.js, Ruby, C#, PHP or Robot Framework and point them at the TestingBot grid.

Quick start: run your first Appium test

Four steps to point an existing Appium test at the TestingBot cloud:

  1. Sign up and grab your API key. Create a free account. Your API key and secret are in the dashboard under Account, then Keys and Authentication.
  2. Upload your app binary to TestingBot Storage. Upload your .ipa (iOS) or .apk (Android) to TestingBot Storage. The response returns a tb:// URL you reference as the appium:app capability.
  3. Point Appium at the TestingBot endpoint. Connect your Appium client to https://hub.testingbot.com/wd/hub. Set platformName, appium:deviceName, appium:platformVersion and appium:app (the tb:// URL). Pass your key and secret via tb:options.
  4. Run the test and view results. TestingBot streams a live video, screenshots, device logs and Appium command logs into the dashboard while the test runs and after it finishes.

Pick a language or framework

Each card below links to a complete setup guide for that language or framework, including a working example, capability reference and CI integration.

Java

Appium with the Java Appium client. JUnit, TestNG and Cucumber friendly.

Node.js

Appium with the Node.js Appium or WebdriverIO clients.

C# / .NET

Appium with the C# Appium client. NUnit, Reqnroll and SpecFlow friendly.

Python

Appium with the Python Appium client and pytest.

Ruby

Appium with the Ruby appium_lib gem.

PHP

Appium with the PHP WebDriver client.

Robot Framework

Robot Framework

Keyword-driven testing with AppiumLibrary on top of Robot Framework.

Preparing your app

Before uploading, make sure your .ipa or .apk is built for testing (not release-signed for the App Store) so it can be installed on TestingBot devices. See preparing a mobile app for testing for the iOS provisioning profile and Android signing requirements.

Useful Appium capabilities

Appium exposes a comprehensive list of capabilities for configuring a test. The capabilities below are the ones we see come up most often:

Android-specific

  • appium:appActivity and appium:appPackage: by default Appium extracts the launch activity from your APK. Set these explicitly if extraction fails or if you want to start in a non-default activity.
  • appium:chromeOptions: extra ChromeDriver options when testing the in-app Chromium web view.
  • appium:otherApps: a JSON array of additional app URLs to install alongside the app under test (useful for testing share-targets or deep links to other apps).

Android and iOS

  • appium:locale: the language of the simulator or device (for example fr_CA).

    This sets the locale on the entire device or simulator, except on real iOS devices. For real iOS devices, TestingBot passes -AppleLocale as a launch argument to the app instead.

  • appium:newCommandTimeout: how many seconds Appium waits for a new command from the client before assuming the client quit and ending the session.
  • appium:autoGrantPermissions (Android) or appium:autoAcceptAlerts (iOS): silently grant or accept permission popups so they do not block the test. See permission popups.
  • realDevice: true inside tb:options: route the test to a physical iPhone, iPad or Android device instead of a simulator or emulator.

Frequently asked questions

What is Appium and what is it used for?

Appium is an open-source cross-platform test framework for native, hybrid and mobile-web applications. It implements the W3C WebDriver protocol so you can use the same client library to drive iOS and Android apps from Java, Python, Node.js, Ruby, C#, PHP and other languages. TestingBot runs Appium on a cloud grid of real devices and simulators so you do not have to maintain local Appium servers.

Which languages and frameworks does Appium support on TestingBot?

All Appium client libraries work against the TestingBot grid: Java, Python, Node.js (including WebdriverIO and CodeceptJS), Ruby, C# (including NUnit, Reqnroll and SpecFlow), PHP and Robot Framework.

Can I run Appium tests on real iPhones and real Android devices?

Yes. TestingBot runs Appium tests on physical iPhones, iPads and Android phones and tablets housed in our EU datacenter, alongside iOS simulators and Android emulators. Use realDevice: true in your capabilities to target real hardware. See real device testing for the full real-hardware overview.

How do I upload my app binary for Appium tests?

Upload your .ipa or .apk to TestingBot Storage with your API key and secret. The response returns a tb:// URL that you pass as the appium:app capability in your test. See uploading apps for Appium for details.

Which Appium version does TestingBot run?

TestingBot automatically selects the latest Appium 2 release compatible with the device, OS and OS version you request. Pin a specific version with the appiumVersion capability if you need an exact release. The full list of supported versions is on the Appium versions page.

Can I test the mobile web (Safari, Chrome) with Appium on TestingBot?

Yes. Set browserName to safari (iOS) or chrome (Android) and omit the app capability. See mobile browser testing for the full setup.

How do I handle permission popups, push notifications or app upgrades in Appium tests?

TestingBot supports the standard Appium capabilities for these flows: auto-grant or auto-accept permission popups, trigger and interact with push notifications, and test app upgrades by chaining installs of two binaries.

Can I run Appium tests behind a firewall or against a staging API?

Yes. Start the TestingBot Tunnel and pass tunnelIdentifier in your tb:options capabilities. The cloud device will route HTTP traffic through your tunnel so it can reach internal staging APIs and local development servers.

Next steps