fix: keep iOS synthesized drags off AX#1148
Conversation
Size Report
Startup median (7 runs, lower is better):
Top changed chunks: no changes in the largest emitted chunks. |
|
Swift Runner Unit Compile is failing with a real compile error:
Please make the type explicit there, for example CGFloat.infinity or another finite/typed value that matches the test intent, then rerun pnpm build:xcuitest:ios / the Swift runner unit compile gate. |
Review — keep iOS synthesized drags off AXSolid direction: routing iOS scroll and synthesized coordinate drags through an AX-free lane (no window/keyboard/element lookup) is the right way to keep interaction working when the accessibility tree is unhealthy, and the frame-resolution ladder is well unit-tested. A few consequences of going AX-free are worth a conscious look before merge — the biggest is a hot-path perf regression, plus a couple of behaviors that silently changed. Findings (most-severe first)1. Every synthesized gesture now takes redundant full-screen screenshots (hot-path regression). 2. iOS synthesized drag/scroll dropped keyboard avoidance. 3. scroll/drag lost the XCUICoordinate fallback; scroll is now unconditionally synthesized. 4. Preflight-skip now bypasses the foreground guard + interaction stabilization for scroll/drag/sequence. 5. Landscape coordinate mapping — low confidence, worth a device check. Minor cleanups
Automated review — please sanity-check findings 2–5 against intended behavior; several are deliberate AX-free tradeoffs rather than outright bugs. |
|
Addressed the review/CI blockers in ab81d9d. Changes:
Validation:
Residual note:
|
ab81d9d to
47f0063
Compare
|
Re-review after 47f0063: no actionable blockers found. The prior Swift compile failure is fixed, synthesized scroll/drag now reuses the resolved reference frame instead of recomputing screenshots, drag/scroll/sequence stay on the foreground guard/stabilization path, keyboard avoidance is gated away from AX-rejected states, and explicit synthesized drag keeps a coordinate fallback. CI is green across 21 checks, and the PR includes live iPhone 17 Pro simulator evidence for portrait scroll and landscape pan with session cleanup noted. Labeling ready-for-human for maintainer judgment. |
Summary
Make iOS scroll and synthesized coordinate drags avoid XCTest AX/window/keyboard lookup so they keep working when the app accessibility tree is unhealthy.
Default iOS scroll to the synthesized drag lane, add finite screenshot-size frame fallback/validation, and reuse the AX-free path for synthesized sequence drags while keeping macOS/tvOS behavior unchanged.
Validation