Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Row identity cannot find elements in shadow DOM, iframes, or unnamed walk stops, so their screens read as not covered

Chiusa
#315 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

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

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

area: engine bug

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:

  1. Shadow DOM and iframes. src/providers/axe/index.ts joins axe's node.target list 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.
  2. Keyboard-walk stops with no path. src/providers/keyboard-walk/index.ts uses a placeholder path tab-stop-N when the element path cannot be computed. As a selector it matches nothing.
  3. Layout tables. The table selector in src/deps/real.ts counts <table role="presentation"> as a table. A layout table that wraps a data table makes the data table's rows enclosing-row-unkeyed gaps.

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 presentation or none.
  • 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

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di usabl-dev/usabl

Tutte le issue di usabl-dev/usabl

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.