All notable changes to this project will be documented in this file. See standard-version for commit guidelines.
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