Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

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

Abierto
#3,801 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
55/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
ios, typescript
Área
mobile, testing

Línea de trabajo

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.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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.

Lenguaje dominante
TypeScript
Estrellas
5k
Forks
334
Merge medio
12 h 14 min
PR fusionados (30 d)
713

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de callstack/agent-device

Todos los issues de callstack/agent-device

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.