Features
- add new ARIA roles (#3138) (61be7e5)
- aria-allowed-attr: report violation for non-global ARIA attrs on element without role (#3342) (fb5d990)
- aria-allowed-attr: report violations for non-global ARIA attributes on elements without a role (#3102) (87cfc0b)
- color-contrast: add support for CSS mix-blend-mode (#3226) (d497f40)
- commons: deprecate shadowElementsFromPoint (#3311) (c3a7d16)
- configure: Deprecate branding: Object, use a string instead. (#3278) (1f01309)
- dpub: upgrade to DPUB 1.1 and report deprecated roles (#3280) (034a846)
- options: make axe.ping configurable with pingWaitTime (#3273) (ce4dfaf)
- rule: add new color-contrast-enhanced rule (WCAG AAA) (#3235) (bec20fc), closes #2934
Bug Fixes
- allowed-role: area without href can have a button or link role (#3275) (bf7e60a)
- aria-allowed-attr: check for invalid
aria-attributes
forrole="row"
(#3160) (cfa900d) - aria-allowed-attr: revert violation for non-global ARIA attrs on element without role (#3243) (112b960)
- aria-allowed-children,aria-allowed-parent: allow group role in listbox (#3195) (cb01975)
- aria-allowed-role: allow title, aria-label and aria-labelledby on a img element with a supported role (#3224) (006a681)
- aria-allowed-role: landmark roles banner on header and contentinfo on footer to only report on top-level rule (#3142) (1fd4b00)
- aria-allowed-roles: allow role=radio on img with non-empty name (#3320) (accafdf)
- aria-allowed-roles: update role allowances for section element (#3238) (99676ec), closes #3237
- aria-allowed-role: Update allowed roles based on ARIA spec updates (#3124) (00f6efc)
- aria-allowed-role: updates the allowed roles for the wbr element to none and presentation (#3192) (2f439b3), closes #3177
- aria-prohibited-attr: update metadata message (#3206) (d1a768e)
- autocomplete-valid: Allow custom autocomplete attribute values (#3225) (6076ee8)
- axe.configure: do not remove newline characters from locale doT strings (#3216) (ea2ce17)
- axe.d.ts: allow Node for include/exclude object (#3338) (e699939)
- axe.run: add option to increase iframe ping timeout (#3233) (ec937e3)
- check for hidden elements on
aria-errormessage
(#3156) (95d37dd) - color-contrast: account for 0 width scroll regions with children (#3172) (5908f0d)
- color-contrast: account for elements that do not fill entire bounding size (#3186) (699697b)
- color-contrast: check bg on fg contrast for thin text-shadows (#3350) (d92a7e5)
- color-contrast: correctly apply page background color (#3207) (fbc581d)
- color-contrast: correctly compute color-contrast of truncated children (#3203) (ac7b2b5)
- color-contrast: correctly handle nested scroll regions (#3212) (22db29c)
- color-contrast: correctly work with positioned elements without z-index (#3209) (725a20c)
- color-contrast: inconsistency of bgOverlap message based on scroll (#3310) (25eff98)
- color-contrast: properly blend multiple alpha colors (#3193) (e930a70)
- core: Incomplete fallback was missing, and could cause infinite loop (#3302) (f23d8c8)
- custom-elms: Don't error on custom Element.children prop (#3326) (2ad92f6)
- d.ts: Add PartialResults type (#3126) (544b6d5)
- get-selector: do not URL encode or token escape attribute selectors (#3215) (6f7e183)
- getFrameContext: option.iframe=false always returns an empty array (#3279) (dfa9725)
- greater consistency of help / description text (#3204) (0677565)
- is-visible: do not error if window.Node does not exist (#3168) (4046087)
- jsdoc: typo Sting -> String (d1cc205)
- label-content-name-mismatch: account for formatting elements (#3349) (53a6684)
- label-title-only: allow hidden labels (#3183) (cad3994)
- listitem: allow as child of menu (#3286) (4bf7d35)
- nativeSelectValue: update selected value on change (#3154) (1ee88cb)
- nested-interactive/aria-text: allow "tabindex=-1" on elements with no role (#3165) (0ddc00b), closes #2466 #2934 #2934
- nested-interactive: add focusable descendants as related nodes (#3261) (3b2fdda)
- nested-interactive: add message for negative tabindex (#3194) (b445291), closes #2466 #2934 /github.com/dequelabs/axe-core/issues/3163#issuecomment-949804464
- nested-interactive: update negative tabindex message to include asssistive technologies (#3262) (b985776)
- p-as-heading:
p-as-heading
rule to account fortextContent
length (#3145) (400a230) - prohibited-attr: always report incomplete if there is text in the subtree (#3347) (2e27dca)
- region: Allow skip menu buttons (#3277) (6b6f2e3)
- remove optional crypto dependency (webpack compatibility) (#3358) (aa9d095)
- reporter: Run inside isolated contexts (#3129) (afe6675)
- respondable: avoid crashes if the data in
window.postMessage
isnull
(#3249) (b37b2f6) - scrollable-region-focusable: treat overflow:clip as hidden (#3304) (ef45377)
- Separate Level AAA rules from A and best-practices (#3191) (828e526)
- skip-link: work with absolute and relative paths (#2875) (ee49d3e)
- typescript: allow passing a NodeList to ElementContext (#3161) (ad4b165)