Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

iOS: every snapshot command fails with "escaped its cumulative clip" while a system alert is shown at the largest Dynamic Type size

Aperta
#3,801 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

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
Ambito
mobile, testing

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 main at 63f762e and in 0.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 requestTrackingAuthorization after 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", node 3, 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

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di callstack/agent-device

Tutte le issue di callstack/agent-device

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.