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

explore, then capture evidence
agent-device open <bundle-id> --platform ios --foreground
agent-device snapshot -i
agent-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

symptomroot causefix
selector is absentstale/sparse accessibility treetake a screenshot, use current visible evidence, then refresh the snapshot
flow is flakytiming-based selectoruse an accessibility identifier and a bounded explicit wait
cloud command lacks a targetimplicit latest devicepass an explicit approved device id

practiced cases

  • agent-device 0.21.14 was installed, and its live help for dogfood confirmed the evidence/report loop.
  • lim 0.30.0 and maestro 2.6.1 were installed; lim ios maestro --help confirmed it targets an existing instance by id or workspace. maestro install guidance: docs.maestro.dev.

search pages

go to any page