Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

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

クローズ
#315 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

関連するプルリクエストがすでにマージされています。

  • #346 @eparenti による — マージ済み

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
54/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
playwright, typescript

調査の方向性

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.

索引モデルが issue の本文から書いたものです。

説明

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.

主要言語
TypeScript
スター
0
フォーク
0
平均マージ
6時間 42分
マージ済み PR(30日)
44

環境構築

  • Dockerfile・Docker Compose ファイルなし
  • プルリクエストのテンプレートあり
  • コントリビューションガイドなし

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

usabl-dev/usabl のほかの issue

usabl-dev/usabl の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。