> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://tester.army/docs/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://tester.army/_mcp/server.

# Overview

> Run mobile tests on cloud iOS Simulators and Android emulators - AI agents test your app like a real user, with a video recording of every run.

TesterArmy runs your app on cloud simulators/emulators and uses AI agents to test it like a real user.

Every completed mobile run includes a downloadable simulator/emulator video, just like web runs. TesterArmy handles capture, storage, and playback automatically, so you do not need to record the session yourself. See [Understand Results](/run/results) for the result model and [Run Videos](/run/videos) for recording details.

![Mobile testing flow](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/testerarmy-subpath.docs.buildwithfern.com/81eb2c5d3d559e2f27f1af3a2f8215b9b6c173b4faef2be2ffa07189a613d4da/docs/assets/docs/mobile-test-run.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260905%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260905T144831Z&X-Amz-Expires=604800&X-Amz-Signature=50617ac7a58ba26f8f5efe3c3df69f6166f90d472998f1996a4004ae8380b102&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject)

## Recommended setup

1. Build an iOS Simulator version of your app and zip the `.app` bundle, or build an Android `.apk` / `.apks`.
2. Upload that build to TesterArmy and create your first mobile test.
3. Run the test manually to confirm everything works.
4. Add [Expo EAS](/mobile/expo-eas) or [GitHub Actions](/mobile/github-actions) so the same tests run automatically on every change.

If you want a working reference, see the [mobile GitHub Action](https://github.com/tester-army/mobile-github-action) and the [mobile example app](https://github.com/tester-army/mobile-example).

## Supported platforms

| Platform | System Version | Type      | Devices      |
| -------- | -------------- | --------- | ------------ |
| iOS      | 26.4           | Simulator | iPhone, iPad |
| Android  | 15             | Emulator  | Phone        |

## Device selection

iOS tests run on iPhone by default. To run on iPad, pick **iPad** in the
dashboard run menu, or pass `deviceModel: "ipad"` when triggering runs via the
API or the CLI (`--device-model ipad`).

iPad runs execute in **landscape**, the orientation iPad layouts are designed
around: the device stays landscape for the whole run, and replays and live
previews are shown in a landscape iPad. Apps that only support portrait keep
their own portrait layout and are tested that way. iPhone runs are always
portrait.

iPad runs require a build with **native iPad support** (a universal app). iPhone-only builds
launch on iPad in scaled compatibility mode, which cannot be automated reliably - those runs fail
during setup with a clear error instead of producing misleading results.

## Photos and videos in the device library

Flows like avatar upload, receipt scanning, or video attachments need media to pick. Upload photos (`.png`, `.jpg`, `.jpeg`) or videos (`.mp4`, `.mov`) to the project's **Files** tab and attach them to a `files` step: before the run starts, TesterArmy preloads them into the device photo library (iOS Simulator Photos, Android gallery), and the agent selects them through your app's own media picker. Mobile projects accept photo and video uploads only - other file types cannot reach the app under test.

## Offline and reconnect testing (Android)

Write a step like "turn off the network, check the offline banner, then go back online" and the agent switches the emulator's connectivity through Android itself, so your app receives real `ConnectivityManager` callbacks (offline banners, retries, cache fallbacks) instead of silently timing out. The agent waits until Android reports the new state before continuing, and restores connectivity once the offline assertion is done.

This is Android-only: iOS Simulators expose no equivalent switch that the app under test can observe.

## Requirements

TesterArmy currently supports simulator/emulator builds only. For iOS, that means you need a `.app` bundle built for **iOS Simulator**, not an `.ipa` built for physical devices. For Android, upload a single `.apk` or a split APK archive (`.apks`). `.aab` and `.xapk` are not supported.

For manual iOS uploads, archive the simulator build as `.app.zip`. If you use our GitHub Action, you can pass the `.app` directory directly and the action handles the upload for you.

See [App Uploads](/mobile/app-uploads) for the build and zip steps.

## Limitations

Currently we support running tests on simulators only, so features like camera access and biometric access (Face ID, Touch ID) are not supported.
If you need to run tests on real devices please [contact us](mailto:support@tester.army).

## Next steps

#### [Build and upload your app](/mobile/app-uploads)

Build an iOS Simulator .app or Android APK, upload it, and create your first mobile test.

#### [Set up GitHub Actions](/mobile/github-actions)

Run your existing mobile tests automatically in CI with our GitHub Action.

#### [Set up Expo EAS](/mobile/expo-eas)

Run TesterArmy mobile tests from Expo EAS workflows.

#### [Test Apple Pay](/mobile/apple-pay)

Exercise Apple Pay checkout flows in your iOS app, from payment sheet to success screen.