Skip to content

Fix for "name required" for tab at 5.2.8.4 and 5.2.8.5 - #1771

Merged
pkra merged 1 commit into
w3c:mainfrom
SalazarJosh:issue-1768
Jul 22, 2022
Merged

pkra merged 1 commit into
w3c:mainfrom
SalazarJosh:issue-1768

Conversation

@SalazarJosh

@SalazarJosh SalazarJosh commented Jul 20, 2022 •

Copy link
Copy Markdown
Contributor

Addresses 1768

(name required) is missing for "tab" on 5.2.8.4 and 5.2.8.5. The query is searching the "Accessible Name Required:" value to be "True". There were extra spaces around that value so the string read "True " instead of "True".


Preview | Diff

(name required) is missing for "tab" on 5.2.8.4 and 5.2.8.5. The query is searching the "Accessible Name Required:" value to be "True". There were extra spaces around that value so the string read "True " instead of "True".

@scottaohara scottaohara left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this does the trick. thanks

@spectranaut

Copy link
Copy Markdown
Contributor

@pkra I think we can merge this?

@pkra

pkra commented Jul 22, 2022 •

Copy link
Copy Markdown
Member

@pkra I think we can merge this?

@spectranaut Is it ok for me to resolve the ipr failure as "non-substantial"?

@w3cbot

w3cbot commented Jul 22, 2022

Copy link
Copy Markdown

pkra marked as non substantive for IPR from ash-nazg.

@pkra

pkra commented Jul 22, 2022 •

Copy link
Copy Markdown
Member

I think this falls clearly in the "typos" category mentioned on the ipr page.

@pkra
pkra merged commit 7a56f40 into w3c:main Jul 22, 2022
github-actions Bot added a commit that referenced this pull request Jul 22, 2022
SHA: 7a56f40
Reason: push, by @pkra

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
pkra pushed a commit that referenced this pull request Jul 22, 2022
(name required) is missing for "tab" on 5.2.8.4 and 5.2.8.5. The query is searching the "Accessible Name Required:" value to be "True". There were extra spaces around that value so the string read "True&nbsp;" instead of "True".
@pkra pkra added the editorial a change to an example, note, spelling, grammar, or is related to publishing or the repo label Jul 22, 2022
@pkra pkra added this to the ARIA 1.3 milestone Jul 22, 2022
jnurthen pushed a commit that referenced this pull request Oct 10, 2023
(name required) is missing for "tab" on 5.2.8.4 and 5.2.8.5. The query is searching the "Accessible Name Required:" value to be "True". There were extra spaces around that value so the string read "True&nbsp;" instead of "True".
Elizabeth1979 added a commit to Elizabeth1979/accessibility-evidence-engine that referenced this pull request Oct 17, 2026
…A6, A8) (#126)

Audit items **A6** and **A8** from
[docs/audits/home-grown-code.md](https://github.com/Elizabeth1979/accessibility-evidence-engine/blob/main/docs/audits/home-grown-code.md).
Chrome's accessibility tree is the tested tool here, and AEE's glue was
throwing away what it returns. A7 (which roles must have a name) is
**not** in this PR: aria-query follows ARIA 1.2, and the ARIA 1.3 draft
disagrees with it on `tab`, `dialog`, `alertdialog`, `form`, `grid`,
`radiogroup` and `table` (w3c/aria#1771, w3c/aria#2297;
A11yance/aria-query#556 is still open). The owner is deciding which list
to follow.

## What changes

**A6: reader transcript.** Each reader item now keeps every `AXProperty`
exactly as Chrome reports it (`properties`, e.g. `hasPopup`, `invalid`,
`describedby`, `labelledby`, `editable`), plus `description`, `value`
and `backendDOMNodeId`. `states` stays as the spoken summary.
`AccessibilityNode` in
[accessibility-tree.ts](packages/playwright/src/accessibility-tree.ts)
gains `description` and `value`, and the transcript schema gains the new
fields.

**A8: the cross-check.** The accessibility-tree observer used to dedupe
the tree into `{role, name, level}`. It now indexes whole nodes by
`backendDOMNodeId`: role, name, description, value, `ignored`, Chrome's
`ignoredReasons`, and every property. The screen-reader judge finds the
same element the reader read and compares all of that. Before, any node
with the same role and name passed, so a second "Invoices" heading
elsewhere was enough. The pass message is reworded to match. The Chrome
→ spoken role mapping (`DisclosureTriangle` → button, `StaticText` →
text) moves to `@aee/core` (`spokenRoleOf`), so the reader and the judge
share one copy. The screen-reader judge goes to 0.3.0 and the
accessibility-tree observer to 0.3.0.

**A8: images.** The element map no longer labels every skipped image
"decorative". It keeps Chrome's exact `ignoredReasons` (`alt:
"ignored"`, e.g. `emptyAlt`, `ariaHiddenElement`, `presentationalRole`),
and the page view shows them. While testing I found that
`Accessibility.getFullAXTree` leaves ignored images out entirely in some
places, such as an `alt=""` image inside a plain paragraph. So the map
listed none of them, before and after the label fix. Each `<img>` the
full tree leaves out is now asked about on its own with
`getPartialAXTree`, which always answers with the reason. The reader
reuses that same per-node fetch (`fetchAccessibilityNode`).

**Not here: iframes.** Fetching the tree and DOM snapshot for every
frame (`getFullAXTree` per `frameId`, a CDP session per out-of-process
frame, `DOMSnapshot` documents past `[0]`, element paths across frames)
is a separate follow-up PR.

## Before / after for the owner

Real output from one demo page on `main` and on this branch:
https://claude.ai/artifact/7KnuugCJHKAS2phDoUcrH5

## Tests

- New judge unit cases, each of which passed before: renamed element
while another node has the old name, a changed state, a changed
description, an ignored node (with its reason), a node missing from the
tree, an item with no node id (unknown), and the `DisclosureTriangle` →
button match.
- The observer test indexes whole nodes, including ignored ones and
relation properties.
- Schema tests cover the new transcript item fields and
`ignoredReasons`.
- New browser tests in real Chrome:
- The reader keeps `hasPopup`, `describedby`, the description, the value
and `invalid`, and the judge joins the item to the checkpoint tree and
passes.
- The element map lists three skipped images in a paragraph with
`emptyAlt`, `ariaHiddenElement` and `presentationalRole`.
- Ran locally: `npm run check`, `format:check`, `site:check`, `lint`,
`test:unit` (230 pass) and `test:playwright` (105 pass).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

editorial a change to an example, note, spelling, grammar, or is related to publishing or the repo

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants