Skip to content

fix: stabilize iOS runner gestures#800

Merged
thymikee merged 5 commits into
mainfrom
fix/ios-runner-stability
Jun 13, 2026
Merged

fix: stabilize iOS runner gestures#800
thymikee merged 5 commits into
mainfrom
fix/ios-runner-stability

Conversation

@thymikee

@thymikee thymikee commented Jun 13, 2026

Copy link
Copy Markdown
Member

Summary

Fix three iOS runner issues found during replay-suite validation: avoid stale XCTest window-index queries during AX snapshot fallback viewport discovery, route iOS phone/tablet drag gestures through synthesized drag so durationMs controls swipe, gesture pan, gesture fling, and repeated swipe sequences, and keep macOS/tvOS on the existing coordinate/focus paths.

This stays inside the ADR 0004/0005 runner seam: Swift runner changes remain local to viewport discovery and sequence execution, while TS platform overrides only request the synthesized path for iOS touch targets. Touched files: 6 in the latest follow-up, 8 across the PR.

Validation

Static/build checks on this clean branch: pnpm check:quick, pnpm build:xcuitest, pnpm build, focused Vitest for src/platforms/ios/__tests__/index.test.ts and src/core/__tests__/dispatch-interactions.test.ts, full oxfmt coverage using the local formatter binary, and local Fallow audit via ./node_modules/.bin/fallow audit --base origin/main. Direct pnpm check:fallow --base origin/main was blocked by pnpm version-switch network verification before project code ran; the local Fallow binary passed the audit gate.

Live simulator evidence used iOS simulator C25DBB5B-9254-4293-A8D5-2785C78DE03A with React Navigation org.reactnavigation.playground. material-top-tabs.yml passed in 20.1s / 20.2s wall with three duration: 300 swipes; runner drag windows were about 0.91s / 1.29s / 0.97s and the old XCTest velocity of 500 coordinate-drag log was absent.

Fresh direct duration checks in session ios-duration-gestures also passed: gesture pan 350 500 -300 0 300 completed in 0.89s, gesture fling right 200 500 180 50 in 1.12s, and swipe 350 500 50 500 300 --count 2 --pause-ms 30 --pattern ping-pong in 1.42s. Runner logs showed the expected drag/sequence commands completing with no gestureFallback, no xctest-coordinate-drag, and no velocity of 500 marker. Manual sessions were closed, custom daemon state dirs were cleaned, and process checks found no remaining validation runner/xcodebuild processes.

@github-actions

github-actions Bot commented Jun 13, 2026

Copy link
Copy Markdown

Size Report

Metric Base Current Diff
JS raw 1.3 MB 1.3 MB +193 B
JS gzip 411.6 kB 411.7 kB +35 B
npm tarball 544.6 kB 544.7 kB +51 B
npm unpacked 1.8 MB 1.8 MB +1.4 kB

Startup median (7 runs, lower is better):

Scenario Base Current Diff
CLI --version 27.5 ms 28.7 ms +1.2 ms
CLI --help 54.2 ms 53.7 ms -0.6 ms

Top changed chunks:

Chunk Raw diff Gzip diff
dist/src/2415.js +86 B +16 B

@thymikee

Copy link
Copy Markdown
Member Author

Addressed the review parity gap: repeated iOS swipe/sequence drag now uses synthesizedSwipeFallbackHoldDuration(durationMs:) when synthesized drag is unavailable, matching the single-shot drag command. Also corrected the sequence coordinate-drag comment to describe only the non-synthesized branch. Validation: pnpm build:xcuitest passed for iOS and macOS.

@thymikee thymikee merged commit 945a780 into main Jun 13, 2026
19 checks passed
@thymikee thymikee deleted the fix/ios-runner-stability branch June 13, 2026 07:54
@github-actions

Copy link
Copy Markdown
PR Preview Action v1.8.1
Preview removed because the pull request was closed.
2026-06-13 07:55 UTC

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant