Documentation
Mobile App Test Automation
TestingBot runs automated tests for native iOS, Android and cross-platform apps on real iPhones, iPads and Android phones and tablets in our EU datacenter, plus iOS simulators and Android emulators for fast iteration. Bring your existing Appium, XCUITest, Espresso, Maestro or Electron tests and point them at the TestingBot grid.
Pick a mobile test framework
TestingBot supports the major mobile and cross-platform test frameworks. Each card links to a complete setup guide with code examples in every supported language. Not sure which framework to pick? See the framework comparison below.
Quick start: run your first mobile app test
Four steps to point an existing Appium, XCUITest, Espresso or Maestro test at the TestingBot cloud:
- 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.
-
Upload your app binary to TestingBot Storage. Upload your
.ipa(iOS),.apk(Android) or Maestro flow ZIP to TestingBot Storage. The response returns atb://URL you reference in test capabilities. -
Point your framework at the TestingBot endpoint. Connect to
https://hub.testingbot.com/wd/hub. Pass your key and secret viatb:options, setplatformName,deviceName,platformVersionandapp(thetb://URL). - Run the test and view results. TestingBot streams a live video, screenshots, device logs and framework command logs into the dashboard while the test runs and after it finishes.
Appium vs XCUITest vs Espresso vs Maestro
All four frameworks run on TestingBot. Pick the one that fits your codebase and team:
| Appium | XCUITest | Espresso | Maestro | |
|---|---|---|---|---|
| Platforms | iOS and Android | iOS only | Android only | iOS and Android |
| Languages | Java, Python, Ruby, JavaScript, C#, PHP, Flutter | Swift, Objective-C | Java, Kotlin | YAML (declarative) |
| Protocol | W3C WebDriver | Apple XCTest runner | Google AndroidJUnitRunner | Maestro CLI |
| Test speed | Slower (extra protocol layer) | Fast (native runner) | Fast (native runner) | Fast (direct UI driver) |
| Best for | One codebase across iOS and Android, language flexibility | iOS teams already using XCTest in Xcode | Android teams already using AndroidJUnit in Studio | QA teams that want readable, low-code flows |
Frequently asked questions
What is mobile app test automation?
Mobile app test automation runs UI tests against native iOS and Android applications, exercising the app exactly like a user would. TestingBot runs these tests on real iPhones, iPads, Android phones and tablets in our EU datacenter, plus iOS simulators and Android emulators when you want faster iteration. See the supported device list for current models.
Which mobile test frameworks does TestingBot support?
TestingBot supports Appium for cross-platform iOS and Android, Apple's XCUITest for iOS, Google's Espresso for Android, Maestro for declarative cross-platform flows, and Electron for cross-platform desktop apps. See the dedicated guides for Appium, XCUITest, Espresso, Maestro and Electron.
Can I run tests on real iPhones and Android devices, not simulators?
Yes. TestingBot runs automated 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 to TestingBot?
Upload your .ipa, .apk or Maestro flow ZIP to TestingBot Storage with your API key and secret. The response returns a tb:// URL that you reference in your test capabilities. Apps are retained for the storage retention period defined by your plan and can be deleted via the REST API at any time.
Can I run mobile app tests in parallel?
Yes. Each plan includes a number of concurrent device sessions. Most test runners (Appium, XCUITest, Espresso, Maestro) launch parallel sessions natively, and each session runs on a separate, isolated device. See our pricing plans for the device-concurrency limits.
What is the difference between Appium, XCUITest, Espresso and Maestro?
Appium is a cross-platform W3C WebDriver implementation for iOS and Android, similar to Selenium. XCUITest is Apple's native iOS UI testing framework. Espresso is Google's native Android UI testing framework. Maestro is a YAML-based declarative test runner for both platforms. Appium gives the broadest reuse for teams that need one codebase across iOS and Android. XCUITest and Espresso are tightly coupled to their respective platforms and typically run faster. Maestro is the simplest to write and read. See the framework comparison on this page for details.
Can I test my app on a real device behind a firewall or staging environment?
Yes. Use the TestingBot Tunnel to expose internal services to the device under test. Start the tunnel with an identifier, then pass tunnelIdentifier in your tb:options capabilities. The tunnel encrypts traffic between your network and the cloud device.
How are mobile app tests billed on TestingBot?
Mobile app tests are billed by the minute (the time the device was allocated to your test) and capped by your plan's concurrency limit. Simulator, emulator and real-device sessions all consume the same minutes at the same rate. See our pricing plans for current rates.
Next steps
- Supported devices
Real iPhones, iPads and Android devices on the grid - Appium guide
Cross-platform iOS and Android automation - XCUITest guide
Native iOS UI testing - Espresso guide
Native Android UI testing - Maestro guide
YAML-based declarative flows - Real device testing
How the real-hardware cloud works - TestingBot Tunnel
Test against internal or staging APIs - Pricing
Real-device plans and concurrency