Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

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

Đang mở
#315 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
54/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
playwright, typescript
Lĩnh vực
accessibility, testing-qa

Hướng nghiên cứu

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.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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.

Ngôn ngữ chính
TypeScript
Star
0
Fork
0
Merge trung bình
9 giờ 27 phút
Pull request đã merge (30 ngày)
31

Chuẩn bị môi trường

  • Không có Dockerfile hay tệp Docker Compose
  • Có mẫu pull request
  • Không có hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của usabl-dev/usabl

Tất cả issue của usabl-dev/usabl

Issue tương tự

Thêm issue về TypeScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.