device trained
what driving a device has proven, not just what it can do.
mental model
device verification proves a user-visible state on the selected device. source inspection, install success, and simulator boot are not that proof.
examples
agent-device open <bundle-id> --platform ios --foregroundagent-device snapshot -iagent-device screenshot ./evidence/initial.png
best practices
- name the app, platform, build, flow, and expected visible result before driving it.
- use current refs for exploration and stable selectors for replay.
- capture evidence per issue; distinguish no issues observed from no bugs.
strengths
agent-device provides a shared navigation and evidence loop. maestro gives repeatable declarative flows; limrun can target an existing remote ios device.
weaknesses / pain points
accessibility trees can be sparse, and cloud simulators require separate account authority. neither can silently prove a physical-device result.
gotchas
- never create a cloud instance merely as a preflight check.
- do not install or upgrade clis as part of an app-driving task.
- screenshots prove the captured screen only; pair them with the flow and device context.
known bugs
no version-specific defect is asserted without an upstream issue and a local reproducer.
troubleshooting
| symptom | root cause | fix |
|---|---|---|
| selector is absent | stale/sparse accessibility tree | take a screenshot, use current visible evidence, then refresh the snapshot |
| flow is flaky | timing-based selector | use an accessibility identifier and a bounded explicit wait |
| cloud command lacks a target | implicit latest device | pass an explicit approved device id |
practiced cases
agent-device 0.21.14was installed, and its live help fordogfoodconfirmed the evidence/report loop.lim 0.30.0and maestro2.6.1were installed;lim ios maestro --helpconfirmed it targets an existing instance by id or workspace. maestro install guidance: docs.maestro.dev.