Skip to content

What the model sees

screen: com.apple.Preferences / "Display & Text Size" fp=3872280e
e1 button "Accessibility" id=BackButton @(38,84)
e2 switch "Bold Text" =0 id=ENHANCE_TEXT_LEGIBILITY @(336,161)
e3 button "Larger Text, Off" id=LARGER_TEXT @(190,216)

Measured across thirteen golden flows on a real simulator: 50 to 474 tokens per step, averaged over each flow. One of them is a real 300-row list, Contacts seeded with 300 people, where other tools report timeouts: one observe comes back as 166 raw nodes and 438 tokens in 1.35s, because UIKit only realises the rows on screen.

The agent passes e2 back to an action. It never writes XPath and never guesses coordinates. If a ref goes stale because the screen moved, the host re-finds the same element by identity rather than failing.