iOS 27: HealthKit's authorization sheet reads as one node, so label and ref presses can't reach it
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 48/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- ios, typescript
Piste de recherche
Start at the iOS simulator snapshot and press handling paths that use XCTest, then trace how remote content boundaries and element frames are handled. Reproduce with the HealthKit authorization sheet on an iOS 27 simulator; use the reported XCTest element and host view frames to check snapshot discovery and tap coordinates. Done when controls are reachable by labels or refs and presses activate the intended controls.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Summary
On an iOS 27.0 simulator, HealthKit's authorization sheet (the one HKHealthStore.requestAuthorization or SwiftUI's .healthDataAccessRequest presents) reads as a single [application] node. press 'label=…', find, and refs can't reach any of its controls, so the only way to answer it is coordinate taps from a screenshot. An earlier session on 0.21.x saw press @ref and press 'label=…' report success on the sheet's switches and Allow button while nothing changed.
XCTest itself can read and tap this sheet, so this looks like the snapshot stopping at the remote view's boundary rather than a missing accessibility tree.
Environment
- agent-device 0.21.31 (through T3 Code's device tools)
- Xcode 27, iOS 27.0 simulator (iPhone 18 Pro)
Repro
- Run any app that asks for HealthKit types the user hasn't decided yet, for example
HKHealthStore().requestAuthorization(toShare: [], read: [HKQuantityType(.stepCount)])at launch. - With the Health Access sheet on screen:
$ agent-device snapshot -i
Snapshot: 1 nodes (truncated)
Simulator AX snapshot unavailable (remote-content-boundary); used XCTest for this app generation.
No snapshot backend could read this screen (snapshot returned no semantic controls or content). …
@e1 [application] "A Better Me"
$ agent-device press 'label="Select All 1 Topic"' --settle
Error (COMMAND_FAILED): Selector did not match: label="Select All 1 Topic"
Right after a fresh install, the same snapshot -i printed circuit-disabled and "XCTest-backed snapshot tiers are running with a short recovery probe after recent slow accessibility work on this screen" instead.
What XCTest sees on the same sheet
A UI test in the app's target finds and taps every control:
app.cells["UIA.Health.AuthSheet.AllCategoryButton"]exists, with a "Select All N Topics" static text inside it.app.buttons["Allow"], and a cell containing "Don’t Allow" (Allow/Continue sit in the same cell).XCUIElement.frameis in screen points:(22, 403, 358, 52)for the Select All cell.XCUIElement.snapshot().framefor the same cell is(22, 341, 358, 52): frames inside the sheet are relative to its remote host view, whichapp.snapshot()shows at(0, 62, 402, 812)with a child of the same size at the origin. Tapping a snapshot frame as-is lands 62 pt too high, which may explain presses that "succeed" with no effect.element.coordinate(withNormalizedOffset: CGVector(dx: 0.5, dy: 0.5)).tap()works. Plainelement.tap()on these elements did not, in our earlier attempts.
Suggested fix
Descend into the remote content through XCTest, and translate its frames by the host view's origin before tapping (or tap through XCUICoordinate on the element).
- Langage dominant
- TypeScript
- Étoiles
- 5.3k
- Forks
- 377
- Merge moyen
- 13 h 18 min
- PR mergées (30 j)
- 653
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de callstack/agent-device
-
bug ready-for-agent
Difficulté 2/5 1-3 heures Accessibilité débutants 90/100
callstack/agent-device#4212 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
iOS alert wait: the last poll can get ~30 ms and turns "no alert" into a failed readPeut-être pris @pcbeingused333 l’a pris il y a 4 jours. Ouvertebug ready-for-agent
Difficulté 2/5 1-3 heures Accessibilité débutants 77/100
callstack/agent-device#4018 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
callstack/agent-device#1869 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 70/100
callstack/agent-device#4216 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 3/5 1-2 jours Accessibilité débutants 55/100
callstack/agent-device#4215 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de callstack/agent-device
Issues similaires
-
needs-area-label
Difficulté 2/5 1-3 heures Accessibilité débutants 66/100
Les mainteneurs répondent en général sous 2 jours
-
Website: the hero tip's video play() has no catch, so a refused play is an unhandled rejectionOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
liberation-data/drivine#615 ·
Les mainteneurs répondent en général sous 1 jour
-
backend bug ready-for-agent
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
geolens-io/geolens#3639 ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
radius-project/ai-extensions#1196 ·
Les mainteneurs répondent en général sous 1 jour
-
good first issue
Difficulté 1/5 1-3 heures Accessibilité débutants 88/100