fix(ios): press the navigation bar back button and speed up the back swipe

Merged
TH
14h ago
+949-104

Summary

iOS back presses the navigation bar's system back button (identifier BackButton) only when exactly one live, hittable one is read from a readable tree, and two bar reads one 0.05 s pause apart agree and hold it (frames placed at the window's screen origin, so a placed iPad window matches). After the tap it re-reads the bars for up to 1 s, then once more with no deadline, so a slow host whose reads of a vanishing bar spend the 1 s in XCTest retries still reads the settled screen. It answers ok only when the bar count, the back button count, or a back button label changes. Bar titles and back button frames never count, so a countdown title or a large-title collapse cannot confirm a tap. A pop that keeps the same back button labels and bar count answers back_swipe_unverified. It never swipes after a delivered tap, and a hung query sends nothing more. Otherwise it falls back to the swipe, which now settles faster. Help, runner protocol and command docs are updated.

Validation

iOS 27.0 simulator, Settings > General, median of 8 runs:

Pathbase 80075b60d17e3e
back (button)1.48 s0.57 s
back --settle2.51 s1.56 s

At 1154091 the 22 testInAppBack* runner tests pass on an iPhone 17 Pro simulator; the new slow-host test fails without the final read. The local iOS smoke tier passes, 7 of 7 scenarios (automation-input back: confirmed=yes confirmMs=372). The macOS runner test build, typecheck, lint, xctest-selection and focused vitest pass. At 40c2f69 the placed (non-full-screen) iPad Settings window gives found=yes pressed=yes confirmed=yes in 5 of 5 runs with the label-only confirmation (iPad evidence). Device evidence.

Risks: no physical-device run.

🤖 Generated with Claude Code


Autofix with [code]smith
Open in [code]smith · Need help on this PR? Tag @codesmith-bot with what you need.