iOS test automation without the XCUITest tax
Real devices, browser-driven dashboard, CI-friendly REST API. Vision-based element find works on the third-party apps XCUITest can't even see.
The boilerplate test
Same test, two very different week-ones
Compare what it takes to get an iOS smoke test running on real hardware — before and after.
The XCUITest stack
An afternoon of Xcode just to get a test to run
First-run · ~4 hours
- Provision a Mac build agent and keep it patched alongside CI runners
- Rotate provisioning profiles every 7 days; recompile WebDriverAgent
- Tests only see your own first-party app — third-party app surfaces are invisible
- Locator brittleness: accessibility tree drifts as designers iterate
The Agentfy way
Pair a phone, write 5 steps, run from anywhere
First-run · 60s
- No Mac, no Xcode, no certificates — pair via QR from the iOS app
- Same engine drives third-party apps (TikTok, banking, social) via vision + OCR
- Test = readable .agfm script — diff-friendly, code-review-friendly
- Per-step screenshot + OCR archive; one-click rerun on failure
A real test macro
12 lines of .agfm replaces a 200-line XCUITest file
Same login critical-path. Same assertions. Half the time to author, no Mac required.
# smoke-test_login.agfm — runs on every release branch
launch_app "com.example.app"
wait_for_text "Sign in" timeout=5s
tap_by_text "Sign in"
text "[email protected]"
tap_by_text "Continue"
text "${vault.QA_PASSWORD}"
tap_by_text "Log in" exact
# critical-path assertion
wait_for_text "Welcome back" timeout=10s
assert_text "Welcome back"
# return to springboard so the next test starts clean
press_home
CI integration
Every run lands here, queryable by REST
GitHub Actions / CircleCI / Jenkins trigger the run, the dashboard captures pass/fail + per-step screenshots. Click any row for the full trace.
agentfy.io/macros/runs
5 pass · 1 fail | Test | Device | Steps | Duration | Result | Last run |
|---|---|---|---|---|---|
| smoke-test_login | iPhone 11 | 12 | 8.3s | Pass | 12s ago |
| smoke-test_login | iPhone 13 | 12 | 7.9s | Pass | 14s ago |
| smoke-test_login | iPhone 15 | 12 | 9.1s | Pass | 11s ago |
| regression_checkout_flow | iPhone 11 | 44 | 1m 12s | Pass | 2m ago |
| regression_checkout_flow | iPhone 13 | 44 | 1m 8s | Pass | 2m ago |
| regression_third_party_oauth | iPhone 15 | 18 | 31s | Fail | 5m ago |
The composing parts
Pair an iPhone, write the test, see it run
Bring an iPhone, pair it, write 5 steps, run it, look at the screenshot, iterate.
Start free trial