iOS simulator: snapshot drops controls nested deeper than 64 accessibility levels
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 48/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- ios, typescript
- Ambito
- mobile, testing-qa
Direzione di ricerca
Read packages/platform-apple/src/snapshot-source/limits.ts and apple/snapshot-bridge/SnapshotBridgeCapture.m, then trace how traversal depth and the 32-request budget interact with continuations. Reproduce using the nested UIView setup described in the issue and inspect the snapshot recovery request log. Done when snapshots include nodes through depth 128, preserve behavior through depth 65, and deep chains that fit the budget complete in the bridge while budget exhaustion still fails closed.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
On an iOS simulator, a regular snapshot stops at 65 accessibility levels (depth 0–64) and marks the tree truncated. Controls nested deeper are not in the snapshot, so press by label or ref fails with Selector did not match. React Native screens reach that depth in real apps; this came in through a downstream user of tester-army/e2e.
Repro
A UIKit app with a Deep target button under N nested plain UIViews (AX depth of the button = N + 5). Xcode 26.6, iOS 26.5 simulator, iPhone 17 Pro, main at 3b9e8d1:
| UIView depth (AX depth) | snapshot -i has Deep target |
press by label | press by coordinates |
|---|---|---|---|
| 20–59 (25–64) | yes | works | works |
| 60–120 (65–125) | no | Selector did not match: label="Deep target" |
works |
The request log shows ios_snapshot_source_recovery {"producer":"simulator-ax-bridge","requestedLevels":65,…,"truncated":true}.
Cause
The simulator AX bridge already reads past the AX server's per-request limit (a request over about 62 levels fails with kAXErrorIllegalArgument) through continuations, and its protocol bound is 128 (MAXIMUM_DEPTH, kMaximumDepth). The daemon asks for less: DEFAULT_SNAPSHOT_SOURCE_LIMITS.maxTraversalDepth is 64 (packages/platform-apple/src/snapshot-source/limits.ts).
Raising the bound alone is not enough. Deeper paths need more continuations, and the 32-request budget in apple/snapshot-bridge/SnapshotBridgeCapture.m runs out on screens with several deep chains. A screen with 12 chains 100 views deep then falls back to the runner capture (5.4 s instead of 0.4 s).
Required behavior
- A regular simulator snapshot returns nodes up to 128 accessibility levels deep.
- For trees up to 65 levels deep, request, rejection, and continuation counts are unchanged.
- Budget exhaustion still fails the capture closed (#2414).
- Screens with several deep chains that fit the budget complete in the bridge, without the runner fallback.
Related
The same report also had taps failing with point.x != INFINITY && point.y != INFINITY on elements 56+ UIViews deep. That reproduces on v0.21.28 and is fixed on main by #3870 (v0.21.31): coordinate presses worked at every depth up to 120.
- Lingua principale
- TypeScript
- Stelle
- 5.2k
- Fork
- 359
- Merge medio
- 12h 43m
- PR unite (30g)
- 666
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di callstack/agent-device
-
bug ready-for-agent
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
callstack/agent-device#4018 ·
I maintainer di solito rispondono entro 1 giorno
-
Limrun iOS fill reports success but drops non-ASCII textForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertabug ready-for-agent
Difficoltà 2/5 1-3 ore Idoneità per principianti 87/100
callstack/agent-device#3819 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
callstack/agent-device#1869 ·
I maintainer di solito rispondono entro 1 giorno
-
needs-info
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
callstack/agent-device#4086 · 5 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Limrun network capture: serve tunnel traffic through network dump and a downloadable HAR artifactAperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
callstack/agent-device#4064 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di callstack/agent-device
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
components-web-app/docs#307 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
localstack/localstack-mcp-server#112 ·
I maintainer di solito rispondono entro 1 giorno
-
area:frontend kind:bug priority:p1 ready
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
I maintainer di solito rispondono entro 1 giorno
-
bug ready-for-agent
Difficoltà 2/5 1-3 ore Idoneità per principianti 73/100
PhyberApex/kuroshiro#1687 ·
I maintainer di solito rispondono entro 1 giorno
-
Performance (Web Vitals) collector: LCP/FCP from background tabs are not discarded, inflating p75Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
umami-software/umami#4720 ·
I maintainer di solito rispondono entro 3 giorni