Releases: dequelabs/axe-core
Release list
Release 4.13.0
In summary, this release adds:
-
Support Element Internals: A modern way for building accessible component libraries
Axe-core is the first accessibility tool to support this major new web feature!
Thanks to RedHat and Adobe for working with us to figure out the right way forward. -
A new Swedish translation, thanks to our a community contribution
-
A new Finish contribution (not open source), thanks to our Scandinavian partner
-
10 False positives closed, including all the critical ones!
-
And 13 updates to get Axe-core consistent with the latest web standards
This release is one of the bigger changes we've done in a few years, so likely issue numbers are going to change in adopting this version.
Features
- aria-actions: add aria-actions to allowed ARIA attributes (#5200) (029655d), closes #4584 #5199, references #5215 #5215
- aria-allowed-attr: flag deprecated ARIA attributes as needs-review (#5246) (518f3cc), closes #3341
- aria-prohibited-attr: allow many elements to be named and disallow label and body from being named (#5259) (d8b1ea5)
- aria-roles: add sectionheader and sectionfooter roles (#5238) (c36c109), closes #4734, references #4734
- aria/get-aria-value: new function to get aria values of a node (#5109) (a7d8f3e), references #5042
- aria/has-attr-value: new function to check if node has aria value (#5136) (61f2624), references #5109
- aria: support role=image as equivalent to role=img (#5248) (5aa8aaf), closes #4656, references #5272
- checks/aria: support ARIA element internals properties (#5172) (9b7f754)
- checks/label: support ARIA element internals properties (#5170) (21c5f8b)
- checks/navigation: support ARIA element internals properties (#5167) (2c3a98f)
- commons/aria: support ARIA element internals properties (#5171) (31f09e7)
- commons/dom: support ARIA element internals properties (#5163) (f0a12cf)
- commons/forms: support ARIA element internals properties (#5165) (27a4686)
- commons/matches/fromPrimative: deprecate in favor of correct spelling (#5270) (31cfb2e)
- commons/text: support ARIA element internals properties (#5169) (e841a33)
- commons/text: support form-associated labels via element internals (#5182) (57cfe0a), closes #5045, references #5170 #5039 #5151 #5039
- dom/getResolvedRefs: new function to get the resolved virtual nodes of idrefs (#5151) (489cdea), references #5109
- element-internals: enable ElementInternals by default (#5284) (2740d42), closes #5277
- i18n: Add Swedish locale (#5190) (dcd13f2), references #5189
- matches: add inSectioningContent, hasChild, and isSummaryForDetails matches (#5262) (c47cdcd)
- rules: support ARIA element internals properties (#5168) (065baf7)
- standards/ariaAttrs: add caseInsensitive property for attributes (#5224) (bcd791c)
Bug Fixes
- aria-allowed-role: allow roles on a non-details summary (#5242) (3bd9875), closes #3911, references #3443 #3911
- aria-allowed-role: restrict figure roles with child figcaption (#5240) (178a635), closes #3443
- aria-prohibited-attr: visible aria-labelledby requires review only (#5285) (fd6fa9f)
- axe.d.ts: make enabled property of RuleMetadata optional (#5129) (90fce18)
- color-contrast: fix various stacking context bugs (#5214) (d5e5b04), references #8 #5213
- gather-internals: handle non-HTMLElement nodes (#5161) (06e84c3)
- get-selector: escape control characters in attribute selectors (#5273) (4b60ac5), closes #5204 #5204
- image-alt: allow whitespace alt on presentational images (#5218) (c5dd0ef), closes #5216
- landmark-unique: exclude section/form with non-landmark roles from landmark match (#5085) (c5fd013), closes #4722 #5064
- name the image role in role-img-alt and svg-img-alt metadata (#5279) ([995a269](995a269b3...
Release 4.12.1
Release 4.12.0
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
Release 4.11.4
This release addresses an issue with ancestry selectors. It is unlikely to change the number of issues found by axe-core.
Bug Fixes
Release 4.11.3
This release addresses a few false positives, which may reduce the number of issues on terget-size and aria-allowed-attr.
Bug Fixes
Release 4.11.2
This release addresses a number of false positives, including ones related to target size. It adds new affordances for ARIA, and adds a clarification around the scrollable regions rule.
Bug Fixes
- aria-valid-attr-value: handle multiple aria-errormessage IDs (#4973) (9322148)
- aria: prevent getOwnedVirtual from returning duplicate nodes (#4987) (99d1e77), closes #4840
- DqElement: avoid calling constructors with cloneNode (#5013) (88bc57f)
- existing-rule: aria-busy now shows an error message for a use with unallowed children (#5017) (dded75a)
- scrollable-region-focusable: clarify the issue is in safari (#4995) (2567afd), closes WebKit#190870 WebKit#277290
- scrollable-region-focusable: do not fail scroll areas when all content is visible without scrolling (#4993) (240f8b5)
- target-size: determine offset using clientRects if target is display:inline (#5012) (69d81c1)
- target-size: ignore widgets that are inline with other inline elements (#5000) (cf8a3c0)
Release 4.11.1
Release summary
This release addresses a number of false positives, which may result in a slightly lower number of issues reported. It also resolves a problem that caused the color contrast rule skip a page in edge cases. A page that wasn't tested because of this edge case may now be tested, and so could see new color contrast issues reported.
Lastly this rule corrects a few of the newly released RGAA tags, so when running an RGAA ruleset which rules run, and how they are mapped to RGAA is slightly different.
Bug Fixes
- allow shadow roots in axe.run contexts (#4952) (d4aee16), closes #4941
- color contrast fails for oklch and oklab with none (#4959) (8f249fd)
- color-contrast: do not incomplete on textarea (#4968) (d271788), closes #4947
- commons/color: Match browser behavior for out-of-gamut oklch colors (#4908) (5036be8)
- don't runs rules that select
htmlon nestedhtmlelements (#4969) (1e9a5c3) - replaced luminance threshold constant 0.03928 with 0.04045 (#4934) (316967d), closes #4933
- rgaa: adjust mapping of aria-hidden-* and valid-lang (#4935) (77571f2)
- valid-lang: update valid-langs for newer language codes (#4966) (c3f5446), closes #4963
Release 4.11.0
This release adds the new RGAA standard to many rules. Of particular note is that some best practice rules under WCAG are required under the RGAA standard: focus-order-semantics (experimental), region, skip-link, table-duplicate-name. This means that these rules are tagged as both best-practice and RGAAv4. Applications which are filtering rules based on the best-practice tags will need to update the logic in order to handle RGAA rules that are tagged best-practice.
Features
- add RGAA tags to rules (#4862) (53a925a)
- aria-prohibited-attr: add support for fallback roles (#4325) (62a19a9)
- axe.d.ts: add nodeSerializer typings (#4551) (a2f3a48), closes #4093
- DqElement: deprecate fromFrame function (#4881) (374c376), closes #4093
- DqElement: Truncate large
htmlstrings when the element has a large outerHTML string (#4796) (404a4fb), closes #4544 - get-xpath: return proper relative selector for id (#4846) (1035f9e), closes #4845
- i18n: Add Portugal Portuguese translation (#4725) (5b6a65a)
- incomplete with node on which an error occurred (#4863) (32ed8da)
- locale: Added ru locale (#4565) (067b01d)
- tap: some best practice rules map to RGAA (#4895) (bc33f4c)
- td-headers-attr: report headers attribute referencing other elements as unsupported (#4589) (ec7c6c8), closes #3987
Bug Fixes
- aria-allowed-role: add form to allowed roles of form element (#4588) (8aa47ac), closes /github.com/dequelabs/axe-core/blob/develop/lib/standards/html-elms.js#L264
- aria-allowed-role: Add math to allowed roles for img element (#4658) (95b6c18), closes #4657
- autocomplete-valid : Ignore readonly autocomplete field (#4721) (491f4ec), closes #4708
- autocomplete-valid: treat values "xon" and "xoff" as non-WCAG-violations (#4878) (52bc611), closes #4877
- axe.d.ts: add typings for preload options object (#4543) (cfd2974)
- button-name,input-button-name,input-img-alt: allow label to give accessible name (#4607) (a9710d7), closes #4472 #3696 #3696
- captions: fix grammar in captions check incomplete message (#4661) (11de515)
- color-contrast: do not run on elements with font-size: 0 (#4822) (d77c885), closes #4820
- consistently parse tabindex, following HTML 5 spec (#4637) (645a850), closes #4632
- core: measure perf for async checks (#4609) (7e9bacf)
- fix grammar when using "alternative text" in a sentence (#4811) (237a586), closes #4394
- get-ancestry: add nth-child selector for multiple siblings of shadow root (#4606) (1cdd6c3), closes #4563
- get-ancestry: don't error when there is no parent (#4617) (a005703)
- locale: fix typos in japanese (ja) locale (#4856) (3462cc5)
- locale: fixed typos in german (DE) locale (#4631) (b7736de)
- locale: proofread and updated de.json (#4643) (8060ada)
- meta-viewport: lower impact to moderate (#4887) (2f32aa5), closes #4714
- no-autoplay-audio: don't timeout for preload=none media elements (#4684) (cdc871e)
- performanceTimer: throwing in axe catch clause (#4852) (a4ade04), closes /github.com/dequelabs/axe-core/blob/e7dae4ec48cbfef74de9f833fdcfb178c1002985/lib/core/base/rule.js#L297-L300
- performanceTimer: work in frames (#4834) (d7dfebc)
- rules: Change "alternate text" to "alternative text" (#4582) (b03ada3)
- target-size: do not treat focusable tabpanels as targets (#4702) (60d11f2), closes #4421 #4701
- type: correct RuleError type (#4893) (d1aa8e2)
- types: correct raw types (#4903) (3eade11)
Release 4.10.3
This release addresses a few performance issues, corrects a few typos, and addresses a few inconsistencies between axe and the latest web standards. This may, but is unlikely to reduce the total number of issues found.
Bug Fixes
- aria-allowed-role: Add math to allowed roles for img element (#4658) (f6dddd9), closes #4657
- captions: fix grammar in captions check incomplete message (#4661) (3ef7058)
- consistently parse tabindex, following HTML 5 spec (#4637) (3b0a361), closes #4632
- core: measure perf for async checks (#4609) (e7dc26e)
- locale: fixed typos in german (DE) locale (#4631) (0740980)
- locale: proofread and updated de.json (#4643) (910cdb2)
- no-autoplay-audio: don't timeout for preload=none media elements (#4684) (b7f1ad1)
- target-size: do not treat focusable tabpanels as targets (#4702) (67d4e4f), closes #4421 #4701