Android: an identifier-only leaf paints its sibling layer over the whole screen, marking everything covered
Les mainteneurs répondent en général sous 1 jour
Une pull request liée a déjà été fusionnée.
- #4266 par @pcbeingused333 — fusionnée
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 79/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- android, react-native, typescript
Piste de recherche
Commencez dans packages/capture-kit/src/snapshot/android-replacement-surface-occlusion.ts et suivez la façon dont semanticPaintRect et semanticShowRect traitent les feuilles qui ne contiennent qu’un identifiant. L’issue inclut une condition proposée et explique pourquoi l’identifiant doit rester utilisable comme cible sans compter comme une zone peinte. Vérifiez les tests de snapshot ou d’occlusion Android, s’ils existent, et confirmez que les boutons frères ne sont plus marqués comme masqués, tandis que la vue de l’identifiant peut toujours être marquée comme masquée.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Version: 0.21.36 (the same code is on main at packages/capture-kit/src/snapshot/android-replacement-surface-occlusion.ts)
Platform: Android (emulator, android-36), React Native app
What happens
On Android every element on our chat screen comes back interactionBlocked: "covered", so locator taps refuse with "Ref @e88 is covered by another visible element and cannot be tapped safely". The screen itself is fine: a coordinate click on the same button opens it.
Why
The screen is a React Native stack of full-screen sibling layers under one parent: background, message list, header buttons, composer. The composer layer is
#117 ViewGroup (0,0,1080,2150) not hittable
#119 ViewGroup id=coach-container (0,0,1080,2150) leaf, not hittable, no label/value
#120 ... composer buttons (hittable)
coach-container is a <View testID pointerEvents="box-none" style={absoluteFill}>: transparent, no handlers, and it has only an identifier. In semanticPaintRect the clause childCount === 0 && hasSemanticContent(node) counts it as painting its whole rect, because hasSemanticContent accepts identifier. Its layer has an action (the composer buttons), so the layer's paint footprint covers 100% of every earlier sibling, and the header buttons and every message bubble get marked covered.
Suggested fix
Don't let an identifier-only leaf paint. An identifier is a test hook, not something drawn, and a non-hittable leaf with no label or value carries no evidence that it's opaque or catches touches:
function semanticPaintRect(node: RawSnapshotNode, childCount: number): Rect | undefined {
if (!isPositiveFiniteRect(node.rect)) return undefined;
return node.hittable === true ||
isScrollableType(node.type) ||
(childCount === 0 && Boolean(node.label?.trim() || node.value?.trim()))
? node.rect
: undefined;
}
semanticShowRect keeps hasSemanticContent, so such a view can still be the target that gets covered. We're carrying this as a pnpm patch on 0.21.36 for now. I'll comment here with the result once our Android coach flows have run with it.
- Langage dominant
- TypeScript
- Étoiles
- 5.3k
- Forks
- 377
- Merge moyen
- 14 h 6 min
- PR mergées (30 j)
- 650
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
-
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 6 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 48/100
callstack/agent-device#4274 ·
Les mainteneurs répondent en général sous 1 jour
-
iOS simulator: in-flight `prepare ios-runner` keeps retrying the old runner port after the runner is relaunched on a new portPeut-être pris @twotnguyen l’a pris aujourd’hui. Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
callstack/agent-device#4265 ·
Les mainteneurs répondent en général sous 1 jour
-
bug ready-for-agent
Difficulté 4/5 3-5 jours Accessibilité débutants 48/100
callstack/agent-device#4264 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de callstack/agent-device
Issues similaires
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
Les mainteneurs répondent en général sous 1 jour
-
area:ui bug effort:S priority:P2
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
Typo in WSL project description on Projects pagePeut-être pris @akhil9tiet l’a pris aujourd’hui. Ouverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 75/100
microsoft/opensource.microsoft.com#1066 · 1 commentaire ·
-
ArcGIS Maps SDK for JavaScript c-carousel calcite-design-tokens enhancement impact - p3 - not time sensitive needs triage
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Esri/calcite-design-system#15565 ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
linkwarden/linkwarden#1891 ·
Les mainteneurs répondent en général sous 1 jour