All notable changes to this project will be documented in this file. See standard-version for commit guidelines.
4.5.0 (2022-10-17)
- new rule: Add WCAG 2.2 target-size rule (off by default) (#3616) (691f1b6)
- new rule: Add meta-refresh-no-exceptions (off by default, wcag2aaa) (#3530) (27031a8)
- identical-links-same-purpose: Disable by default (wcag2aaa rule) (#3615) (a2c2d2f)
- link-in-text-block: Remove experimental and enable by default (#3706) (37b6e7a)
- i18n: Add Norwegian Bokmål locale (#3375) (2886d33)
- i18n: Add Hebrew translation (#3438) (b4162ed)
Various changes of tags, for greater consistency with ACT Rules.
- area-alt: Remove the wcag111 tag (#3479) (1c3cc51)
- aria-hidden-focus: Remove the wcag131 tag (#3477) (36ace76)
- empty-table-headers: Rule is now best-practice and fails instead of incompletes (#3427) (0a4397d), closes #3404
- frame-title: Remove wcag241 tag (#3519) (9c6b828)
- input-image-alt: Add the wcag412 tag (#3478) (34272c6)
- label,select-name: Remove the sc131 tag (#3476) (7caef89)
- meta-viewport: Report as violation of wcag 1.4.4 (#3704) (6f7e4a9)
- metadata: Update ACT tags & actIds (#3498) (571722b)
- Deprecate Internet Explorer support (#3644) (11f5163)
- Deprecate sri-history.json file (#3646) (6f6a89e)
- Deprecate and replace dom.isVisible, utils.isHidden, and dom.isHiddenWithCss (#3351) (1ae2ac0)
- Deprecate only-dlitems-evaluate & only-listitems-evaluate methods (#3724) (322e9ed)
- Deprecate presentation-role-conflict-matchess (#3638) (0f02a15)
- Deprecate is-visible-matches, use is-visible-on-screen-matches (#3679) (738dd8f)
- Deprecate not-html-matches, use :not(html) instead (#3540) (e0010d9)
- aria-roles: Permit fallback roles (#3683) (5665260)
- aria-required-children: Allow aria-busy on children (#3569) (3618f50)
- aria-required-children: Fail for children which are not listed as required (#3597) (b5ceabc)
- getRules: Return actIds when set (#3470) (a3d5cef)
- is-in-tab-order: Add isInTabOrder to commons (#3619) (77afe90), closes #3500
- list/definition-list: Only allow required owned roles (#3707) (a920d35)
- presentation-role-conflict: Test img elements with empty alt (#3717) (ea32fa7)
- utils: greatly improve the speed of querySelectorAll (#3423) (1cae5ea)
- aria-hidden-focus: Do not fail for focus trap bumper elements (#3667) (46b6658)
- aria-required-attr: aria-valuenow is no longer required for spinbutton (#3552) (a22cf56)
- aria-required-parent: Allow nested group and presentational roles (#3492) (4685270)
- aria-valid-attr-value: Report empty values as incomplete (#3635) (fff39db)
- avoid-inline-spacing: Add spacing threshold (#3533) (92add05)
- checks/no-focusable-disable: Don't count non-disableable elements as disabled (#3393) (bb8b5ca), closes #2466 #2934 #2934 #3315
- checks/unsupportedrole: Support unsupported dpub and fallback roles, add role to message (#3395) (3c0f10f), closes #2466 #2934 #2934 #3282
- color-contrast-enhanced: Avoid duplicates between color-contrast and color-contrast-enhanced (#3714) (2811f77)
- color-contrast: Correctly determine color contrast for element that exactly overlaps midpoint of node (#3565) (90de9aa)
- frame-focusable-content: don't fail for elements with negative tabindex (#3493) (94e75ac)
- frame-title-unique: Make frame-title-unique reviewOnly and WCAG412 (#3610) (8401b8e), closes #3487
- frame-title: ignore frames with negative tabindex (f61f825)
- frame-title: return incomplete for presentational iframe with empty title (#3594) (c2cfd84)
- is-hidden-for-everyone: count elements inside closed details as hidden (#3726) (e65e962)
- is-hidden-for-everyone: support content-visibility: hidden (#3690) (95cf6e7)
- is-visible-on-screen: ignore elements hidden by overflow:hidden (#3676) (2935950)
- label: avoid passing labels because of an input[value] (#3688) (54a8116)
- link-in-text-block: Update rule to match current guidance, revise tests (#3575) (edb88ed)
- meta-refresh: Add WCAG's 20-hour exception (#3525) (5beb6c3)
- no-autoplay-audio: add reviewOnFail and update tests (#3557) (60ec997)
- object-alt: ignore unloaded objects (#3680) (8e03e2c)
- page-has-heading-one,landmark-one-main: do not fail if modal is open (#3501) (c6af316)
- td-headers-attr: ignore hidden cells with headers attr (#3684) (e0403f4)
- td-headers-attr: ignore table elements with their role changed (#3687) (902d07c)
- utils.matches: fix attribute exists selector to match empty attributes (#3669) (4b768ea)
- valid-lang: ignore lang on elements with no text (#3523) (fd85f39)
- valid-lang: run on aria-hidden text (#3634) (a0860bd)
- video-caption: remove excludeHidden: false (#3554) (a3e4bbe)
4.4.3 (2022-07-13)
- axe.d.ts: updates type definition for Rule to add reviewOnFail (#3521) (afb2478)
- Continue supporting Node >=4 (#3538) (da7923b), closes #3537
4.4.2 (2022-05-12)
- aria-hidden-focusable: report incomplete with onfocus (#3407) (6755e89)
- aria-hidden-focus: Update rule help & description (#3422) (7cfb4b1)
- aria-valid-attr-value: add note about element id being in a different shadow DOM tree (#3421) (24f74df)
- color-contrast: consistently return color contrast information in the data object for pseudo elements (#3453) (1a9d95e)
- deprecatedrole,color-contrast: fix message to properly include deprecated role, improve color-contrast pass messages (#3387) (650e503)
- html-elms: update role allowances for nav element (#3402) (8aa816a), closes #3401
- standards: fix address typo in html-elms.js (#3418) (f235cc7), closes #3417
4.4.1 (2022-02-03)
- DPUB: deprecate endnote, rather than endnotes (plural) (#3373) (1ba9917)
- d.ts: correct getFrameContexts return type (#3370) (a1b9611)
4.4.0 (2022-01-26)
- 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
- 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)
4.3.5 (2021-10-29)
- aria-allowed-attr: revert violation for non-global ARIA attrs on element without role (#3243) (e138fd6)
4.3.4 (2021-10-22)
- aria-allowed-attr: check for invalid
aria-attributes
forrole="row"
(#3160) (76aa5ec) - aria-allowed-children,aria-allowed-parent: allow group role in listbox (#3195) (d742b29)
- aria-allowed-role: updates the allowed roles for the wbr element to none and presentation (#3192) (66db765), closes #3177
- aria-prohibited-attr: update metadata message (#3206) (f9cf9fa)
- axe.configure: do not remove newline characters from locale doT strings (#3216) (5925898)
- axe.run: add option to increase iframe ping timeout (#3233) (023f356)
- color-contrast: account for 0 width scroll regions with children (#3172) (ac913a1)
- color-contrast: account for elements that do not fill entire bounding size (#3186) (84229d4)
- color-contrast: correctly apply page background color (#3207) (0ea7e1b)
- color-contrast: correctly compute color-contrast of truncated children (#3203) (4adb911)
- color-contrast: correctly handle nested scroll regions (#3212) (80d91c0)
- color-contrast: correctly work with positioned elements without z-index (#3209) (0322070)
- greater consistency of help / description text (#3204) (0be12e6)
- Separate Level AAA rules from A and best-practices (#3191) (7e6e6da)
- color-contrast: properly blend multiple alpha colors (#3193) (5aa0441)
- is-visible: do not error if window.Node does not exist (#3168) (cf58aea)
- label-title-only: allow hidden labels (#3183) (ab636ef)
- nativeSelectValue: update selected value on change (#3154) (ad584a1)
- p-as-heading:
p-as-heading
rule to account fortextContent
length (#3145) (e0d4dc6) - typescript: allow passing a NodeList to ElementContext (#3161) (5f2e517)
- check for hidden elements on
aria-errormessage
(#3156) (69b2e33)
4.3.3 (2021-08-24)
- aria-allowed-role: Update allowed roles based on ARIA spec updates (#3124) (a1f637f)
- d.ts: Add PartialResults type (#3126) (5cdaf01)
- reporter: Run inside isolated contexts (#3129) (98066f8)
4.3.2 (2021-07-27)
- aria-hidden-focusable: disabled aria-hidden fieldset should not have focusable children (#3056) (0865bd7)
- aria-required-attr: only require aria-controls if aria-expanded=true (#3089) (63b6c7b)
- aria-required-parent: Filter out group from required parent roles if group is present (#3084) (1cb270c)
- axe.d.ts: fix finishRun types (#3098) (e79c65c)
- color-contrast: check for size before ignoring pseudo elements (#3097) (e0f6c0c)
- core: stop mutating Context's input (#3076) (5dc34ee)
- finishRun: handle null for failed iframe results (#3096) (8947099)
- run,finishRun: don't mutate options, set default reporter to v1 (#3088) (90f0b27)
4.3.1 (2021-07-13)
4.3.0 (2021-07-09)
- options: accept a string for options.runOnly (4392bc0)
- runPartial: Test without frame communication (#3006) (42738b5)
- utils: add getFrameContexts method (#2995) (f478bab)
- deprecate autocomplete appropriate check (#2917) (1fe1487)
- Remove deprecated phantomjs example (#2913) (4a01ffe)
- Support multiple languages at once in builds (#2994) (f18a56b)
- rule: add ACT Rule IDs to test rule objects (#2866) (cc1ebf5), closes #2820
- accText: ignore text in embedded content elements (#3022) (fa4f926), closes #3017
- aria-allowed-attr: allow aria-posinset and aria-setsize on row elements for treegrids (#2952) (24e6115)
- aria-allowed-attr: pass aria-label on some HTML elements (#2935) (d2584ed)
- aria-level: New check for aria-level > 6 as needs review (#3061) (73d3ae1)
- aria-roles: Mark as needs review if both none and presentation are used on element with no implicit role (#2989) (70c683c)
- autocomplete-appropriate: pass for autocomplete=username and type=email (#2896) (43394bc)
- color-contrast: add special case for new sr-only technique (#2985) (d6a72f9)
- color-contrast: check for pseudo elements on element itself, not just parents (#2980) (9b6ccd0)
- color-contrast-matches: only absolutely positioned elements using clip should be not visible (#3038) (e93fdb1)
- combobox: support aria 1.2 pattern for comboboxes (#3033) (5ab026d)
- frame-tested: run without respondable (#2942) (c046114)
- getStandards: Read standards from utils (#2903) (f1a0368)
- heading-order: Prevent crash on page with iframes but no headings (#2965) (99e7f0c)
- heading-order: use aria-level on headings in addition to role=header elements (#3028) (caccd38)
- page-no-duplicate: don't count elements hidden from screenreaders as potential duplicates (#3051) (5e0098b)
- publish-metadata: use fail message for rules with reviewOnFail:true (#2987) (b6dc5f6)
- utils: unify selecting nodes in shadow tree with shadowSelect() (#3068) (21681da)
- JS error in @axe-core/react caused by stale reference to heading (b7094c8)
- Remove unnecessary files from npm package (#3054) (7600b7c)
- meta-viewport: test that a user-scalable number does not prevent zoom (b3562fb)
- region: contents in iframes should pass the region rule if the iframe itself is in a region (#2949) (43145d6)
- required-parent: Allow *item > group > *item nesting (#2898) (59b4a7e)
- SerialVirtualNode: properly handle empty string attributes (#3042) (dddbc0a)
- sri-history: add backported releases (#3004) (6eecf34)
- treat input with no role as textbox (#2929) (13d909d)
- types: make
evaluate
check optional (#2902) (417f572)
4.2.4 (2021-10-22)
4.2.3 (2021-06-22)
- accText: ignore text in embedded content elements (#3022) (8fb4635), closes #3017
- color-contrast: add special case for new sr-only technique (#2985) (79cbf01)
- color-contrast: check for pseudo elements on element itself, not just parents (#2980) (3122550)
- frame-tested: run without respondable (#2942) (a1d725d)
- publish-metadata: use fail message for rules with reviewOnFail:true (#2987) (00fefa9)
- sri-history: add backported releases (#3004) (0332e80)
4.2.2 (2021-06-03)
- aria-allowed-attr: allow aria-posinset and aria-setsize on row elements for treegrids (#2952) (3023e69)
- heading-order: Prevent crash on page with iframes but no headings (#2965) (4b7db37)
- meta-viewport: test that a user-scalable number does not prevent zoom (048c5c1)
- JS error in @axe-core/react caused by stale reference to heading (3afda4e)
4.2.1 (2021-05-18)
- aria-allowed-attr: pass aria-label on some HTML elements (#2935) (695aa77)
- treat input with no role as textbox (#2929) (de18030)
- autocomplete-appropriate: pass for autocomplete=username and type=email (#2896) (8b478c8)
- getStandards: Read standards from utils (#2903) (52ad4c6)
- required-parent: Allow *item > group > *item nesting (#2898) (3acd229)
- types: make
evaluate
check optional (#2902) (75fabfe)
4.2.0 (2021-04-23)
- add axe.frameMessenger with configurable allowedOrigins (#2880) (b27bab3)
- aria-allowed-attr: add ARIA 1.2 prohibited attrs check (#2764) (4a77e88)
- empty-table-header: new rule to flag empty table headers (#2811) (813ee7e)
- frame-focusable-content: new rule to test iframes with tabindex=-1 do not have focusable content (#2785) (aeb044c)
- locale: missing translations for DE (#2704) (f312994)
- locale: Polish translation (#2677) (c46979f)
- nested-interactive: new rule to flag nested interactive elements (#2691) (13a7cf1)
- role-text: add role-text rule (#2702) (7c05162)
- setup/teardown: add functions to setup and teardown axe-core internal data, deprecate axe._tree (#2738) (9d19f24)
- standards: add graphics roles (#2761) (22032cc)
- standards/aria-roles: add presentational children property (#2689) (78c239c)
- utils.getRule: add function to get rule by id (#2724) (9d0af53)
- utils/matches: support selectors level 4 :not and :is (#2742) (21d9b0e)
- virtual-node: add attrNames property which returns list of attribute names (#2741) (1d864b4)
- aria-allowed-attr: error when generic elements use aria-label and aria-labelledy (#2766) (64379e1)
- aria-required-children: allow group and rowgroup roles (#2661) (5a264e4)
- aria-required-children: only match for roles that require children (#2703) (95de169)
- aria-valid-attr-value: pass for aria-errormessage when aria-invalid is not set or false (#2721) (93a765c)
- aria-valid-attr-value: report when aria-labelledby ref is not in DOM (#2723) (116eb06)
- aria-valid-attr-value: return false when int type attribute uses invalid values (#2710) (ce9917e)
- bypass: mark as needs review rather than failure (#2818) (bb41b3e)
- focus-order-semantics: allow role=tooltip to pass (#2871) (dc526d8)
- heading-order: handle iframe as first result (#2876) (33428d8)
- respondable: Avoid message duplication with messageId (#2816) (4bd0acf)
- respondable: work on iframes in shadow DOM (#2857) (38cad94)
- avoid 'undefined' showing in check messages (#2779) (3beb0b1)
- properly translate checks when building axe.js using --lang (#2848) (76545b0)
- aria-required-parent: only match for roles that require parents (#2707) (ce8281e)
- color-contrast: account for text client rects that start outside the parent container (#2682) (a4e4a34)
- color-contrast-matches: do not pass empty string to getElementById (#2739) (0b0fec2)
- frame-title: update rule description to be more descriptive (#2735) (159e25b)
- heading-order: allow partial context to pass (#2622) (f8baee6)
- landmark-complementary-is-top-level: allow aside inside main (#2740) (9388c96)
- metadata: consistenct use of 'must' and 'should' (#2770) (603b612)
- region: allow role=alertdialog as region (#2660) (b928df7)
- select-name: fix typo in accessible name help (#2676) (6b916b9)
- to-grid/get-headers: work with rowspan=0 (#2722) (508190b)
- types: Add noHtml option (#2810) (c03c826)
- utils: fix warning thrown by Webpack (#2843) (0826177), closes #2840
- utils: remove attributes from source string (#2803) (8e8c4fa)
- add noHtml to axe.configure (#2789) (5c8dec8)
- do not allow postMessage with axe version of x.y.z (#2790) (5acda82)
4.1.4 (2021-04-01)
- respondable: work on iframes in shadow DOM (#2857) (65cbfd0)
- utils: fix warning thrown by Webpack (#2843) (df5d01b), closes #2840
4.1.3 (2021-03-04)
- respondable: Avoid message duplication with messageId (#2816) (9b6eb59)
- types: Add noHtml option (#2810) (8bc0bae)
4.1.2 (2021-02-08)
- add noHtml to axe.configure (#2789) (6e23eb0)
- do not allow postMessage with axe version of x.y.z (#2790) (8b1671d)
4.1.1 (2020-11-19)
- remove axios import (#2653) (2d20cde)
- color-contrast: greatly improve color-contrast-matches speed. add aria/get-accessible-ref (#2635) (ba174bd)
4.1.0 (2020-11-13)
- new-rule: check that treeitem role has an accessible name (#2615) (5e95153)
- Add aria-dialog-name (#2609) (b0e14b0)
- aria-toggle-field-name: add option role (#2605) (0af0551)
- checks: deprecate role-none and role-presentation for presentational-role (#2503) (cef54a0)
- get-role: add noPresentational option (#2549) (4f39299), closes #1792
- imports: deprecate axios (#2542) (82d43a0)
- label,select-name: allow placeholder to pass label rule, add select-name rule (#2448) (1315f8e)
- new-rule: ARIA links, buttons, menuitems have an accessible name (#2571) (9476a1f)
- new-rule: aria-tooltip-name (#2548) (d00f378)
- new-rule: check that meter role has an accessible name (#2607) (3ca2f04)
- new-rule: check that progressbars have an accessible name (#2555) (dd0b44a)
- presentation-role-conflict: create rule to flag elements with role conflict resolution (#2440) (e4edffc)
- rule-matches: depreacte window-is-top-matches for is-intiator-matches (#2531) (db2be93)
- standards: add superclassRole to ariaRoles (#2600) (a5e9ce0)
- standards: add superclassRole to dpubRoles (#2606) (1b66930)
- utils: deprecate get/set-scroll-state (#2581) (3c4827f)
- valid-langs: deprecate validLangs, add isValidLangs, reduce file size (#2527) (8a699ec)
- commons/get-text-element-stack: account for newline characters when text is larger than container (#2631) (3c2429b)
- Update ACT rule tags (#2625) (c640d4f)
- aria-errormessage: allow aria-live="polite" on aria-errormessage target (926b6a8)
- aria-errormessage: allow aria-live=polite on aria-errormessage target (#2597) (0d5cfb1)
- aria-roles: add group to menuitemradio context (#2518) (52b89f1)
- aria-roles: Add WAI-ARIA 1.2 roles (#2544) (635b084), closes #2107 #2107 #2107 #2107
- attr-non-space-content-evaluate: Split no attribute and empty attribute message (#2495) (5f822f4)
- audit: updated axe.reset() to reset branding, application, and tagExcludes. (#2537) (828864b)
- autocomplete-valid: allow type=tel for appropriate cc types (#2575) (ae21713)
- checks/aria: Mark elements missing from aria-errormessage for review (#2550) (8f9a035), closes #2460
- color-contrast: allow small text shadows to serve as text outline (#2627) (432e1f3)
- color-contrast: mark elements with pseudo content as needs review (#2613) (fcdbdbc)
- color-contrast: properly handle scrolling text (#2619) (984e7e2)
- docs/rules: add missing category tags to rules metadata (#2569) (285c442), closes #2554
- explicit-label: work with multiple labels (#2573) (d26f106)
- get-headers: fix for rowspan and colspan (#2545) (3f02d14)
- heading-order: evaluate headings from iframes in DOM order (#2572) (46f6628)
- implilcit-role: use type property instead of attribute to resolve input role (#2547) (35e853d), closes #2514
- link-name: pass landmark content as link text (#2617) (e77992e)
- name-rules: ignore when explicit roles don't require a name (#2629) (52fb138)
- region: allow role=dialog and svg elements outside regions (#2586) (fab58d4)
- region: treat iframes as regions (#2614) (936db81)
- rule: add check node to the check result object (#2608) (b188911)
- scrollable-region-focusalbe: do not fail for combobox pattern (#2601) (ac71a57)
- deprecate aria-form-field-name-matches for no-name-method-matches (#2584) (8be89e3)
- do not allow fallback content for objects (#2525) (486eafe)
4.0.2 (2020-09-08)
- color-contrast: dont error for floating element (#2444) (45eb746)
- i18n: proofreading of the french translations (#2485) (ebd0407), closes #2484
- implicit-role: return gridcell for td child of grid or treegrid (#2501) (0553d4d)
- label: pass when role none or presentation (#2464) (1d3c2fc), closes #2458
- link-name: fix regression where link was not named from title attribute (#2492) (b86c73b)
- required-parent: fail if intermediate role is not the required parent (#2494) (522865c)
- svg-non-empty-title: update fail message to indicate if the title element is empty or missing (#2462) (9598656), closes #2452
- valid-lang: fail when lang attribute contains only whitespace (#2504) (8455a7f)
4.0.1 (2020-08-04)
4.0.0 (2020-07-28)
The following rules were deprecated in axe-core 3.x, and are removed in 4.0:
- aria-dpub-role-fallback
- checkboxgroup
- layout-table
- radiogroup
- video-description
The following checks were deprecated in axe-core 3.x, and are removed in 4.0:
- aria/implicit-role-fallback
- forms/fieldset
- forms/group-labelledby
- media/description
- tables/has-caption
- tables/has-summary
- tables/has-th
- add layout-table-matches method (#2400) (d7ba70f)
- aria/get-roles-by-type: deprecate in favor of standards/get-aria-roles-by-type (#2362) (c0c37ea)
- aria/lookupTable, aria-allowed-attr: deprecate aria.lookupTable and passing allowed attributes to aria-allowed-attr (#2395) (739d1b1)
- avoid-inline-spacing: add option for which css properties to look at (#2244) (93c027a)
- checks: normalize check options to alway be an object (#2219) (da12da7)
- checks,rules: remove deprecated checks and rules (#2214) (317545a)
- closest: VirtualNode implementation of Element.closest. Deprecate commons.dom.findUp and commons.dom.findUpVirtual (#2139) (493dd22)
- color-contrast, utils: add more options to color-contrast, add utils.deepMerge, deprecate commons.color.hasValidContrastRatio (#2256) (49fdb46)
- commons/aria: deprecate getRole({ noImplicit }) for getExplicitRole() (#2294) (a2873ea)
- commons/standards: create the commons/standards object for helper functions against the standards table (#2358) (6dce974)
- duplicate-img-label: add option for parentSelector (#2216) (8906806)
- get-role: add presentation role resolution and inheritance (#2281) (e207190)
- get-role: work with standards object (#2367) (1b20faf)
- globals: deduce required window and document globals from context (#2308) (61bac69)
- has-descendant, page-no-duplicate: move page-has-elm and page-no-duplicate to generic check (#2229) (59125a0)
- has-lang: add option for which attributes to look at (#2239) (e69c46a)
- has-text-content: add generic check has-text-content (#2234) (60ddc65)
- i18n: add Basque (eu) translation (#1964) (176cf82)
- matcher: allow regex string to be parsed as regex (#2324) (321b2d1)
- matches: add explicitRole, implicitRole, and semanticRole matches functions (#2286) (30efbff)
- matches-definition: add generic check matches-definition (#2233) (20467aa)
- metadata-function-map: add metadata function map to support check evaulate functions as an id string (#2162) (ec9b931)
- non-space-content: switch all non-empty checks to new generic check (#2215) (7ce7b00)
- object-alt,accessible-text: object-alt rule and accessible text to work with serial virtual nodes with children (e8e17e4)
- options: add ancestry CSS selector to nodes (#2389) (f2cccf5)
- region: add option to match nodes as region (#2249) (b544554)
- required-attrs: deprecate options to pass more required attrs (797ee34)
- rule: add reviewOnFail option to have rule return as needs review instead of violation (#2235) (bb72acd)
- rule: optional impact on rules (#2393) (e48c1eb)
- scope-value: add options for valid scope values (#2245) (44269ec)
- standards: add ariaRoles standard (#2328) (70efbc0)
- standards: add dpub-roles spec (#2332) (7ec3185)
- standards: add get-aria-roles-supporting-name-from-content and deprecate aria/get-roles-with-name-from-content (#2363) (240b528)
- standards: add get-elements-by-content-type and implicit-html-roles (#2375) (f1e0848)
- add "ACT" tag for published W3C ACT rules (#2382) (cf11b64)
- standards: add html-elms spec (#2333) (1d6a888)
- standards: create standards object and ariaAttrs (#2315) (48610de)
- utils.getFlattenTree: default to documentElement (#2260) (8b14ccc)
- valid-lang: add option for which attributes to look at (#2240) (ffee19e)
- update SC tags for
label
rule (#2037) (c7113fc)
- accessible-name-virtual: allow subtree text to work with virtual and serial nodes (#2346) (67d2dca)
- api: correct use of rules property in axe.run (#2278) (1fd9e11)
- aria-allowed-attr: Add aria-orientation to radiogroup role (#2322) (5e1f922)
- aria-allowed-attr: allow aria-activedescendant on role=application (#2304) (2554f5c)
- aria-allowed-role: Add fieldset to allowed elements for radiogroup (#2326) (a5409d4)
- aria-allowed-role: allow role=presentation on hr (#2300) (b524ea9)
- aria-lablledby: work with virtual and serial virtual nodes (#2341) (c1f3db7)
- aria-toggle-field-name: work with virtual nodes (#2353) (e5fb01e)
- aria/allowed-attr: work with standards object (#2360) (40397f5)
- aria/get-role-type: work with standards object (#2361) (a61e314)
- autocomplete: allow all 'tel-*' autocomplete values on type=tel (#2307) (58c8175)
- button-name: work with serial virtual node (#2351) (efa0e56)
- bypass: find headings in iframes (#2310) (7c23dbd)
- color: allow all valid CSS colors (#2381) (63d69ea)
- color-contrast: account for text-shadow (#2334) (3eb6d2c)
- color-contrast: ignore aria-disabled labels (#2130) (e451b87)
- color-contrast: properly handle truncated text (#2302) (a56190c)
- dlitem: allow role=presentation on parent dl (#2301) (9857978)
- focusable-no-name: work with serial virtual nodes (#2399) (1ef3066)
- forms/*: allow all form control value checks to work with virtual nodes (#2343) (8ad41af)
- header-present: fail for headings with non-header role (#2306) (b8ffb39)
- html-namespace-matches: work with serial virtual nodes (#2398) (18c22fd)
- implicit-roles: add proper implicit role calculation (#2242) (e9dd259)
- input-button-name: work with virtual nodes (#2352) (63ca388)
- is-valid-autocomplete: allow autocomplete="one-time-code" (#2336) (638346f)
- label: work with virtual nodes (#2354) (44b033c)
- page-has-h1: allow aria-level=1 on native headings (#2349) (70b10b2)
- rule: allow impact to be configured (#2426) (f325c75)
- rule,check: allow function ids for matches property in rule.configure (#2423) (3ccb781)
- run: cleanup globals if set from context (#2387) (d5b6931)
- svg-image-alt: work with serial virtual nodes (#2397) (e2537ef)
- types: Allow
impact
to benull
(#2321) (757aacd), closes #2313 - types: Make any tag allowed (#2314) (5d98a04), closes #2312
- typings: update types file (#2425) (0aab922)
- virtual-node: default and lowercase type property (#2350) (f6b3484)
- ensure correctly generated axe is required by
aria-supported
build step (#2295) (1414a9f) - aria-required-attr: pass aria-checked for elements with checked property (#2226) (64318a5)
- axe.d.ts: add
element
to NodeResults (#2211) (2429355) - color-contrast: mark more punctutions for review (#2126) (dc98afc)
- duplicate-id: list the duplicate id in message (#2163) (f5d4ff9)
- required-children: consider overriding descendant role(s)… (#2131) (e1c11dd)
- scrollable-region-focusable: pass for elements with contenteditable (#2133) (1012dfe)
- th-has-data-cells: fail when only cell points to different header (2d420c3)
- types: Add "wcag21aa" and "wcag21a" to our TS definition (#2272) (23674d4)
- types: Add missing properties to
Spec
(#2273) (c39ba9f)
3.5.5 (2020-06-16)
- aria-input-field-name: add the missing word must to help metadata (b0f5562)
- color-contrast: fix font-weight calculation for safari (205b587)
- configure: validate rules and checks properties (8c91ead)
- is-visible: return false for opacity: 0 and 0 height scrollable regions (86ada3f)
- listitem: do not fail for parent with role=presentation|none (a3ddc6e)
- meta-viewport: don't throw error if viewport property doesn't have a value (2176794)
3.5.4 (2020-05-22)
- get-element-stack: properly calculate position of children of floated elements (28a8c58)
3.5.3 (2020-03-31)
- meta-viewport: parse negative and string values for
maximum-scale
(#2137) (8c92472) - respondable: ignore reflected messages from iframes (#2134) (3ab9f21)
- header-present: update verbiage to use heading instead of header (#2132) (8890063)
- color-contrast: mark more punctuations for review (#2126) (dc98afc)
- unicode: detect supplementary private use area A (#2102) (f1739c2)
- definition-list: Mention
- td-headers-attr: mark as needs review if headers attr is empty (#2096) (699b566)
- td-has-headers: don't fail for empty headers attribute (#2095) (7952a37)
- th-has-data-cells: fail when data cell points to a different header (#2094) (d3bd416)
- has-lang: update message to indicate that xml:lang is not valid on HTML pages (#2093) (c3a7de2)
- page-no-duplicate-contentinfo: do not fail when first element is inside landmark (#2092) (eca7e05)
3.5.2 (2020-03-06)
- aria-allowed-role: allow role=spinbutton on inputtype=tel
- color-contrast: ignore form elements that move text outside of node using text-indent (#2044) (85cc6ab)
- commons: handle node(s) contained by SVG document when de… (#2054) (bf4c9bf)
- getCheckMessage: add API to return check message (#2066) (e216322)
- has-lang: fail check when
xml:lang
is used in HTML docum… (#2053) (e07aaea) - label-content-name-mismatch: ignore non
widget
aria role(s) & do not use deprecatedlookupTable.rolesOfType
(#2022) (89bd84c) - package-lock: change @deque/doT from agora to npm (#2058) (c03c0e5)
- page-has-heading-one: find screen-reader only headings (#2065) (f808a12)
- region: ignore direct child text nodes of body (#2050) (fde31d0)
- skip-link: identify as skip-link only if the link is offscreen (#2079) (241e1d0)
- check
invaildrole
fails only when all roles are invalid (#2075) (989b317) - ignore empty, whitespace or undefined
role
for rule `ari… (#2077) (dbd3c02) - update tags for rule
area-alt
(#2051) (7db231f)
3.5.1 (2020-02-12)
- color-contrast: parse font-weight value as number (#2031) (#2040) (0bb2166)
- color-contrast: properly pass options to check (#2033) (26b99c0)
- commons: avoid unicode regex encoding in axe.min.js (#2024) (ae90dc4)
- sri-history: correct SRI for various versions (#2041) (940c017)
3.5.0 (2020-02-04)
- aria-dpub-role-fallback: depreacte aria-dpub-role-fallback and move into aria-allowed-role (#1899) (8e25c20)
- aria-label: deprecate Element arg; use virtualNode (#1922) (d14981c)
- audit: allow runOnly option to accept an array of rules (#1889) (38d6a3f)
- color-contrast: greatly improve performance for very large sites (#1943) (9ea0065)
- core: add preload configuration option for media files (#1958) (8a62649)
- core/reporters/v1: Add failureSummary to incomplete results (#1972) (c88883d)
- get-element-stack: performant api to replace document.elementsFromPoint (#1842) (9ae07fb)
- i18n: add Danish (da-DK) translation (#1876) (fb6fc41)
- landmark-no-duplicate-*: add rule landmark-no-duplicate-main, don't use html as element source for all duplicate rules (#1949) (5ec7894)
- layout-table: deprecate layout-table rule and checks (#1885) (d22cb30)
- matches: use VirtualNode and deprecate HTMLElement (#1988) (2600a06)
- rule: add color-contrast check for unicode characters, behind flags. (#1969) (0cd4037), closes #1906
- rule: identical-links-same-purpose (#1649) (9c73f62)
- rule: no-autoplay-audio (#1946) (b2373cb)
- svg-img-alt: rule for when svg needs a title (#1953) (9491e09)
- deprecate the use doT.js for messages (#1938) (a2ddba3)
- color-contrast: properly pass options to check (#2033) (26b99c0)
- commons: avoid unicode regex encoding in axe.min.js (#2024) (ae90dc4)
- add tags with dots for wcag sc (#1849) (2f1ab36)
- compute orientation lock from various transformation func… (#1937) (c987de0)
- ignores axe.ping responses that do not contain axe=true (26cb1fb)
- input[role=button][value='correct'] should pass (#1897) (4635fef)
- remove heading from list of widget roles (#1882) (a8cbf71)
- link-name: test role=link when there is no href (#1921) (6db28bc)
- remove isNaN check (#2010) (5359b3f)
- aria-allowed-attr: allow aria-details (#1956) (79e1c58)
- aria-allowed-role: allow role combobox on input tel, search, url, and email (#1850) (ba75961)
- aria-hidden-focus: mark as needs review if a modal is open (#1995) (28a3553)
- aria-required-children: allow comboboxes with more popup roles (#1950) (35a24c0)
- aria-roles: report error for fallback roles (#1970) (a1b7e08)
- aria-valid-attr-value: mark as needs review for aria-current with invalid value (#1998) (39b8eae)
- axe.d.ts: RunOnly.values should not accept a RunOnlyOption (#1888) (b68aa19)
- build: add lang query parameter to helpUrl when builing with a locale (#1909) (8c5f9ef)
- color-contrast: improve speed and accuracy of code blocks with syntax highlighting (#2003) (1b6ab42)
- color-contrast: mark as needs review for text that contains only non-BMP characters (#2005) (e559be0)
- color-contrast: support IE extension context (#2008) (62e31ea)
- color-contrast: take into account parent opacity for foreground color (#1902) (8719700)
- getElementStack: do not add hidden elements to the stack (#1991) (759d88d)
- is-focusable: use tabindex attribute instead of property (#1912) (042a148)
- is-icon-ligature: ignore whitespace characters (#1908) (7d2b2a6)
- is-ligature-icon: rename canvas to canvasContext (#1880) (de9885d)
- isFocusable: return true for summary element and false for details element with summary child (#1957) (34ec2d7)
- listitem: clarify that li elements must be contained in a list or role=list (#1894) (6d8cfee)
- locales: fix incompeteMessageFallback to be a string rather than an object (#1853) (88677a9)
- meta-viewport: mark as a best-practice rule instead of wcag failure (#1960) (766f962)
- only-listitem: add message about invalid role on li elements (#1954) (c3049ab)
- page-has-main: do not find hidden elements (#2001) (6429e60)
- page-no-duplicate-main: do not fail for duplicate hidden elements (#2000) (414dfb1)
- preload: reject promise
axe.utils.preload
when XHR fails (#2009) (b406b1f) - region: allow content in roles with implicit aria-live (#2002) (a8d829e)
- region: return outermost regionless node instead of html (#1980) (8d77be2)
- region-rule: allow live regions with explicit roles (#1999) (b49bd95)
- run: throw error if axe.run is called after a run has started but not completed (#1914) (3252a02)
- server-side-image-map: return as needs review rather than failure (#1898) (d544856)
- tabindex: don't error when tabindex property is overridden (#1910) (6b82a4c)
- td-has-headers: greatly improve performance of td-has-headers rule (#1887) (a550309)
- removes flaky test in axe Pro api check (b2bdcd1)
- typings: add proper return value to getRule (#1900) (4d907f8)
- unicode: stop parsing escaped unicode strings (#1997) (7447d03)
3.4.2 (2020-02-04)
- color-contrast: support IE extension context (#2008) (cd651a0)
- unicode: stop parsing escaped unicode strings (#1997) (523a31c)
3.4.1 (2019-12-11)
- ignores axe.ping responses that do not contain axe=true (7d8aa42)
- input[role=button][value='correct'] should pass (#1897) (3aba02c)
- remove heading from list of widget roles (#1882) (beb458f)
- listitem: clarify that li elements must be contained in a list or role=list (#1894) (8fa0964)
- removes flaky test in axe Pro api check (f2b3b54)
- aria-allowed-role: allow role combobox on input tel, search, url, and email (#1850) (75d3c8b)
- axe.d.ts: RunOnly.values should not accept a RunOnlyOption (#1888) (94b1466)
- build: add lang query parameter to helpUrl when builing with a locale (#1909) (a2f0247)
- color-contrast: take into account parent opacity for foreground color (#1902) (639c41b)
- is-focusable: use tabindex attribute instead of property (#1912) (aa5314d)
- is-icon-ligature: ignore whitespace characters (#1908) (77fc838)
- is-ligature-icon: rename canvas to canvasContext (#1880) (604ba4f)
- link-name: test role=link when there is no href (#1921) (e839c57)
- locales: fix incompeteMessageFallback to be a string rather than an object (#1853) (02a1d8a)
- run: throw error if axe.run is called after a run has started but not completed (#1914) (290d125)
- server-side-image-map: return as needs review rather than failure (#1898) (ce73af9)
- tabindex: don't error when tabindex property is overridden (#1910) (e6875ee)
- td-has-headers: greatly improve performance of td-has-headers rule (#1887) (a588cad)
- typings: add proper return value to getRule (#1900) (0d7c3d2)
3.4.0 (2019-10-18)
- aria-allowed-attr: allow 'aria-readonly' on listbox (#1825) (15f5d2d)
- aria-form-field-name-matches: don't test combobox elements when they have a child input (#1742) (f0be6dc)
- aria-required-children: allow combobox to own a searchbox (#1708) (42158ac)
- aria-required-children: allow reviewEmpty nodes to have empty children (#1791) (a5d727c)
- aria-valid-attr-value: fix incomplete translation message (#1739) (a0f3eef)
- color-contrast: ignore nodes that don't contain text (#1837) (223a4bc)
- color-contrast-matches: don't check aria-disabled explicit label element (#1741) (5bb566f)
- configure: use translations for failure summaries (#1808) (5e53d7b)
- flatten-tree: do not call deprecated getDistributedNodes (#1729) (46a5d11)
- form-field-multiple-label: incomplete rather than fail for multiple labels (#1798) (0bdaa2b)
- get-background-color: scroll element into view horizontally (#1845) (50df70a)
- get-selector: don't throw error for disconnected fragment (#1802) (bb6591b)
- label-content-name-mismatch: ignore ligature fonts (#1829) (683e005)
- allows all roles on img tag with no alt attribute (929085a)
- replace incorrect tag for meta-refresh rule (#1844) (754d56b)
- update tags to wcag21aa for rule avoid-inline-spacing (#1757) (973d48f)
- label-content-name-mismatch: ignore private space unicode (#1822) (b634c34)
- scrollable-region-focus: ignore scrollable regions without content (#1788) (b36754e)
- utils: Fix error in IE when getting scroll state on page with SVG elements. Closes #525 (#1820) (9a32f6f)
- audit: add lang query paramenter to help urls (#1794) (2d1c8a6)
- configure: accept ver property as axeVersion fallback (#1812) (4ebcde8)
- configure: add axeVersion property that checks compatibility of axe.version (#1793) (18fb8c8)
- fieldset, group-labelledby: deprecate fieldset and group-labelledby checks (#1740) (ec9b762)
- i18n: add spanish translation (#1758) (e9f821d), closes #1757
- Add axe.utils.assert method (2f10d24)
- is-visible: add support for clip-path techniques (#1706) (8ab262a)
- radiogroup, checkboxgroup: deprecate radiogroup and checkboxgroup rules (#1640) (6d30880)
- Add SerialVirtualNode class (82d01b0)
- pt_BR localization (#1756) (330e2ec)
- rule: aria-roledescription (#1745) (16682fd)
- runVirtualNode: Allow serialised nodes experimental
- video-description: deprecate video-description rule (#1737) (e91c25f)
3.3.3 (2020-02-04)
- color-contrast: support IE extension context (#2008) (cd651a0)
- unicode: stop parsing escaped unicode strings (#1997) (523a31c)
3.3.2 (2019-08-12)
- aria-form-field-name-matches: don't test combobox elements when they have a child input (#1742) (5ac278f)
- aria-valid-attr-value: fix incomplete translation message (#1739) (6909604)
- flatten-tree: do not call deprecated getDistributedNodes (#1729) (48ddf9d)
- update tags to wcag21aa for rule avoid-inline-spacing (#1757) (f534a6b)
3.3.1 (2019-07-23)
- accessible-text-virtual: sanitize attributes on start node (#1694) (c0bb08c)
- axe.d.ts: add optional xpath property to NodeResult (#1642) (287ef9c)
- get-background-color: No longer calculate color from non-opaque overlapping element (#1644) (d45f81e)
- get-background-color: No longer calculate color from non-opaque overlapping elm (f1c2310)
- get-background-color: process tbody, thead, and tfoot when getting background color (#1653) (e114bfd)
- enable running axe-core in strict CSPs (#1707) (cc5bd59)
- image-redundant-alt: check for parent before calculating text (#1705) (1adbd02)
- th-has-data-cells: empty cells will now pass (#1659) (c7489ab)
- types: add new properties to RunOptions (#1697) (02aa36c), closes #1696
- valid-attr-value: allow aria-describedby to return needs review (#1671) (2390925)
- color-contrast: add px unit to error messages (#1634) (1712e46)
- examples: do not fail tests if deque.com has violations (#1686) (2118360)
- ensure locale files are valid (#1673) (588f9b5)
- require new release rule help docs to be active before creating release (#1700) (e9f9c18)
3.3.0 (2019-07-08)
- add SC 131 to rule aria hidden focus (#1474) (8da9a0d)
- Add treegrid as allowed parent to rowgroup (#1435) (94e9893), closes #1386
- arguments for gather function in build template (#1605) (753ecf4)
- check if property exists in cache of flattenedTree (#1536) (51c2e19)
- aria-valid-attr-value: allow aria-owns to pass when element is not in the DOM (#1526) (f835ed8)
- deprecate na reporter (#1625) (3e807f0)
- Exclude iframe for html-has-lang rule (Issue 1424) (#1430) (98b5ed2)
- Include body as part of background color checks when element does not intersect (#1520) (55820cf)
- make nullable impact properties have nullable types to match API docs (#1477) (efaed91)
- Only load Promise polyfill if window.Promise is missing [#1468](<#1470>) (1d70306)
- Prevent error when using
<select name="attributes">
[#1397](<#1432>) (b477e0d) - remove unnecessary comments (6ed71c9)
- role=radio should not require aria-checked (#1448) (0643cbd)
- Scroll state had top and left properties flipped (#1469) (2ba83d3)
- skip-link,region: Allow multiple skiplinks at page top (#1496) (642c8f1)
- use execa instead of child_process.spawn (461ce83)
- aria-allowed-attr: allow figure role (#1558) (a4b5240)
- aria-required-attr: allow aria-valuenow to pass on elements with value (#1579) (3893e04)
- aria-required-attr: don't require aria-valuemin/max (#1529) (80ae444)
- aria-valid-attr-value: allow aria-controls to pass when element is not in the DOM (a7842e5)
- flatten-tree: do not call deprecated getDistributedNodes (#1577) (93d59f4)
- image-redundant-alt: prevent redundant issues of image tree (#1616) (af81897)
- isSkipLink: cache first page link (#1525) (6a1bcba)
- matches-selector: don't call matches function if none exist on the element (#1613) (7581592)
- multiple-label: considers explicit labels in the same shadow tree (#1584) (b9a324a)
- multiple-label: no longer raises issue when aria-labelledby overrides how AT views multiple labels (#1538) (fbae36b)
- prettier: ignore generated api doc files (#1522) (c118da0)
- raw-reporter: do not output
DqElement
s (#1513) (3babcb6) - scrollable-region-focusable: exclude overflow:hidden as not scrollable (#1599) (940de07)
- utils: make cache global instead of only setup in axe.run (#1535) (91a04c5)
- virtual-node: fix hasClass to work with svg elements (#1603) (9d83662)
- autocomplete-matches: use virtualNode only lookups (#1604) (b32d4fe)
- autocomplete-valid: allow autocomplete-valid to be run entirely off of a virtual node (#1591) (b3e0873)
- qsa, flatten-tree: abstract Node and Element apis in virtual tree (#1562) (2f2e590)
- reporter: adds the rawEnv reporter which wraps raw and env data (#1556) (ed15ed3)
- role-img-alt: Split rule for role=img with no accessible name (#1586) (2416ed3)
- rule: add additional elements to check for incomplete with required children (#1547) (3726901)
- rule: add more perf timing metrics to rules (#1472) (98646e5)
- rule,check: add new apis to run a rule synchronously (#1467) (84094a1)
- add AbstractVirtualNode for linting (#1627) (a072ed2)
- rule: Adding landmark-is-unique rule (#1394) (0088e94)
- rule: Inline text spacing must be adjustable with custom stylesheets (#1446) (430b07f)
- Improve perf of axe.run WWD-1821 (a84431a)
- rule: New aria-input-field-label rule (#1610) (73d5273)
- rule: New aria-toggle-field-label rule (#1450) (69a9c3b)
- rule: Scrollable region focusable (#1396) (861371a)
- rules: split button name rule into button only and button input rules (#1615) (ce20fbf)
- run-virtual-rule: new api to run rules using only virtual nodes (#1594) (4e12217)
- utils: add support for complex CSS selectors (#1494) (a9f9ee5), closes #1493
- utils: Update CSSOM for nested @import computation (#1339) (a4e177b)
- createHTMLDocument needs mandatory title when invoked in IE (#1442) (8542773)
- disable es6 syntax usage within tests directory (#1569) (9b13508)
- fix flakey test (#1573) (fb38ce7)
- Fix invalid test html (#1502) (8d85082)
- fix test for Safari (#1557) (1bac69e)
- fix tests failing in IE11 (#1570) (2102eca)
- only run IE11 tests in appveyor (#1571) (35261ef)
- watch integration html and json files (#1598) (3de0b05)
3.2.3 (2020-02-04)
- color-contrast: support IE extension context (#2008) (cd651a0)
- unicode: stop parsing escaped unicode strings (#1997) (523a31c)
3.2.2 (2019-03-07)
3.2.1 (2019-03-06)
3.2.0 (2019-03-04)
- aria-allowed-role: Allow iframe role=none (a4fa44d)
- color-contrast: Prevent crash on large inline elments #1306 (#1341) (e1bcafc)
- commons: Allow any node in aria.getRole (#1258) (26fa49a), closes #1163
- i18n: Fix and add Japanese translation (#1368) (74fa0a4, #1291) (f450176, #1332) (0a03c8f, #1107) (8138e55)
- messages: Change messages from "page" to "document" where appropriate (#1156) (49dff2b), closes #983 #983
- rule: Frame-title applies to wcag242 (#1312) (9225ae0)
- rule: Prevent th-has-data-cells from crashing on empty rows (#1285) (88017be)
- typedefs: Do not require brand and application (#1264) (59465dc), closes /github.com/dequelabs/axe-webdriverjs/blob/v2.0.1/lib/axe-injector.js#L28
- Add Banner comment in generated axe files (#1112) (e4788bf)
- Allow div groups for dlitem rule (#1284) (d76cd36)
- Allow role presentation and none on object-alt rule (#1224) (d475a17)
- Avoid IE problems by using nodeName instead of tagName (#1219) (cf86ff5)
- Better unsupported attribute support for aria-roledescription (#1382) (93f721e), closes #1216
- Consider element's accessible names when labels are hidden (#1187) (b91b624), closes #1176
- Correct autocomplete appropriate to handle state terms (#1121) (35a4d11)
- Correct autocomplete street address (#1217) (27fce9d)
- Correct autocomplete-appropriate node type resolution (#1318) (2fc3eeb)
- CSSOM generation for shadowRoot in Safari (#1113) (a51ae03)
- Don't flag invalid roles in unsupportedrole (#1328) (2dfcbaa)
- Escape href attribute when generating a CSS selector [#1137](<#1366>) (0c2f42d)
- Flag hidden elms with disallowed role(s) for review (#1225) (bdff141)
- Handle noscript and template in dom.isVisible (#1257) (e67fc65)
- html-lang-valid should consider xml:lang (#1152) (4279c72)
- Ignore invalid and allow redundant role in aria-allowed-role (#1118) (a0f9b31)
- Introduce dom.isHiddenWithCSS for use in dom.isFocusable (#1211) (2cff417)
- Log instead of error on unknown tag (#1290) (f82d773)
- Prevent TypeErrors in color-contrast checks (#1320) (a34165c), closes #1306 #1259
- Respect preload set to false (#1298) (e847d38)
- Set preload:true as default (#1281) (c9731c8)
- Support skiplinks starting with "/#" (#1286) (f93c0c9)
- Update SC to wcag134 for CSS Orientation Rule (d3f90df)
- commons: Add matches methods (#1270) (986c97a), closes #1163
- image-alt: require alt text or empty strings (#1260) (e24cea9)
- new-rule: New aria-hidden-focus rule (#1166) (4489965)
- new-rule: Separate form-field-multiple-label from label rule (#1226) (0e0063c)
- new-rule: Label and Name from Content mismatch WCAG21 (Issue #1149) (#1335) (a4255da)
- rule: Require unique aria labels in checkboxgroup & radiogroup (#1316) (c9b310d)
- Add a reference to the
node
a rule failed on (#1321) (68741de), closes #1317 - Add allowEmpty option for aria-valid-attr-value (#1154) (89d18d0), closes #994
- Add environment details to results (#1353) (e795f7d)
- ARIA supported checks (#1254) (51a18a8), closes #918
- New rule landmark-complementary-is-top-level (#1239) (328ca2c)
- Pass context argument to rule matches (#1370) (b374669)
- Rebuild the accessible text algorithm (#1163) (5f420e5)
- Tag review-items rule as 'best-practice' (#1344) (05f37de)
- Defer rules rather than checks (#1308) (80c1c74), closes #1172
- Speed up getNodeFromTree (#1302) (5f834ed)
- Update performanceTimer end mark for rules (#1303) (a28674e), closes #701 #1172
3.1.2 (2018-09-07)
- i18n: Update Japanese locale (#1107) (8138e55)
- autocomplete appropriate to handle state terms (#1121) (35a4d11)
- banner comment in generated axe files (#1112) (e4788bf)
- ignore invalid and allow redundant role in aria-allowed-role (#1118) (a0f9b31)
3.1.1 (2018-08-28)
- Fix broken 3.1.0 release script (c3b2a52)
3.1.0 (2018-08-28)
- rule fix: Allow fallback labels when input has id (#951) (54fa569)
- rule fix: Updating aria 1.1 allowed attributes (#964) (c3249c1)
- rule fix: Allow aria-errormessage with fallback (17608b6)
- rule fix: Ignore abstracts in determining element roles (1af6088)
- rule fix: Add combobox and radio required properties (e80af7a)
- rule fix: Allow all ARIA idref(s) to be empty (1498696)
- rule fix: Allow divs as groups in dl (#1076) (f4f6df6), closes #262
- rule fix: Allow live-region and dialog in
region
rule (#1073) (fb6438b) - rule fix: Allow only-dlitem / only-listitem to have any hidden content (#1098) (6034aae), closes #1021
- rule fix: Do not flag font icons in color-contrast rule (#1095) (b6ac084), closes #1068
- rule fix: Do not require media captions / descriptions (#1075) (289f623), closes #816
- rule fix: improve messaging for hidden labels (ae07b8e)
- rule fix: Ignore abstracts in determining element roles (e3b1e1d)
- rule fix: Correctly handle role attribute on lists and listitems. (#949) (3a8729b)
- core: allow returning a Promise in jsdom from axe.run (#943) (3858a1f)
- typescript: Correct
Check.evaluate
andCheck.after
type definitions (#976) (db3ed40), closes #974 - typescript: Typescript interface updates (#973) (f8c9905), closes #972
- messages: Clearer fail message for aria-labelledby (956281b)
- messages: Consistent landmark rule/check descriptions (#1003) (d792970)
- messages: Show attribute in message (#1061) (9ff5d54)
- Check data is an array of IDs (d64bc5f)
- Don't crash with slot elements without shadowDOM (#977) (cc044af)
- Generate jsdoc(umentation) (9f9b15b)
- Stop
indexOf
override from crashing Axe (#968) (e3329ce) - Use
node.matches*
in place ofprototype.matches*
to prevent IE crash (#956) (ebdb590)
- new rule: Added new html-xml-lang-mismatch rule (#999) (7452a51)
- new rule: aria-allowed-role (#945) (c270a46)
- new rule: css-orientation-lock (wcag21) (#1081) (4ae4ea0)
- new rule: Add WCAG 2.1 autocomplete-valid rule (e6189ce)
- rule fix: Flag unsupported roles (#1064) (5515ee6)
- rule fix: Remove non-existing "text" role (#1069) (67ec1f5)
- rule fix: Break up duplicate-id rule for ARIA+labels and active elements (2ecfea7)
- rule fix: Tag aria rules as WCAG 2, SC4.1.2 issues (e7816c0)
- core: Allow rules to access CSSOM assets (#958) (5d6c1fa)
- core: Add
doT
template engine (#1024) (f6f08d4) - commons: Add aria.getRole method (1d2a0e4)
- commons: Add text.isValidAutocomplete method (8d44fe4)
- i18n: Add runtime localization support (#1036) (7d4b70f)
- i18n: Update FR (french) translation file for 3.1 release (#1089) (4a5cad0)
- i18n: Update ja (Japanese) locale for 3.1 release (#1101) (ef6cd86)
- deprecate: Deprecate audio-caption rule (#1071) (3b05fee)
3.0.3 (2018-06-04)
- Resolve markdown lint errors. (efdad94) (aa90155)
- Don't require all ARIA IDREFS to exist (#921) (130efed)
- generate unsupported aria roles and attributes. (7315662)
- Make empty role=lisbox elements as incomplete (#927) (87e979f)
- Prevent axe-core crashing on “-“ as a class name (#884) (9c4d84e)
- Right trim URLs before outputting them in getSelector (#924) (4775a23), closes #788
- td-has-heading to ignore td with its role changed (#928) (d68af4c)
- Update tags for frame-title rule (#935) (6436bbf)
- core: Define 'axe-core' as an AMD module (#859) (7b46f63), closes #849 #856 #861 #847 #844 #871 #849 #849
- Update tags to accesskey & link-name rules (#922) (a8e801c)
- rule: Layout-table does not match presentation / none roles (#828) (5651ecc)
- rule: restore labelledBy on unlabeled select (b7bdf66)
- rules: Allow focusable role=application elements (b5de450)
- typescript: Update ElementContext type (#822) (eb09248)
- generate ARIA supported documentation for roles and attributes. (6f095dd)
- generated impacts as a part of rule descriptions (#898) (6265608)
3.0.2 (2018-04-24)
- rule: Allow empty aria-labelledby values (#829) (d280c5f)
- Prevent color rules from crashing Chrome 66+ #856 (#861) (147b665)
- respondable: Identify the current axe instance by its application name when it exists (affd75c)
- respondable: Use the hard-coded axe.application name as default (ab4a49f)
- rule: Ignore hashbang URLs for skiplinks (#827) (e1f0c57)
- rule: Tag video-caption only as SC 1.2.2 (87818e7)
3.0.1 (2018-04-03)
- allow mixed casing of caption/summary (ca091ac)
- Allow title on button-name (#794) (e31fe9a)
- sri: Fix incorrect sri-history entries (#789) (f5f55f3)
3.0.0 (2018-03-19)
- Allow exclusion of Shadow DOM content (cc66eb2)
- Avoid flatTree memory leak (a902e80)
- main-is-top-level: Rename check to landmark-is-top-level for greater reuse (b405af1)
- Avoid timing issue with axe cleanup method (24ea6a7)
- correct misnamed check (1e709e0)
- Correct runOnly object for TypeScript definition (571e984)
- has-at-least-one-main: Rename check to page-has-main, for reusability (9a9c283)
- has-no-more-than-one-main: Rename check to page-no-duplicate for better reuse (e75324b)
- region: Ignore forms without accessible name as landmarks (8ad2718)
- rule: skip-link rule doesn't decode URI encoded href's (818b5cd)
- Ensure all rules have a category tag (d61e67d)
- make getSelector work with URIs that cannot be shortened (a113555)
- Make aria-level required with role=heading #740 (64b743f)
- aria: allow DPUB ARIA roles (70b48f6)
- frame-tested: Use this new rule to test if all frames are available, instead of axe.log (83cd17d)
- landmark-contentinfo-is-top-level: add rule ensuring top level contentinfo (5692e7d)
- landmark-no-more-than-one-banner: add rule ensuring no more than one banner (6617800)
- landmark-no-more-than-one-contentinfo: add rule ensuring no more than one contentinfo (82217ef)
- page-has-heading-one: Added new best-practice rule (cb8f261)
- rules: add new rule aria-dpub-role-fallback (9470c02)
- Make options.runOnly more forgiving about plurality (fa81f9d)
- Translated all 3.0 rules to Japanese (3862e7e)
- Incorrect use of runOnly now throws errors
- main-is-top-level: The check main-is-top-level is no longer available
- has-at-least-one-main: Original has-at-least-one-main check is no longer available
3.0.0-beta.3 (2018-03-08)
- Correct runOnly object for TypeScript definition (571e984)
- has-at-least-one-main: Rename check to page-has-main, for reusability (9a9c283)
- has-no-more-than-one-main: Rename check to page-no-duplicate for better reuse (e75324b)
- main-is-top-level: Rename check to landmark-is-top-level for greater reuse (b405af1)
- region: Ignore forms without accessible name as landmarks (8ad2718)
- aria-required-attr: Make aria-level required with role=heading #740 (64b743f)
- aria: allow DPUB ARIA roles (70b48f6)
- frame-tested: Use this new rule to test if all frames are available, instead of axe.log (83cd17d)
- landmark-contentinfo-is-top-level: Add rule ensuring top level contentinfo (5692e7d)
- landmark-no-more-than-one-banner: Add rule ensuring no more than one banner (6617800)
- landmark-no-more-than-one-contentinfo: Add rule ensuring no more than one contentinfo (82217ef)
- page-has-heading-one: Added new best-practice rule (cb8f261)
- rules: Add new rule aria-dpub-role-fallback (9470c02)
- main-is-top-level: The check main-is-top-level is no longer available
- has-at-least-one-main: Original has-at-least-one-main check is no longer available
3.0.0-beta.2 (2018-03-01)
- perf: Improve getSelector performance (737c81c)
- Delete Selenium example, use grunt-axe-selenium instead (063e701)
- Update Jasmin example (72d49d5)
- Update Jest+React example (5b35322)
- Update Mocha example (cf70f9f)
- Update PhantomJS example (641b5e6)
- Update QUnit example (028ae51)
All notable changes to this project will be documented in this file. See standard-version for commit guidelines.
3.0.0-beta.1 (2018-02-19)
- audio-caption: Change tag wcag122 to wcag121 #686 (#721) (9c7b9f1)
- empty-heading: Skip headings with the role changed #645 (#722) (80ef961)
- image-alt: Exclude svg[role="img"] elements (#683) (0fe74d8)
- label: Prevent label rule from crashing on input without type #678 (#730) (4498680)
- perf: improve select performance fixes #702 (3274919)
- perf: memoize axe.utils.select (c9cd122)
- perf: normalize all selectors for better cache utilization (189c165)
- perf: remove need for node sorting from select completely (7677a6a)
- performance: significantly improve the performance of the dom.findUp utility fixes #696 (9197e03)
- add shadow dom coverage to all checks (0e48413), closes #690
- bug-705: cleanupPlugins() should not throw exception when no arguments are provided (#709) (fb1d2f7)
- Remove axe.a11yCheck() (88d039f)
- use virtual methods where applicable (6ddc4e5)
- type-checking: Improve typescript axe.run call signature (#707) (de45ee3)
3.0.0-alpha.9 (2018-01-18)
- aria-errormessage: adds support for aria-errormessage (#517) (c96f58c)
- check: fix bug with async checks (441ca95)
- color-contrast: allow disabled label children (db26bc9)
- color-contrast: incl. elements w/ line breaks (a464918)
- commons/aria: allow aria-required on checkbox role (3e21c6e)
- adjust color algorithm for inline elements (7f8491e)
- Allow checkbox and radio groups with hidden aria-labelledby targets #188 (6149bde)
- Ensure overloaded Array.prototype won't crash axe (ea57ef2)
- handle contrast of multiline inline el's (f9d565f)
- Polyfills are made non-enumerable #648. (#649) (48d8703)
- Remove href-no-hash rule (342cb6e)
- Return inapplicable results (#473). (c9caeff)
- Several of fixes for IE and Edge (#577) (63e1272)
- skip-link rule now checks if a target exists (f7f9cf3)
- commons/aria: allow aria-required on radio role (58b76a6)
- commons/dom: fix isFocusable functions by checking screenreader (#658) (c665d0b), closes #647
- core/utils/querySelectorAll: Ensure that elements do not get tested twice (#666) (a76a454)
- required-children: add combobox > listbox exception (#559) (8d0991f)
- rules/region: Treat
<section>
as a landmark if it has an accessible name #640 (#642) (c11b442)
- Add rule, landmark-main-is-top-level (#462) (63040bd)
- collect-results-from-frames: add frameWaitTime option (#661) (8016ad1)
- landmark-one-main: add rule ensuring one main landmark in document (#498) (dfc6069)
- reporter: return one result of each type instead of zero when resultTypes is used (#604) (216a83b), closes #603
- rule: Flag div/p/spans/headings in focus order (ce5f3dc), closes #632
- allow options in aria-allowed-attr, aria-required-attr (#673) (61ac303)
- Enable all rules by default (18263eb)
- Improve generated selectors for namespaced elements in XHTML (#582) (9e3ca45), closes #563
- Skip-link rule no longer requires skip lins with a focusable target.
3.0.0-alpha.8 (2017-10-20)
- aria-allowed-attr: align rowcount, colcount, and colindex with 1.1 spec (#555) (10efa88)
- required-children: add combobox > listbox exception (#559) (8d0991f)
- Added message about expected contrast ratio (#381) (#562) (9e30d64)
3.0.0-alpha.6 (2017-09-27)
- aria: adding support for aria-expanded in menuitem (#521) (b30b451)
- color-contrast: Include
THEAD
andTBODY
in contrast checks (#514) (f98f8bd) - Match prerelease versions for helpUrl (#546) (5300577)
- helpUrl: Properly parse x.0 versions (#550) (a51c5ce)
- postinstall: use node, more conditionals (#520) (f5b5299)
- responsible: Restrict error construction to known errors (0128a7e)
3.0.0-alpha.5 (2017-09-25)
- aria: adding support for aria-expanded in menuitem (#521) (b30b451)
- postinstall: use node, more conditionals (#520) (f5b5299)
- Match prerelease versions for helpUrl (#546) (5300577)
3.0.0-alpha.4 (2017-09-08)
- fix(color-contrast): Include
THEAD
andTBODY
in contrast checks (#514) (f98f8bd) - fix(responsible): Restrict error construction to known errors (#513) (0128a7e)
- docs: Document how to propose axe-core rules (#507) (cabd329)
3.0.0-alpha.3 (2017-09-06)
- Additional ARIA 1.1. support and tests (#509) (9b4d2ee)
- fix: RestoreScroll was running out of sync (#508) (ff3df2d)
3.0.0-alpha.2 (2017-09-01)
- copy precommit hook as file, not a link (16f2f76)
- expand tr support for color contrast (5a77c2f)
- Ignore shadowRoots on elements that don't allow them (7f66ee8)
- only run postinstall if .git exists (1107783)
- try telling circle to skip .git/hooks (674408f)
- Use frame query that supports shadow dom (#492) (94008ff)
3.0.0-alpha.1 (2017-08-16)
- add copyright banner back in to axe.js (2aac29a)
- Adjust if formatting (2211d78)
- Align impact levels with Deque Way (28f4477)
- Allow to have no kind attribute (f996d0f)
- complete shadow support for color matches (f0fe551)
- aria: Allow implicit attribute values (b949749)
- Set relatedNodes on color/link-in-block rules (#407) (7fde0fe)
- aria: Treegrid should own rows, not treeitems (645d1fa)
- Correct flattened tree algorithm to include the shadow host (#405) (70985b0)
- Ensure all tests pass in Chrome (0b0240f)
- ensure document is fetched from correct node (b28597c)
- Exclude
any
checks from output if one passed (#466) (2dd3d68) - get tests all passing (#457) (4874327)
- get virtualNode with getNodeFromTree (9bf2870)
- getComposedParent should not return slot nodes (#438) (0478cbd)
- Have table rules use shadow DOM (453be1b)
- help-same-as-label for shadow DOM (dbbc544)
- incomplete results should have impact (fcc51eb)
- Let findUp work on shadow root children (0252218)
- Let findUp work on shadow root children (#447) (0f98481)
- Minimise scrolling in getBackgroundColor (f4551bb)
- Pass all tests that use accessibleText (7ea8d6b)
- checks/aria/required-children: add exception for native input combobox missing textbox (81ee2e4)
- use virtualNode in duplicate-img-label (82e51bc)
- is-in-text-block: Add Shadow DOM support (a125f79)
- pass virtualNode to Rule.run (4534e86)
- Properly output error stack (56f1867)
- Remove log statements (6a6bd73)
- Solve a few tests (02daad1)
- Use getAttribute(id) over .id (#374) (353b53f)
- Use testUtils in table tests (364d5cd)
- use virtualNode in title-only check (5fb06e3)
- whitespace in hidden-content test (99e8b73)
- Add aria-orientation to additional roles (bb07c2d)
- add check testUtils (6f53279)
- Add dom.getComposedParent function (aac57c0)
- Add Japanese localisation (5f8c9c8)
- Add new ARIA 1.1 values for haspopup (9f7da56)
- Add option restoreScroll (d55f3cd)
- add S.C. 2.4.4 to link-name rule. Fixes #369 (70728e6)
- add SD support to color-contrast-matches (b595b42)
- Add shadow DOM support to list checks (#439) (d92c1a1)
- Add shadow DOM to duplicate-img-label check (#443) (2c0b075)
- Add shadow DOM to landmark check (98f6023)
- add shadow support to aria-required-children (f729e25)
- add shadow support to group-labelledby (e2a9642)
- Add sri-history file and update process (#476) (25ddb47)
- Allow hidden-content to work through shadow DOM bounds (789d62e)
- fieldset check shadow DOM (da148d3)
- Make explicit check consider shadow DOM (#442) (9ddfc0f)
- Make region check work with shadow DOM (ecd222f)
- Run text.accessibleText() on virtual elements (#420) (414fcbe)
- ShadowDOM support for media checks (0f21574)
- aria: Support progressive ARIA 1.1 attributes / roles (#468) (ebb2a5d)
- aria-required-parent: add Shadow DOM support (6ed29f0)
- duplicate-id: Add shadow DOM support (439bc71)
- link-in-text-block: Add shadow DOM support (46a2cca)
- shadow DOM: Create commons virtual methods, for backward compatibility (86a4c25)
2.4.2 (2017-09-25)
- aria: adding support for aria-expanded in menuitem (#521) (b4c42fe)
- Match prerelease versions for helpUrl (#546) (c166708)
- fix(node4): use var to declare variables (#541) (c72badb)
2.4.1 (2017-09-12)
2.4.0 (2017-09-08)
- fix(color-contrast): Include
THEAD
andTBODY
in contrast checks (#514) (f98f8bd) - fix(responsible): Restrict error construction to known errors (#513) (0128a7e)
- docs: Document how to propose axe-core rules (#507) (cabd329)
2.4.0-alpha.2 (2017-09-06)
- test(aria): aria-haspopup, aria-modal for 1.1
- style(test/aria): add line breaks for readability
- test(aria): add missing roles and properties
- fix: RestoreScroll was running out of sync (#508)
- feat(ARIA 1.1): Allow row-index, setsize and posinset on more roles
2.4.0-alpha.1 (2017-08-31)
- chore: add help text for testconfig Grunt task
- fix: Properly output error stack
- doc: Add 'on mobile' to viewport rule
- fix: Ensure all tests pass in Chrome
- fix: Minimise scrolling in getBackgroundColor
- chore: Minor build chores for whitespace and lockfile
- fix: Align impact levels with Deque Way
- fix: Set relatedNodes on color/link-in-block rules
- fix: incomplete results should have impact
- fix(aria): Allow implicit attribute values
- chore: ignore growl in retire
- fix: Use getAttribute(id) over .id
- fix: Exclude
any
checks from output if one passed - fix(aria): Treegrid should own rows, not treeitems
- fix(aria): add exception for native input combobox missing textbox. Fixes #160
- test: fix aria/required-children for jshint
- feat: allow link text from single-cell layout table
- fix: expand tr support for color contrast
- chore: ignore node_modules in examples when linting
- feat: Add option
restoreScroll
- doc: add more info on testing hidden regions
- feat: add S.C. 2.4.4 to link-name rule. Fixes #369
- feat: Add Japanese localisation
- doc: Add instructions on debugging on CircleCI
- test: add unit tests for button-has-visible-text
- chore: add descriptions to Grunt tasks
- feat(aria): Support progressive ARIA 1.1 attributes / roles
- feat: Add new ARIA 1.1 values for haspopup
- feat: Add aria-orientation to additional roles
2.3.1 (2017-06-15)
- Improvements to hidden-content rule
- Deduplicated langs in valid-lang options
2.3.0 (2017-06-14)
- Overhaul of selectors API
- New experimental rule for hidden-content
- New rule for flagging aria-hidden="true" on document.body
- Color-contrast rule impact is now serious
- Color-contrast fixes for implicit labels and TR elements
- Color-contrast puts 1:1 ratio elements into Needs Review/incomplete
- List category mappings in docs
- Update axe.source to work with Firefox webdriver
2.2.3 (2017-06-01)
- Removed the disable property from link-in-text-block
2.2.2 (2017-05-25)
- Stabilize incompleteData API for backwards compatibility
- Change impact of duplicate-id rule to moderate
2.2.1 (2017-05-19)
- Remove nodes from the color contrast incompleteData API to avoid circular references
- Add configuration options for iframes: false, selectors: false, and elementRef: true
- Improve color-contrast rule for disabled elements
- Add webdriver task for testing mobile viewports
- Improve audio/video captioning rules
- Improve th-has-data-cells rule
- Expose incomplete reasons for color contrast rule as part of Needs Review
- Implement rule groupings as tags
- Allow building of axe in multiple languages
- Empty-heading rule has impact: moderate
- Move from Snyk to Retire.js
- Make CI run test-fast task instead of parallel
- Add documentation on writing integration tests and rules
- Allow a larger list of languages for HTML-valid-lang rule
- Add support for [role=img] in image-alt rule
- Fix bug with innerHeight in get-background-color
- Improve dom.is-offscreen function
- Integrate optional performance timer
- Empty include defaults to document
- Add promise-based axe.run API method in favor of axe.a11yCheck
- Move TypeScript definition to root of project
- Add Inapplicable and Can't Tell results
- New rule: frame-title-unique
- Improvements to table rules: td-has-header, th-has-data-cells
- Color contrast rule performance improvements using polyfilled elementsFromPoint
- Add better support for implicit roles
- DQElement supports xPath
- Add TypeScript definition v1
- Support for UMD pattern
- Adds 508 tagging for table rules
- Fixes race condition for iframes
- Exclude actual nodes from array checking
- Improvements to messaging for extensions
- Security improvements
- Build includes Babel/ES6
- Improvements to table rules
- axe can be loaded in Node
- Adds support for AMD modules
- Fixes incompatibility with Webpack
- Improvements to rules and checks
- Help urls no longer hard-coded
- Improved error handling
- Adds Travis hooks
- Adds Sauce Labs
- Encodes HTML in descriptions
- Updates messages and help URLs
- Initial public release