fix(ios): request runner synthesis only on platforms that synthesize - #2835
Merged
Merged
Conversation
…visionOS isIosFamily includes visionOS, so every producer of synthesized:true kept sending it for visionOS taps even though the runner's synthesis path is gated behind #if os(iOS) and falls through to an unsupported-message XCTest fallback on visionOS. Add runnerSynthesizesTap, a named predicate for the leaves the runner actually synthesizes on (iOS and iPadOS), and route every synthesized:true producer through it, including the runner-sequence press-series builder.
Size Report
Startup median (7 runs, lower is better):
|
Member
Author
|
Reviewed at 52dbc1b. Coordinate tap, selector tap and the press-series builder now request synthesis only where the runner can synthesize, and iOS behavior stays the same. The code looks right. Not blocking: Two Smoke Tests jobs were green and two were still running at review time. None of this diff touches the known depth-frontier failure that #2832 fixes. |
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
isIosFamilyreturns true for visionOS, so every producer ofsynthesized: true(coordinatetap, selector tap, runner-sequence press-series builder) requested the runner's two-finger HID
synthesis path on visionOS even though the native runner gates that path behind
#if os(iOS)and falls into a generic
#elsebranch for visionOS, refusing with a misleading"not supported on macOS" message and forcing an XCTest coordinate-tap fallback.
Adds one named predicate,
runnerSynthesizesTap(packages/kernel/src/device.ts):isIosFamily(device) && !isTvOsDevice(device) && device.appleOs !== 'visionos'. All threesynthesized: trueproducers now call this predicate instead of two independently driftinginline checks; the local
shouldUseSynthesizedIosGesturehelper is deleted in favor of it.Closes #2789.
6 files changed (net +13 production lines; +95 test lines).
PR #2829, opened separately, fixes a distinct visionOS simulator misclassification bug
(
appleOsresolving toiosfor a visionOS simulator whose name lacks a literal "vision"substring), found incidentally while setting up live validation here. Unrelated to this logic.
Validation
Tested at
52dbc1bee2f725a9d54abd099828b1363dc1b8c5.pnpm check:affected --run: all runnablechecks passed (format, lint, typecheck, layering, build, 887 test files / 7789 tests,
daemon-wire-compat 0 drift), exit 0.
Live, on a visionOS 26.2 simulator: pre-fix
pressreturnedgestureFallback: "xctest-coordinate-tap"with the macOS-labeled message; post-fixpressreturns nogestureFallback*fields, and the runner log shows a clean tap with no synthesis markers.Adversarial high-level code review: zero findings. No unresolved risks for this change.