fix(limrun): opt into XCTest snapshots for native iOS testIDs
Summary
Add an opt-in Limrun iOS XCTest snapshot for React Native views whose testID is missing from the accessibility tree. Preserve the existing default, including separate-process web content.
CLI: set LIMRUN_IOS_ELEMENT_TREE_SOURCE=xcuitest before starting the daemon. Node: new LimrunRuntime({ apiKey, iosElementTreeSource: 'xcuitest' }). The option reaches both created and attached instances.
14 files; scope includes runtime configuration, CLI help/docs, regression tests, and the bundled SDK dependency. Prerequisites: https://github.com/limrun-inc/typescript-sdk/pull/572 and https://github.com/limrun-inc/limrun/pull/1692.
Draft until the SDK release: the dependency is pinned to reviewed SDK commit 83370dfd for validation. Replace that Git pin and its prepare permission with the released npm version before merging.
Validation
Head: 341ba4e62f6223b22644bd339ed92c73b5c4a6bf.
pnpm check:affected --run --head HEAD: passed,exactCommit: true; receiptrun-uDul8P. All runnable checks pass; 17,266 related tests pass, one existing skip. GitHub-owned coverage/device/provider lanes remain CI obligations.- Same command,
pnpm exec vitest run --project unit-core packages/provider-limrun/src/ios-interactor-snapshot.test.ts -t 'XCTest snapshot retains': base45125d7fails (testID absent); head passes. - Independent review: no remaining findings.
- Server/SDK/CLI iOS 27 staging proof passes. Live consumer validation passes on iOS 27.0: this exact head finds the non-accessible React Native view by testID, clicks
id="xcuitest-only-view", observesTouches: 1, and cleans up its session and daemon.