iOS 27: HealthKit's authorization sheet reads as one node, so label and ref presses can't reach it
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
- 48/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- ios, typescript
Línea de trabajo
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.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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).
- Lenguaje dominante
- TypeScript
- Estrellas
- 5.3k
- Forks
- 377
- Merge medio
- 13 h 18 min
- PR fusionados (30 d)
- 653
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de callstack/agent-device
-
bug ready-for-agent
Dificultad 2/5 1-3 horas Aptitud para principiantes 90/100
callstack/agent-device#4212 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
iOS alert wait: the last poll can get ~30 ms and turns "no alert" into a failed readPosiblemente ocupada @pcbeingused333 la tomó hace 4 días. Abiertobug ready-for-agent
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
callstack/agent-device#4018 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
callstack/agent-device#1869 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 70/100
callstack/agent-device#4216 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 1-2 días Aptitud para principiantes 55/100
callstack/agent-device#4215 ·
Los mantenedores suelen responder en 1 día
Todos los issues de callstack/agent-device
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Open-Earth-Foundation/CityCatalyst#3399 ·
Los mantenedores suelen responder en 2 días
-
userReport
Dificultad 1/5 Menos de una hora Aptitud para principiantes 72/100
nkprasad12/morcus-net#631 ·
Los mantenedores suelen responder en 1 día
-
fix(app): fail closed if GetGeneralSetting fails during initializationPosiblemente ocupada @kalavt la tomó hoy. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
nekko-labs/nekko-agent#1756 ·
Los mantenedores suelen responder en 1 día
-
needs-area-label
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
Los mantenedores suelen responder en 2 días