EAS build
The build job produces an iOS Simulator app from the profile you add to eas.json.
[02] One EAS workflow, three jobs
EAS builds the simulator app. A second job uploads it to TesterArmy and a third runs your saved test group.
Build, upload and test jobs in one testerarmy-mobile-tests.yml
The build job produces an iOS Simulator app from the profile you add to eas.json.
The upload job downloads the EAS artifact and hands it to TesterArmy with one command.
The run job starts the saved group, waits for it and writes ci-result.json for the next step.
The same two commands run from EAS Workflows or from a GitHub Actions job.

Add the workflow file and your saved tests run on the next build.
[03] A result for every EAS build +
Each run lands in Results with its platform, environment and duration, and the same verdict is written to ci-result.json for the workflow that started it.
The iOS Simulator build from EAS runs your saved tests and reports one verdict per test.
The Android APK build runs the same tests on a cloud emulator, with its own row in Results.
ta ci writes ci-result.json and exits with code 1 on any failure, so the pipeline stops.
Connect Slack in Integrations and scheduled or webhook-triggered group runs post a summary to your channel.
Every EAS run appears in Results with its platform, environment, duration and the pull request that triggered it.
[04] Proof
In sixteen years of building mobile apps, TesterArmy is the first tool that actually does what I always expected AI-powered testing to do. You're onto something.

Edwin Huertas
CEO, Shockoe
FAQ
Add the TesterArmy workflow recipe to EAS. The build job produces an iOS Simulator app or Android APK, ta upload-app uploads it, and ta ci runs your saved test group on cloud simulators. The CLI waits for the result and writes ci-result.json for the workflow.
No. TesterArmy tests the compiled binary EAS produces. There is nothing to install in your app, no testing config plugin and no native code changes. Your managed workflow stays managed.
Yes. Use a release build configured for the update channel you want to test. You can pass a configuration deep link with --deeplink so TesterArmy opens the right channel and backend after launching the app, before the test begins.
Yes. Add an Android APK profile to eas.json and the corresponding build, upload and test jobs to the workflow. Android tests run on cloud emulators and have their own results. Upload an APK, not an Android App Bundle.
Use a profile that produces a self-contained iOS Simulator .app or an Android .apk. The app must include its JavaScript bundle and run without Metro. Test a preview build on pull requests and the release candidate before submission.
No. Agents use the rendered app and follow your plain-language test steps. You do not need testIDs, Detox configuration or a custom development client. Upload the release build your pipeline produces.
TesterArmy runs plain-language tests against compiled Expo apps on cloud iOS simulators and Android emulators. The EAS workflow builds and uploads the app, runs your saved tests, and returns results with a recording of each run.
ta ci waits for the remote tests, writes the results to the JSON output path you provide, and exits with code 1 if a test fails. Results and recordings also appear in the TesterArmy dashboard. Pass the commit SHA when the EAS and GitHub context provides it to report GitHub checks.
EAS builds a simulator binary in the cloud, and TesterArmy runs it in a cloud iOS simulator. No macOS runner is needed in CI: the workflow uploads the build, agents run your saved flows, and the results and recordings come back to the pull request.
Yes. Any EAS profile that produces an iOS simulator build or an Android APK works: development, preview, and simulator profiles are the usual ones. The setup is described step by step in the Expo EAS guide in the docs.
End-to-end. Agents drive the built app the way a user does, screen by screen. Unit tests stay in Jest and cover functions and components; the two are complementary, and most teams run both.
Read next
We raised $1.2M in Pre-Seed FundingRead more