axe-core v4.4.0 Release Notes

Release Date: 2022-01-26 // about 2 years ago
  • 🔋 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 for role="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 for textContent 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 is null (#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)