Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

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

Geschlossen
#3,801 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
55/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
ios, typescript
Bereich
mobile, testing

Rechercherichtung

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.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

bug

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.

Vorherrschende Sprache
TypeScript
Sterne
5.1k
Forks
339
Ø Merge
11 Std. 54 Min.
Gemergte PRs (30 T.)
745

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus callstack/agent-device

Alle Issues in callstack/agent-device

Ähnliche Issues

Weitere Issues zu TypeScript

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.