fix(ios-runner): one synthesize-then-fallback helper; sequence taps use the standalone tap policy - #2865
Conversation
Size Report
Startup median (7 runs, lower is better):
|
|
Reviewed at 2d0f956. The six synthesized-gesture sites now go through one helper that picks the fallback from the existing One design question: Not blocking: the drag plan-nil branch now returns The live before/after evidence for the sequence-tap fix is author-reported at 445e197, before the rebase. The rebase carried only move-only changes, so that evidence still covers the changed path. The Smoke Tests failure at |
… helper A synthesized tap step inside `sequence` resolved its context with the synthesized-drag policy, so it refused the XCTest coordinate fallback when accessibility was unavailable and failed outright when no window frame resolved. A standalone synthesized tap falls back in both cases. `performSynthesizedGesture` now performs the synthesized gesture, decides the XCTest coordinate fallback from the gesture kind's policy, and logs the decision. Selector tap, coordinate tap, sequence tap step, type focus and drag use it; each site keeps its own XCTest gesture and bookkeeping. A sequence tap step takes the coordinate-tap policy, and the fallback decision reads the kind rather than a policy copy on the coordinate context. Remove the unused `whenAccessibilityHealthy` keyboard policy, the drag fallback branch that a nil frame could never reach, and the text-entry focus predicate the helper replaces. Scroll keeps `privateSynthesisRequired`. Fixes #2788
…sture helper Pin the sequence tap step fallback at the sequence command response with a simulator test that forces private tap synthesis to fail while accessibility is unavailable.
2d0f956 to
60c57c6
Compare
|
Reviewed at 60c57c6 and it looks clean. The evidence-pending issues from the earlier review (2d0f956) are resolved, since no code changed in this delta and the live sequence-tap validation and the earlier run carry over. Smoke Tests is still running with no failure log yet, and this PR's changes overlap that route through the synthesized tap, sequence, and drag fallback sites in the Apple runner, so wait for it to go green before merging. Not blocking: the rebase pasted five stale lines about a nonexistent |
|
Summary
One helper now owns synthesize-then-XCTest-fallback at every synthesized tap site in the Apple
runner, instead of each call site improvising its own fallback. Sequence tap steps now go through
the standalone tap's
.coordinateTappolicy, including its nil-context behavior, so a sequence tapand a standalone tap on the same target report the same interaction kind. Unused synthesized-gesture
policy cases were removed along with the divergent per-site fallback logic; net production is about
-34 lines. Touches 16 files.
Closes #2788
Validation
Tested at head
2d0f9562ba68e0e95e7d269f88807b88e250dbdc.pnpm check:affected --run: all runnable checks passed (unit, xctest-selection,packaged-runner-swift, maestro-conformance, mutation-model).
check:xctest-selection: 299 declared methods; host lane reaches 243, PR iOS-Simulator laneselects 110, nightly reaches 297; 0 unreachable.
signing and is covered by CI instead.
445e197fe2: before the fix, a sequence taplogged
kind=synthesizedDragwhere the standalone tap loggedkind=coordinateTapon the sametarget; after the fix, both report
coordinateTapand both land.performSequenceStepisreintroduced; this is unenforced regression risk on that one branch.