Your agent tests your
iOS app for you.
React Native or native Swift — the agent drives your iOS Simulator over
MCP through the accessibility tree, records a clean .js
scenario, and runs it end-to-end. You review and commit.
npx @unotest/mobile install <App>.app macOS + Xcode required · works with Claude Code · Cursor · Codex · any backend stack
How it works
From .app to passing test in three steps
Point it at your .app
Install your built app on the Simulator. unotest auto-detects the bundle ID, URL scheme and required permissions from Info.plist.
Ask your agent in your editor
Open Claude Code in the project and ask for a test. The agent drives the Simulator over MCP, reading the live accessibility tree — not screenshots.
It records, runs, repairs
The agent emits a plain .js scenario, runs it through the sandboxed interpreter, and on failure pauses mid-run to patch and resume — no Simulator restart.
What you get
Built for agents, owned by you
An MCP server + CLI + sandboxed JS-DSL. The agent does the driving; the tests stay yours.
Sees the accessibility tree
WebDriverAgent returns a structured tree — roles, testIDs, text, bounds — rendered as a token-cheap outline. Works on RN/Expo and native Swift.
Pause-on-failure debugger
A failing step freezes the run. Call inspect_runtime, patch the scenario, resume from the same step. No full restart, no re-running setup.
Plain .js in your repo
Scenarios are ordinary JavaScript in unotest/e2e/*.js. Git, code review, CI — no proprietary format, no binary blob.
Safe to run blindly
The DSL runs in a vendored AST interpreter — no require, no fetch, no filesystem. AI-generated tests are safe to run.
React Native & native
Drives RN / Expo apps and plain Swift apps alike, as long as they expose accessibility.
Local-only
Everything runs on your Mac. Your .app never leaves the machine. No cloud, no account.
Requirements
macOS with Xcode + iOS Simulator · Node 20+ · first run compiles WebDriverAgent once (~5–15 min, then cached)
Frequently asked questions
- What is unotest mobile?
- AI-native end-to-end testing for iOS apps. The agent drives your iOS Simulator over MCP through the accessibility tree, records a clean JavaScript scenario, and runs it end-to-end. You review and commit.
- Does it support React Native and native Swift?
- Yes. It drives React Native / Expo apps and plain Swift apps alike, as long as they expose accessibility.
- Does it use screenshots?
- No. WebDriverAgent returns a structured accessibility tree — roles, testIDs, text and bounds — rendered as a token-cheap outline, not screenshots.
- What are the requirements?
- macOS with Xcode and the iOS Simulator, plus Node 20+. The first run compiles WebDriverAgent once (about 5–15 minutes), then caches it.
- Does my app get uploaded anywhere?
- No. Everything runs locally on your Mac and your .app never leaves the machine. There is no cloud and no account.
Let your agent test your iOS app
Point it at a built .app and ask for your first test. Runs locally on your Mac.
npx @unotest/mobile install <App>.app