axe-core 4.12.0
Release Notes
In this release you'll find:
- A new
aria-tab-namerule that tests role="tab" elements have an accessible name - The
landmark-complementary-is-top-levelrule is deprecated, as ARIA no longer requires this - Preparations for Element Internal support (behind a feature flag)
- Various other bug fixes for target-size, scrollable-region-focusable, and more
This release can see reveal new issues, as well as close out a few existing ones that might have come from false positives or the now deprecated rule.
Features
- add gather-internals.js external script (#5099) (c61d58b), closes #5080
- aria-allowed/prohibited-attr, aria-required-parent/children: partially support element internals role (#5080) (417b48a), closes #5039 #4259
- axe.externalAPIs: add public api for setting elementInternal data (#5105) (63bab8f)
- core: expose normalizeRunOptions (#4998) (b8e6a59)
- expose axe.resetLocale() to restore the default locale (#5108) (c2b5292), closes #5107
- getRules: include rule enabled state in returned objects (#5118) (75bf772), closes #5116
- list,listitem: support element internals role (#5119) (7d9d696)
- new-rule: check that aria-tab have an accessible name (#5001) (0d4e4e7), closes #4842
- rules: deprecate landmark-complementary-is-top-level rules (#4992) (9e09139), closes #4950
- utils: add
getElementInternalsfunction (#5077) (1c15f82)
Bug Fixes
- aria-allowed-attr: restrict br and wbr elements to aria-hidden only (#4974) (c6245e7)
- aria-conditional-attr: add support for radio (#5100) (8223c98)
- aria-valid-attr-value: handle multiple aria-errormessage IDs (#4973) (0489e30)
- aria: prevent getOwnedVirtual from returning duplicate nodes (#4987) (48ca955), closes #4840
- commons/text: exclude natively hidden elements from aria-labelledby accessible name (#5076) (ea7202c), closes #4704
- DqElement: avoid calling constructors with cloneNode (#5013) (0281fa1)
- existing-rule: aria-busy now shows an error message for a use with unallowed children (#5017) (2067b87)
- helpUrl: ensure axe.configure always updates the help URLs (#5114) (c4f60ff)
- label-content-name-mismatch: match visible text with aria-label and exclude invisible text (#5096) (3a012a1)
- locale: ensure all subtags are correctly set (#5112) (13005ed)
- scrollable-region-focusable: clarify the issue is in safari (#4995) (4ec5211), closes WebKit#190870 WebKit#277290
- scrollable-region-focusable: do not fail scroll areas when all content is visible without scrolling (#4993) (838707a)
- target-size: determine offset using clientRects if target is display:inline (#5012) (a4b8091)
- target-size: ignore position: fixed elements that are offscreen when page is scrolled (#5066) (1229a6e), closes #5065
- target-size: ignore widgets that are inline with other inline elements (#5000) (a8dd81b)
- utils/getAncestry: escape node name (#5079) (d1fabaa), closes #5078
- utils: Add null check to parseCrossOriginStylesheet, closes #5074 (#5075) (f12ef32)
- utils: update isShadowRoot to use spec-compliant custom element regex (#5059) (edc6ce2), closes #5030
Product Impacts
Each product has a separate axe-core version rollout process. The information below describes the impacts of this axe-core release once it is pulled into the given product.
axe Auditor
Issue counts could be impacted in some cases based on rule updates.
axe Developer Hub
Issue counts could be impacted in some cases based on rule updates.
axe DevTools APIs and CLI
Issue counts could be impacted in some cases based on rule updates.
axe DevTools Extension
Issue counts could be impacted in some cases based on rule updates.
axe DevTools Linter
Issue counts could be impacted in some cases based on rule updates.
axe Monitor
Issue counts could be impacted in some cases based on rule updates.
axe Reports
Issue counts could be impacted in some cases based on rule updates.
