Row identity cannot find elements in shadow DOM, iframes, or unnamed walk stops, so their screens read as not covered
I maintainer di solito rispondono entro 1 giorno
Una pull request collegata è già stata integrata.
- #346 di @eparenti — integrata
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 54/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- playwright, typescript
- Ambito
- accessibility, testing-qa
Direzione di ricerca
Start with src/providers/axe/index.ts, src/providers/keyboard-walk/index.ts, and src/deps/real.ts to trace how findings are resolved to rows. Add real-browser tests for the four cases listed in the issue, then check that unresolved findings remain gaps and presentation or none tables are excluded. Also replace the issue-number comment in src/deps/real.ts with a description of the failure mode.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
What happens
With row-scoped identities, every finding's element is found again on the live page to read its table row. A finding whose selector does not name exactly one element in the top document makes its screen a not-covered gap. That rule is safe, because it never turns a lost row identity into a pass. But several kinds of findings can never be found that way, so their screens read as not covered on every run:
- Shadow DOM and iframes.
src/providers/axe/index.tsjoins axe'snode.targetlist into one selector. For an element inside a shadow root or an iframe, axe returns one selector per boundary, and the joined string names nothing, or the wrong element, in the top document. Web-component design systems put most controls inside shadow roots. - Keyboard-walk stops with no path.
src/providers/keyboard-walk/index.tsuses a placeholder pathtab-stop-Nwhen the element path cannot be computed. As a selector it matches nothing. - Layout tables. The table selector in
src/deps/real.tscounts<table role="presentation">as a table. A layout table that wraps a data table makes the data table's rowsenclosing-row-unkeyedgaps.
Expected
- Resolve an axe target across shadow and frame boundaries (host selector, then into its shadow root or frame document, and so on), and read the row from the composed tree.
- Keep a keyboard-walk stop's element reference from the walk itself, rather than going back through a placeholder selector.
- Leave out tables whose role is
presentationornone. - A finding that still cannot be found stays a gap, as now.
Each case needs a real-browser test: a button inside a shadow root in a keyed row, a button in an iframe, a walk stop without a path, and a data table inside a layout table.
Also
A code comment carries an issue number, which the project rules do not allow: src/deps/real.ts ("the exact miss #146 is about"). Replace it with a description of the failure mode.
Status
Found while finishing the row-scoped identity change. It makes screens read as not covered; it never makes one read as verified.
- Lingua principale
- TypeScript
- Stelle
- 0
- Fork
- 0
- Merge medio
- 6h 42m
- PR unite (30g)
- 44
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Nessuna guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di usabl-dev/usabl
-
area: engine enhancement performance
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
Scan browser runs without Chromium's sandboxForse già presa @eparenti l’ha presa 1 giorno fa. Apertaarea: engine security
Difficoltà 4/5 3-5 giorni Idoneità per principianti 46/100
I maintainer di solito rispondono entro 1 giorno
-
area: engine enhancement performance
Difficoltà 4/5 1-2 giorni Idoneità per principianti 45/100
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
I maintainer di solito rispondono entro 1 giorno
-
area: engine enhancement performance
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di usabl-dev/usabl
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
components-web-app/docs#307 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
localstack/localstack-mcp-server#112 ·
I maintainer di solito rispondono entro 1 giorno
-
area:frontend kind:bug priority:p1 ready
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
I maintainer di solito rispondono entro 1 giorno
-
bug ready-for-agent
Difficoltà 2/5 1-3 ore Idoneità per principianti 73/100
PhyberApex/kuroshiro#1687 ·
I maintainer di solito rispondono entro 1 giorno
-
Performance (Web Vitals) collector: LCP/FCP from background tabs are not discarded, inflating p75Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
umami-software/umami#4720 ·
I maintainer di solito rispondono entro 3 giorni