Skip to content

Latest commit

 

History

History
1898 lines (1477 loc) · 234 KB

CHANGELOG.md

File metadata and controls

1898 lines (1477 loc) · 234 KB

Changelog

All notable changes to this project will be documented in this file. See standard-version for commit guidelines.

4.10.1 (2024-10-16)

Bug Fixes

4.10.0 (2024-07-29)

Features

  • new-rule: summary elements must have an accessible name (#4511) (0d8a99e), closes #4510

Bug Fixes

  • aria-allowed-attr: allow aria-multiline=false for element with contenteditable (#4537) (f019068)
  • aria-allowed-attr: allow aria-required=false when normally not allowed (#4532) (2e242e1)
  • aria-prohibited-attr: allow aria-label/ledby on descendants of widget (#4541) (07c5d91)
  • aria-roledescription: keep disabled with { runOnly: 'wcag2a' } (#4526) (5b4cb9d), closes #4523
  • autocomplete-valid: incomplete for invalid but safe values (#4500) (e31a974), closes #4492
  • build: limit locales to valid files when using the --all-lang option (#4486) (d3db593), closes #4485
  • Prevent errors when loading axe in Angular + Jest (#4456) (3ef9353), closes #4400
  • Minor grammatical fixes for some rules and checks (#4499) (11fad59)
  • landmark-unique: follow spec, aside -> landmark (#4469) (e32f803), closes #4460
  • required-attr: allow aria-valuetext on slider instead of valuenow (#4518) (135898b), closes #4515

4.9.1 (2024-05-06)

Bug Fixes

  • Prevent errors when loading axe in a page with prototype.js
  • aria-allowed-attr: allow meter role allowed aria-* attributes on meter element (#4435) (7ac6392)
  • aria-allowed-role: add gridcell, separator, slider and treeitem to allowed roles of button element (#4398) (4788bf8)
  • aria-roles: correct abstract roles (types) for aria-roles(#4421)
  • aria-valid-attr-value: aria-controls & aria-haspopup incomplete (#4418)
  • fix building axe-core translation files with region locales (#4396) (5c318f3), closes #4388
  • invalidrole: allow upper and mixed case role names (#4358) (105016c), closes #2695
  • isVisibleOnScreen: account for position: absolute elements inside overflow container (#4405) (2940f6e), closes #4016
  • label-content-name-mismatch: better dismiss and wysiwyg symbolic text characters (#4402)
  • region: Decorative images ignored by region rule (#4412)
  • target-size: ignore descendant elements in shadow dom (#4410) (6091367)
  • target-size: pass for element that has nearby elements that are obscured (#4422) (3a90bb7), closes #4387

4.9.0 (2024-03-25)

Features

Bug Fixes

  • Add LICENSE-3RD-PARTY.txt file (#4304) (daa0fe6)
  • add Object.values polyfill for node <=6 (#4274) (5eb867b)
  • aria-required-children: avoid confusing aria-busy message in failures (#4347) (591607d), closes #fail13 #4340
  • avoid reading element-specific node properties of non-element node types (#4317) (b853b18), closes #4316 #4316
  • color-contrast: handle text that is outside overflow: hidden ancestor (#4357) (bdb7300), closes #4253
  • color-contrast: support color blend modes hue, saturation, color, luminosity (#4365) (7ae4761)
  • d.ts: RawNodesResult issues (#4229) (d660518)
  • d.ts: RunOptions.reporter can be any string (#4218) (e53f5c5)
  • i18n: update Italian translations (#4377) (4d65d4b)
  • listitem: clarify roleNotValid message (#4374) (0f8a9af)
  • scrollable-region-focusable: missing wcag213 tag (#4201) (0080a72)
  • target-size: always pass 10x targets (avoid perf bottleneck) (#4376) (be327c4)
  • target-size: do not crash for nodes with many overlapping widgets (#4373) (1dbea83), closes #4359 #4359 #4360
  • utils/get-selector: ignore 'xmlns' attribute when generating a selector (#4303) (938b411)

4.8.4 (2024-02-07)

Bug Fixes

  • Add LICENSE-3RD-PARTY.txt file (#4304) (139c553)
  • avoid reading element-specific node properties of non-element node types (#4317) (a2a6935), closes #4316 #4316
  • d.ts: RawNodesResult issues (#4229) (f105266)
  • d.ts: RunOptions.reporter can be any string (#4218) (80de793)
  • utils/get-selector: ignore 'xmlns' attribute when generating a selector (#4303) (8c68546)

4.8.3 (2023-12-18)

Bug Fixes

4.8.2 (2023-09-18)

Bug Fixes

4.8.1 (2023-09-08)

Bug Fixes

  • target-size: show closest offset in message (#4151) (a0882f6)

4.8.0 (2023-09-06)

Consistent Rule Impact

This release changes it so that a rule never changes what impact it reports. To facilitate this while without changing the impact on certain issues, some rules have been split. The following changes were involved:

  • Deprecate impact on checks; use rules instead (#4114) (2cc5547)
  • add rule aria-deprecated-role (#4074) (03f2771)
  • add rule aria-conditional-attr (#4094) (d417630)
  • aria-input/toggle-field-name: set impact always to serious (#4095) (e031d68)
  • aria-prohibited-attr: add rule aria-prohibited-attr (#4088) (7b115d3)
  • impact: aria-roles / aria-valid-attr-value is always "critical" (#4112) (5cc8041)
  • impact: scope-attr-valid is always "moderate" (#4113) (131f552)

Other Features

  • deprecate & disable duplicate-id / duplicate-id-active (#4071) (733c45e)
  • duplicate-id-aria: set to review on fail and tag as wcag412 (#4075) (9f1a3e3)
  • add EN.301.549 tags to rules (#4063) (de3da89)
  • checks: enable help-same-as-label, but remove from rules (#4096) (034038a)
  • new-rule: aria-braille-equivalent finds incorrect uses of aria-braille attributes (#4107) (6260a2f)
  • page-no-duplicate-banner/contentinfo: deprecate options.nativeScopeFilter, take into ancestors with sectioning roles (#4105) (c6e07be)

Type Fixes & Improvements

Various improvements were made to the types. Potentially the most impactful of which is that the target and ancestry property now return as UnlabelledFrameSelector instead of as string[], which is incorrect for selectors involving shadow DOM. This may create some issues during migration for any code that has been incorrectly assuming these two properties have the string[] type. For more details and other type changes, see the commit itself:

Bug Fixes

  • access-name: get name from header elements (#4097) (fbe99bf)
  • add element semantics (#4115) (637bf6c)
  • aria-allowed-attr: pass aria-expanded on checkbox & switch (#4110) (fcf76e0), closes #3339
  • aria-allowed-role: Add doc-glossary to allowed roles for aside element (#4083) (6ca38f6)
  • aria-allowed-role: add meter to allowed roles for named img (#4055) (173f29d), closes #4054
  • aria-required-childen: test visibility of grandchildren (#4091) (a202b69)
  • aria-text: typo in rule description (#4131) (85a0e9c)
  • aria-valid-attr-value: allow empty value on aria-braille* & aria-valuetext (#4109) (c4c3e65)
  • avoid memory issues by doing better cleanup (#4059) (16c5cfa)
  • avoid problems from element IDs that exist on object prototype (#4060) (8d135dd)
  • color-contrast: correctly handle flex and position (#4086) (9d5f496)
  • color-contrast: get text stoke from offset shadows (#4079) (13acffe)
  • color-contrast: ignore format unicode characters (#4102) (049522e)
  • color-contrast: ignore zero width characters (#4103) (4deb0a0)
  • color-contrast: process non-rgb color functions (#4092) (9634282)
  • commons/dom/createGrid: only add the visible, non-overflow areas of an element to the grid (#4101) (d77f47b)
  • ensure reporter errors can propagate (#4111) (080cc1b)
  • ignore stylesheets fetching style tag in jsdom (#4138) (d7c16a4)
  • jsdom: allow axe.setup() without a global window (#4116) (33b0314)
  • target-size: correctly calculate bounding box (#4125) (1494b4c)
  • target-size: update to match new spacing requirements (#4117) (49eaa0e)
  • Use correct copyright year (#4098) (cab6a2b)
  • utils/clone: don't try to clone elements from different window context (#4072) (55000d0)

4.7.2 (2023-05-25)

Bug Fixes

  • aria-allowed-attr: Add 'aria-required' to switch role (#4029) (cb51be4), closes #4027
  • aria-allowed-attr: allow aria-required on role=slider (#4035) (bb2bf60)
  • aria-required-children: set related nodes for invalid children (#4033) (377f72b)
  • tags: Add / correct several TTv5 tags (#4031) (25859dd)

4.7.1 (2023-05-15)

Bug Fixes

  • aria-allowed-attr: no inconsistent aria-checked on HTML checkboxes (#3895) (704043e)
  • aria-allowed-attrs: add aria-expanded to allowed attrs for menuitemcheckbox and menuitemradio (#3994) (0f405c6)
  • aria-required-children: trigger reviewEmpty with hidden children (#4012) (a19b6cb)
  • color-contrast: support CSS 4 color spaces (#4020) (65621c3)
  • link-in-text-block: set links with pseudo-content for review (#4005) (949f4f8)

4.7.0 (2023-04-17)

Features

  • aria-roledescription: deprecate rule (#3948) (1913a9e)
  • aria-roles: deprecate the ARIA directory role (#3952) (893fdd0)
  • d.ts: setup/teardown, reporters & metadata definitions (#3966) (78264ee)
  • deprecate bower (#3889) (651d811)
  • deprecate color.filteredRectStack, color.getRectStack, and dom.visuallyContains (#3859) (3be2bad)
  • dom.focusDisabled,dom.isVisibleForScreenreader: support the inert attribute (#3857) (273c971)
  • metadata: add Trusted Tester tag (#3986) (1f6a2a6)
  • support the dialog element (#3902) (d4522cd)

Bug Fixes

  • aria-allowed-attrs: allow aria-description and aria-braille* attrs (#3956) (2842395)
  • aria-input-field-name: skip combobox popups (#3886) (3dcdd42)
  • aria-required-children: allow separator in menu(bar) (#3868) (ec9f507)
  • aria-required-children: do not fail for children with aria-hidden (#3949) (8714d6b)
  • aria-required-children: list elements that are not allowed (#3951) (cce7586)
  • autocomplete-valid: allow webauthn token (#3866) (fd3010f)
  • color-contrast: correcly apply opacity to foreground color (#3973) (d7db279)
  • color-contrast: correctly calculate contrast of flex/grid items with z-index (#3884) (cef96be)
  • color-contrast: correctly compute background color for elements with opacity (#3944) (c051fe8), closes #3932
  • color-contrast: correctly compute color contrast of elements (#3847) (4c3a00c)
  • color-contrast: do not check contrast on elemets that are inerted (#3894) (da19946)
  • color-contrast: skip ligature icons (#3867) (9486288)
  • create-grid: correctly compute stack order for non-positioned stacking contexts (#3930) (8db2c24), closes #3932
  • css-orientation-lock: support the css rotate property (#3958) (c51f8bf)
  • focus-order-semantics: Add ARIA role article to list of valid roles for scrollable regions (#3927) (f029271)
  • is-icon-ligature: prevent canvas2d warning willReadFrequently (#3931) (b3c52bb)
  • link-in-text-block: allow links with identical colors (#3861) (5f90040)
  • respondable: work with CDP Page.setDocumentContent (#3921) (66f23e5)
  • scrollable-region-focusable: change impact to serious (#3959) (e3a5c21)
  • scrollable-region-focusable: skip native controls (#3862) (b0bdefa)

4.6.3 (2023-01-23)

Bug Fixes

  • aria-required-children: allow separator in menu(bar) (#3868) (46c9499)
  • autocomplete-valid: allow webauthn token (#3866) (a3d1b9d)
  • color-contrast: correctly compute color contrast of elements (#3847) (844cea1)
  • color-contrast: skip ligature icons (#3867) (7dfbd9a)
  • link-in-text-block: allow links with identical colors (#3861) (6761f36)
  • scrollable-region-focusable: skip native controls (#3862) (aaf44e9)

4.6.2 (2022-12-23)

Bug Fixes

  • color-contrast: fix color-contrast check when running in an extension (#3838) (31a3e01)

4.6.1 (2022-12-14)

Bug Fixes

  • d.ts: add optional include to ContextObject (#3830) (36ed242)

4.6.0 (2022-12-12)

Features

  • aria-required-attr: require aria-controls on combobox and aria-valuenow on focusable separator (#3786) (5259e88)
  • checks/label-content-name-mismatch: deprecate occuranceThreshold option in favor of occurrenceThreshold to fix typo (#3782) (5026d65)
  • commons: deprecate flattenShadowColors in favor of flattenColors (#3792) (af49daf)
  • context: allow selecting shadow DOM nodes (#3798) (9e1e31b)
  • list,listitem: do not allow group as allowed parent or child (#3784) (d1cbf6f)
  • required-attr: require aria-checked for checkbox-like and radio-like roles (#3785) (563e4e9)
  • utils: new shadowSelectAll utility (#3796) (5865462)

Bug Fixes

  • aria-allowed-role: allow combobox on button, checkbox and combobox on input[type=button] (#3354) (ac688c0), closes #3353
  • aria-required-children: allow menu as child of menu (#3820) (a6569e5)
  • color-contrast: consider -webkit-text-stroke & -webkit-text-fill-color (#3791) (228daf1)
  • color-contrast: correctly calculate background color of text nodes with different size than their container (#3703) (123b83c)
  • get-role: handle presentation role inheritance for vnodes with no parent (#3801) (b971caf)
  • html-lang-valid: only run rule when attribute has value (#3663) (1a7eecb), closes #3624
  • metadata: Map aria-required-children to ACT rule bc4a75 (#3790) (a33a523)

4.5.2 (2022-11-14)

Bug Fixes

  • aria-required-children: allow menu and menubar to be empty (#3770) (d11aed8)
  • create-grid: include elements scrolled out of view in the grid (#3773) (a563263)
  • do not warn when using webpack (#3777) (d6cef9a)
  • link-in-text-block: don't match style or script text (#3775) (ab877f9)
  • prevent undefined relatedNodes from halting axe (#3778) (efefb18)

4.5.1 (2022-11-01)

Bug Fixes

  • allow axe to run in certain configurations of jsdom (#3755) (b74c5d4)
  • prevent crash on jsdom when preloading CSSOM (#3754) (b1f0c6b)

4.5.0 (2022-10-17)

Features

Highlights

  • 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)

Tags and Metadata Updates

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)

Deprecations

  • 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)

Others

  • 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)

Bug Fixes

  • 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)

Bug Fixes

4.4.2 (2022-05-12)

Bug Fixes

  • 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)

Bug Fixes

  • DPUB: deprecate endnote, rather than endnotes (plural) (#3373) (1ba9917)
  • d.ts: correct getFrameContexts return type (#3370) (a1b9611)

4.4.0 (2022-01-26)

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)

4.3.5 (2021-10-29)

Bug Fixes

  • aria-allowed-attr: revert violation for non-global ARIA attrs on element without role (#3243) (e138fd6)

4.3.4 (2021-10-22)

Bug Fixes

  • aria-allowed-attr: check for invalid aria-attributes for role="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 for textContent 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)

Bug Fixes

  • 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)

Bug Fixes

  • 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)

Bug Fixes

4.3.0 (2021-07-09)

Features

  • 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

Bug Fixes

  • 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)

Bug Fixes

  • axe.run: add option to increase iframe ping timeout (#3233) (99a848e)

4.2.3 (2021-06-22)

Bug Fixes

  • 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)

Bug Fixes

  • 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)

Bug Fixes

  • 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)

Features

  • 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)

Bug Fixes

  • 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)

Bug Fixes

4.1.3 (2021-03-04)

Bug Fixes

4.1.2 (2021-02-08)

Bug Fixes

4.1.1 (2020-11-19)

Bug Fixes

  • 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)

Features

  • 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)

Bug Fixes

  • 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)

Bug Fixes

  • 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)

Bug Fixes

  • checks: do not normalize options for custom checks (#2435) (83056ad)

4.0.0 (2020-07-28)

Breaking Changes

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

Features

  • 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)

Bug Fixes

  • 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 be null (#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)

Bug Fixes

  • 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)

Bug Fixes

  • get-element-stack: properly calculate position of children of floated elements (28a8c58)

3.5.3 (2020-03-31)

Bug Fixes

  • 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
    is allowed to group content in
    (#2098) (76b1a9f)
  • 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)

Bug Fixes

  • 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 deprecated lookupTable.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)

Bug Fixes

  • 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)

Features

  • 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)

Bug Fixes

  • 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)

Bug Fixes

  • color-contrast: support IE extension context (#2008) (cd651a0)
  • unicode: stop parsing escaped unicode strings (#1997) (523a31c)

3.4.1 (2019-12-11)

Bug Fixes

  • 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)

Bug Fixes

  • 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)

Features

  • 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)

Bug Fixes

  • color-contrast: support IE extension context (#2008) (cd651a0)
  • unicode: stop parsing escaped unicode strings (#1997) (523a31c)

3.3.2 (2019-08-12)

Bug Fixes

  • 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)

Bug Fixes

  • 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)

Tests

  • 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)

Bug Fixes

  • 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 DqElements (#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)

Features

  • 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)

Tests

3.2.3 (2020-02-04)

Bug Fixes

  • color-contrast: support IE extension context (#2008) (cd651a0)
  • unicode: stop parsing escaped unicode strings (#1997) (523a31c)

3.2.2 (2019-03-07)

Bug Fixes

3.2.1 (2019-03-06)

Bug Fixes

3.2.0 (2019-03-04)

Bug Fixes

Features

Performance Improvements

Deprecate

3.1.2 (2018-09-07)

Bug Fixes

  • 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)

Bug Fixes

  • Fix broken 3.1.0 release script (c3b2a52)

3.1.0 (2018-08-28)

Bug Fixes

  • 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 and Check.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 of prototype.matches* to prevent IE crash (#956) (ebdb590)

Features

  • 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)

Bug Fixes

  • 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)

Features

  • 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)

Bug Fixes

  • 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)

Bug Fixes

  • 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)

Bug Fixes

  • 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)

Features

  • 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)

BREAKING CHANGES

  • 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)

Bug Fixes

  • 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)

Features

  • 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)

BREAKING CHANGES

  • 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)

Bug Fixes

  • perf: Improve getSelector performance (737c81c)
  • Delete Selenium example, use grunt-axe-selenium instead (063e701)

Features

Change Log

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)

Bug Fixes

  • 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)

Performance Improvements

  • Add performance metrics in Rule.runChecks (#701) (27fdc2f)

3.0.0-alpha.9 (2018-01-18)

Bug Fixes

  • 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)

Features

  • 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

BREAKING CHANGES

  • Skip-link rule no longer requires skip lins with a focusable target.

3.0.0-alpha.8 (2017-10-20)

Bug Fixes

  • 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)

Bug Fixes

  • aria: adding support for aria-expanded in menuitem (#521) (b30b451)
  • color-contrast: Include THEAD and TBODY 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)

Bug Fixes

  • 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)

Bug fixes:

  • fix(color-contrast): Include THEAD and TBODY in contrast checks (#514) (f98f8bd)
  • fix(responsible): Restrict error construction to known errors (#513) (0128a7e)

Features:

  • docs: Document how to propose axe-core rules (#507) (cabd329)

3.0.0-alpha.3 (2017-09-06)

Bug fixes:

  • 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)

Bug Fixes

  • 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)

Features

  • feat: Add sri-history file and update process (25ddb47)
  • feat: add standard-version (e1e067d)

3.0.0-alpha.1 (2017-08-16)

Bug Fixes

  • 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)

Features

  • 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)

Bug Fixes

  • 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)

Bug Fixes

  • fix(postinstall): use node, more conditionals (#520) (98fac8a)

2.4.0 (2017-09-08)

Bug fixes:

  • fix(color-contrast): Include THEAD and TBODY in contrast checks (#514) (f98f8bd)
  • fix(responsible): Restrict error construction to known errors (#513) (0128a7e)

Features:

  • docs: Document how to propose axe-core rules (#507) (cabd329)

2.4.0-alpha.2 (2017-09-06)

Bug fixes:

  • 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)

Features:

  • feat(ARIA 1.1): Allow row-index, setsize and posinset on more roles

2.4.0-alpha.1 (2017-08-31)

Bug fixes:

  • 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

Features:

  • 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)

Bug fixes:

  • Improvements to hidden-content rule
  • Deduplicated langs in valid-lang options

2.3.0 (2017-06-14)

Bug fixes:

  • 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)

Bug fixes:

  • Removed the disable property from link-in-text-block

2.2.2 (2017-05-25)

Bug fixes

  • Stabilize incompleteData API for backwards compatibility
  • Change impact of duplicate-id rule to moderate

2.2.1 (2017-05-19)

Bug fixes

  • Remove nodes from the color contrast incompleteData API to avoid circular references

2.2.0 (2017-04-24)

Changes

  • 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

2.1.8 (2017-05-21)

Changes

  • 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

2.1.7 (2016-12-13)

Changes

  • 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

2.0.7 (2016-09-28)

Changes

  • Add TypeScript definition v1

2.0.5 (2016-04-20)

Changes

  • Support for UMD pattern
  • Adds 508 tagging for table rules
  • Fixes race condition for iframes
  • Exclude actual nodes from array checking

2.0.5 (2016-04-13)

Changes

  • Improvements to messaging for extensions

2.0.3 (2016-04-12)

Changes

  • Security improvements
  • Build includes Babel/ES6
  • Improvements to table rules
  • axe can be loaded in Node

2.0.0 (2016-03-01)

Changes

  • Adds support for AMD modules
  • Fixes incompatibility with Webpack
  • Improvements to rules and checks
  • Help urls no longer hard-coded
  • Improved error handling

1.1.1 (2015-09-04)

Changes

  • Adds Travis hooks
  • Adds Sauce Labs
  • Encodes HTML in descriptions
  • Updates messages and help URLs

1.0.1 (2015-06-10)

Changes

  • Initial public release