This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.
Run Appium tests on a remote Android Emulator or iOS Simulator
Edit page
Start an appium Expo Simulators session and connect your existing Appium client or test suite with the APPIUM_URL server URL and APPIUM_CAPS capabilities.
Expo Simulators is a limited-access preview. It is not included with paid or free plans and is currently available only to select partners. Join the waitlist if you are interested in trying it.
Expo Simulators runs Appium tests. Start a session with --type appium. EAS provisions an Appium server next to the remote device and gives you its URL and capabilities. Your Appium client connects to that server as it does to a local one.
Start an Appium session
EAS CLI writes these values to .env.eas-simulator:
An Appium session does not also provision agent-device or Argent. The session includes a browser preview. The session page on expo.dev shows an Open preview button that opens the browser preview in a new tab. Android support is still in development, so some features that work on iOS may not work on Android yet.
Run your Appium client
eas simulator:exec loads the variables, then runs your command. Configure your client to read the server URL from APPIUM_URL and the capabilities from APPIUM_CAPS:
Replace <appium-client> with the command that runs your test suite.
Install the app with start flags
The start flags --build-id, --build-fingerprint, --application-archive-url, and --expo-go install and launch the app for all session types, including appium. The --launch-arg and --open-url flags also apply to an appium session. They require one of the application source flags.
Limit the session length
Controller activity from agent-device, Argent, or Appium resets the idle timer. Browser preview activity does not. EAS records Appium commands as session events, so a session that uses --max-idle-time-minutes stays active while your tests send commands. Use --max-duration-minutes to set an upper limit. See How long an Expo Simulators session runs.
Use the REST API
Create the session with "type": "appium". When the session is ready, remoteConfig contains:
When webPreviewToken is present, webPreviewUrl does not open without it. When previewApiUrl is set, add the token as a URL fragment: <webPreviewUrl>#token=<webPreviewToken>. Otherwise, add it as a query parameter: <webPreviewUrl>?token=<webPreviewToken>. EAS CLI adds the token for you.
Common questions
Do I need to install an Appium server?
No. EAS runs the Appium server for the session. You need only an Appium client.
Are Appium commands shown in session activity?
Yes. EAS records Appium commands as session events with the producer appium. eas simulator:events shows them together with activity from agent-device and Argent.
Is the Appium URL a secret?
Yes. Treat APPIUM_URL, APPIUM_CAPS, and remoteConfig as secrets. Do not commit .env.eas-simulator or print its values in CI logs. See Expo Simulators security, permissions, and data retention.