dequelabs / dequelabs/axe-core
Support the aria-actions pattern in aria-required-children and nested-interactive
- Dominant language
- JavaScript
- Stars
- 7.5k
- Forks
- 933
- Avg merge
- 2d 13h
- Merged PRs (30d)
- 29
Description
## Background
#5200 added recognition of the `aria-actions` attribute (valid / allowed / prohibited-on-role). That covers the *attribute* but not the authoring *pattern* it enables. The APG added two experimental examples that associate action controls via `aria-actions`:
- [tabs-actions](https://www.w3.org/WAI/ARIA/apg/patterns/tabs/examples/tabs-actions/) — the `tablist` owns the action ``s and `role="menu"` in addition to the `tab`s → **aria-required-children** flags the tablist.
- [listbox-actions](https://www.w3.org/WAI/ARIA/apg/patterns/listbox/examples/listbox-actions/) — each `role="option"` nests action ``s → **nested-interactive** flags them.
Because `aria-actions`-referenced controls are legitimately associated actions (not content children), axe should account for them in these rules rather than treating them as invalid structure.
## Interim state
As part of #5200, these two rules are disabled per-page in `test/aria-practices/apg.spec.js` so the APG suite stays green. This issue tracks removing those per-page disables once the rules understand `aria-actions`.
## Scope
- `aria-required-children`: exclude `aria-actions`-referenced descendants from the owned-children check.
- `nested-interactive`: exclude `aria-actions`-referenced interactive controls from the check.
- Remove the per-page `disabledRules` entries in `apg.spec.js` and re-verify both pages pass.
Contributor guide
Research direction
Start with the aria-required-children and nested-interactive rule implementations and the per-page disabledRules entries in test/aria-practices/apg.spec.js. Trace how aria-actions references are handled, then update both checks so referenced controls are excluded. Done means the disables are removed and the tabs-actions and listbox-actions APG pages pass.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- accessibility, testing
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 78/100