AWS Device Farm

A cloud testing service for running application tests on real mobile devices and browsers

Overview

AWS Device Farm is a cloud testing service that lets you run automated and manual tests on real smartphones, tablets, and desktop browsers hosted by AWS. Because it uses physical devices rather than emulators, it detects crashes, performance degradation, and UI rendering issues under conditions close to actual user environments. It supports Android, iOS, and web applications, with compatibility for major test frameworks including Appium, Espresso, XCTest, and Calabash. Test results include screenshots, video recordings, logs, and performance data, streamlining issue reproduction and root cause identification.

Device Pools and Test Execution Mechanics

Test execution in Device Farm begins with configuring a device pool. A device pool defines the set of physical devices to test against, filtered by criteria such as OS version, manufacturer, and screen size. For example, you might configure pools like "Samsung devices running Android 12 or later" or "iPhones running iOS 16 or later" to replicate your target users' actual environments. When you create a test run, the uploaded app binary (.apk / .ipa) and test package are distributed to each device in the pool and executed in parallel. On public devices, Device Farm performs cleanup tasks such as uninstalling your app after each test, but the AWS documentation notes that data can persist between sessions in some cases, especially if you use the device system outside the context of your app. For this reason, AWS recommends not entering sensitive information such as a Google account or Apple ID on the devices. During execution, you can monitor status in real time, and upon completion, per-device screenshots, video recordings, and logs such as logcat/syslog output are generated. The official pricing page lists per-device-minute pay-as-you-go pricing and monthly flat-rate plans priced per device slot, where the number of slots determines how many devices you can use at the same time (as of October 2026).

Automated Test Frameworks and Test Suites

Device Farm natively supports multiple automated test frameworks. According to the AWS documentation (as of October 2026), Android supports Appium and Instrumentation (JUnit, Espresso, and others), iOS supports Appium, XCTest, and XCTest UI, and web applications are also tested with Appium. Desktop browser testing is a separate feature that runs Selenium tests on Chrome, Firefox, and Microsoft Edge. Test suite configuration allows defining pre- and post-test hook processing through a test spec file (testspec.yml). You can customize dependency installation, environment variable setup, pre-test data seeding, and post-test artifact collection. The built-in fuzz test feature lets you detect crashes through random UI interactions without writing any test code. Test results are aggregated at the suite and test case level, with failed test screenshots and logs enabling rapid identification of problem areas.

CI/CD Integration and Test Result Analysis

Integrating Device Farm into your CI/CD pipeline enables automatic real-device testing with every code change. For AWS CodePipeline integration, a native action provider is available - simply add Device Farm as a test stage after the build stage. For third-party CI tools like Jenkins, GitHub Actions, and Bitrise, call the Device Farm API via AWS CLI or AWS SDK. For test result analysis, retrieving each artifact's URL with the ListArtifacts API, downloading screenshots and logs, and feeding them into an internal test reporting system is a practical workflow.

References (Official AWS Resources)

The primary sources for this page are the official AWS website and documentation. Check the official pages below for the latest specifications and pricing.

If this page and the official documentation disagree, treat the official documentation as authoritative.

Share