iOS: every snapshot command fails with "escaped its cumulative clip" while a system alert is shown at the largest Dynamic Type size
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 55/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- ios, typescript
Direzione di ricerca
Read SnapshotPresentationInvariant.swift in the snapshot presentation source linked from the issue, then inspect validateRegular and the failing node’s cumulative clip handling. Reproduce with the largest Dynamic Type size and an App Tracking Transparency alert on either listed simulator. Done when snapshot succeeds and the visible alert button can be found and tapped without breaking the reported wait/is behavior.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Problem
On an iOS simulator with the text size set to the largest accessibility size (accessibility-extra-extra-extra-large), every command that takes a snapshot fails while the App Tracking Transparency prompt is on screen:
Error (COMMAND_FAILED): regular iOS snapshot node escaped its cumulative clip
At that size the prompt's title no longer fits and iOS lets its content extend past the alert's frame. The regular-snapshot clip invariant rejects the whole capture, so the prompt cannot be answered by text or ref (find text "Ask App Not to Track" click), and wait/is on the app underneath fail too. The error's own hint says: "This is a runner presentation bug: report it with the failing command and the app under test."
Environment
- agent-device 0.21.28 (invariant unchanged on
mainat 63f762e and in0.21.29-nightly.20261018.74) - macOS 26.6.2, Xcode 27.1 (27A9275), Node 24.22.0
- Simulators: iPhone SE (3rd generation) on iOS 17.5; iPhone 17e on iOS 27.0; English locale
- Target app: an Expo development build that calls
requestTrackingAuthorizationafter its first screen
Reproduction
xcrun simctl ui "$SIM" content_size accessibility-extra-extra-extra-large
xcrun simctl privacy "$SIM" reset all <bundle id> # ATT status back to notDetermined
npx agent-device open <bundle id> --platform ios --udid "$SIM" --relaunch
npx agent-device alert wait 10000 # exit 0, prints the prompt title
npx agent-device snapshot -i # exit 1, COMMAND_FAILED
npx agent-device find text "Ask App Not to Track" click # exit 1, COMMAND_FAILED
| Text size | iOS 17.5 (iPhone SE 3rd gen) | iOS 27.0 (iPhone 17e) |
|---|---|---|
large … accessibility-extra-extra-large (6 sizes) |
snapshot -i exit 0, 1 run each |
exit 0, 1 run each |
accessibility-extra-extra-extra-large |
exit 1, 3 of 3 | exit 1, 2 of 2 |
Commands that don't snapshot keep working at the largest size: alert wait, alert get and alert accept (exit 0, tracking authorized), and press x y on the "Ask App Not to Track" button at coordinates read from screenshot (tracking denied, then wait on the app succeeds).
Failure details (--json):
- iOS 17.5:
"reason": "regular-node-outside-cumulative-clip", node3, frame{x: 48, y: 33, w: 279, h: 621.5}within clip{x: 32, y: 18, w: 311, h: 631}: it overflows the bottom of the clip by 5.5 pt. - iOS 27.0: frame
{x: 48, y: 664.7, w: 294, h: 290.7}within clip{x: 18, y: 70.7, w: 354, h: 716}: it starts above the clip's bottom edge (786.7) and ends at 955.
Cause
SnapshotPresentationInvariant.validateRegular (source), introduced in #1946, throws regularNodeOutsideCumulativeClip as soon as one node is not contained in its ancestors' clip. UIKit itself lets a system alert's content exceed its frame at large Dynamic Type sizes, so one overflowing node fails the whole capture.
Expected
The snapshot succeeds: the overflowing node is clipped to its ancestor (or dropped if fully outside), and find text "Ask App Not to Track" click taps the visible button.
- Lingua principale
- TypeScript
- Stelle
- 5k
- Fork
- 334
- Merge medio
- 12h 14m
- PR unite (30g)
- 713
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
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
callstack/agent-device#3792 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
macOS helper audio-probe always reports -90 dBFS: AVAudioPCMBuffer frameLength set after the copyApertabug ready-for-agent
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
callstack/agent-device#3771 · 1 commento ·
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
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 49/100
callstack/agent-device#3800 ·
I maintainer di solito rispondono entro 1 giorno
-
refactor(host): explicit host for configuration reads and one entered runtime storeForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertain-progress ready-for-agent refactor
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
callstack/agent-device#3794 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di callstack/agent-device
Issue simili
-
"Contains" page watch never matches when its text has a trailing spaceForse già presa @RaphaelFakhri l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
CopilotKit/openmuse#184 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
bootstrap-vue-next/bootstrap-vue-next#3357 ·
I maintainer di solito rispondono entro 1 giorno
-
[quality] tide.ts: six mutation survivors in the merge-queue gate, draft refusal, fork-403 workflow-file diagnosis and getPull's fork flag are unpinned by any testForse già presa @hivecommons-hive l’ha presa oggi. Apertaagent/quality needs-kind stage/040-covered-by-pr testing
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
cncf/prow-github-actions#517 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
Unsampled pageload span is profiled when profileLifecycle is 'trace' (browser UI profiling)Forse già presa @Jxxunnn l’ha presa oggi. ApertaBrowser Waiting for: Product Owner
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
getsentry/sentry-javascript#25497 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno