axe-core 4.1.2-canary.ec00dc7 → 4.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (640) hide show
  1. package/CHANGELOG.md +0 -46
  2. package/CONTRIBUTING.md +57 -112
  3. package/README.md +50 -59
  4. package/axe.d.ts +281 -282
  5. package/axe.js +678 -1285
  6. package/axe.min.js +2 -2
  7. package/bower.json +38 -44
  8. package/doc/API.md +133 -178
  9. package/doc/check-message-template.md +3 -3
  10. package/doc/check-options.md +25 -25
  11. package/doc/developer-guide.md +48 -48
  12. package/doc/examples/chrome-debugging-protocol/axe-cdp.js +56 -56
  13. package/doc/examples/chrome-debugging-protocol/package.json +9 -9
  14. package/doc/examples/html-handlebars.md +52 -52
  15. package/doc/examples/jasmine/karma.conf.js +15 -15
  16. package/doc/examples/jasmine/package.json +19 -19
  17. package/doc/examples/jasmine/spec/a11y.js +29 -29
  18. package/doc/examples/jest_react/link.js +3 -3
  19. package/doc/examples/jest_react/link.test.js +15 -15
  20. package/doc/examples/jest_react/package.json +26 -26
  21. package/doc/examples/jest_react/test-helpers.js +12 -12
  22. package/doc/examples/jsdom/package.json +13 -13
  23. package/doc/examples/mocha/karma.conf.js +15 -15
  24. package/doc/examples/mocha/package.json +20 -20
  25. package/doc/examples/phantomjs/axe-phantom.js +36 -36
  26. package/doc/examples/phantomjs/package.json +17 -17
  27. package/doc/examples/puppeteer/axe-puppeteer.js +37 -37
  28. package/doc/examples/puppeteer/package.json +11 -11
  29. package/doc/examples/qunit/package.json +19 -19
  30. package/doc/examples/test-examples.js +22 -22
  31. package/doc/plugins.md +64 -64
  32. package/doc/projects.md +9 -13
  33. package/doc/rule-descriptions.md +100 -104
  34. package/doc/rule-development.md +2 -2
  35. package/doc/standards-object.md +8 -14
  36. package/lib/checks/aria/abstractrole-evaluate.js +8 -8
  37. package/lib/checks/aria/abstractrole.json +12 -12
  38. package/lib/checks/aria/aria-allowed-attr-evaluate.js +25 -24
  39. package/lib/checks/aria/aria-allowed-attr.json +12 -12
  40. package/lib/checks/aria/aria-allowed-role-evaluate.js +21 -21
  41. package/lib/checks/aria/aria-allowed-role.json +20 -20
  42. package/lib/checks/aria/aria-errormessage-evaluate.js +30 -38
  43. package/lib/checks/aria/aria-errormessage.json +16 -16
  44. package/lib/checks/aria/aria-hidden-body-evaluate.js +1 -1
  45. package/lib/checks/aria/aria-hidden-body.json +9 -9
  46. package/lib/checks/aria/aria-required-attr-evaluate.js +34 -34
  47. package/lib/checks/aria/aria-required-attr.json +12 -12
  48. package/lib/checks/aria/aria-required-children-evaluate.js +103 -108
  49. package/lib/checks/aria/aria-required-children.json +30 -30
  50. package/lib/checks/aria/aria-required-parent-evaluate.js +65 -72
  51. package/lib/checks/aria/aria-required-parent.json +12 -12
  52. package/lib/checks/aria/aria-roledescription-evaluate.js +9 -9
  53. package/lib/checks/aria/aria-roledescription.json +21 -21
  54. package/lib/checks/aria/aria-unsupported-attr-evaluate.js +20 -17
  55. package/lib/checks/aria/aria-unsupported-attr.json +9 -9
  56. package/lib/checks/aria/aria-valid-attr-evaluate.js +20 -20
  57. package/lib/checks/aria/aria-valid-attr-value-evaluate.js +71 -82
  58. package/lib/checks/aria/aria-valid-attr-value.json +17 -17
  59. package/lib/checks/aria/aria-valid-attr.json +13 -13
  60. package/lib/checks/aria/fallbackrole-evaluate.js +1 -1
  61. package/lib/checks/aria/fallbackrole.json +9 -9
  62. package/lib/checks/aria/has-global-aria-attribute-evaluate.js +5 -5
  63. package/lib/checks/aria/has-global-aria-attribute.json +12 -12
  64. package/lib/checks/aria/has-widget-role-evaluate.js +6 -6
  65. package/lib/checks/aria/has-widget-role.json +10 -10
  66. package/lib/checks/aria/invalidrole-evaluate.js +12 -12
  67. package/lib/checks/aria/invalidrole.json +12 -12
  68. package/lib/checks/aria/is-element-focusable-evaluate.js +1 -1
  69. package/lib/checks/aria/is-element-focusable.json +9 -9
  70. package/lib/checks/aria/no-implicit-explicit-label-evaluate.js +18 -20
  71. package/lib/checks/aria/no-implicit-explicit-label.json +9 -9
  72. package/lib/checks/aria/unsupportedrole-evaluate.js +2 -2
  73. package/lib/checks/aria/unsupportedrole.json +9 -9
  74. package/lib/checks/aria/valid-scrollable-semantics-evaluate.js +23 -23
  75. package/lib/checks/aria/valid-scrollable-semantics.json +10 -10
  76. package/lib/checks/color/color-contrast-evaluate.js +164 -164
  77. package/lib/checks/color/color-contrast.json +40 -40
  78. package/lib/checks/color/link-in-text-block-evaluate.js +70 -70
  79. package/lib/checks/color/link-in-text-block.json +17 -17
  80. package/lib/checks/forms/autocomplete-appropriate-evaluate.js +68 -68
  81. package/lib/checks/forms/autocomplete-appropriate.json +9 -9
  82. package/lib/checks/forms/autocomplete-valid-evaluate.js +2 -2
  83. package/lib/checks/forms/autocomplete-valid.json +9 -9
  84. package/lib/checks/generic/README.md +5 -5
  85. package/lib/checks/generic/attr-non-space-content-evaluate.js +20 -20
  86. package/lib/checks/generic/has-descendant-after.js +10 -10
  87. package/lib/checks/generic/has-descendant-evaluate.js +12 -12
  88. package/lib/checks/generic/has-text-content-evaluate.js +5 -5
  89. package/lib/checks/generic/matches-definition-evaluate.js +1 -1
  90. package/lib/checks/generic/page-no-duplicate-after.js +2 -2
  91. package/lib/checks/generic/page-no-duplicate-evaluate.js +29 -29
  92. package/lib/checks/keyboard/accesskeys-after.js +19 -19
  93. package/lib/checks/keyboard/accesskeys-evaluate.js +5 -5
  94. package/lib/checks/keyboard/accesskeys.json +10 -10
  95. package/lib/checks/keyboard/focusable-content-evaluate.js +13 -13
  96. package/lib/checks/keyboard/focusable-content.json +9 -9
  97. package/lib/checks/keyboard/focusable-disabled-evaluate.js +30 -30
  98. package/lib/checks/keyboard/focusable-disabled.json +9 -9
  99. package/lib/checks/keyboard/focusable-element-evaluate.js +41 -41
  100. package/lib/checks/keyboard/focusable-element.json +9 -9
  101. package/lib/checks/keyboard/focusable-modal-open-evaluate.js +11 -11
  102. package/lib/checks/keyboard/focusable-modal-open.json +9 -9
  103. package/lib/checks/keyboard/focusable-no-name-evaluate.js +10 -10
  104. package/lib/checks/keyboard/focusable-no-name.json +10 -10
  105. package/lib/checks/keyboard/focusable-not-tabbable-evaluate.js +30 -30
  106. package/lib/checks/keyboard/focusable-not-tabbable.json +9 -9
  107. package/lib/checks/keyboard/landmark-is-top-level-evaluate.js +17 -22
  108. package/lib/checks/keyboard/landmark-is-top-level.json +9 -9
  109. package/lib/checks/keyboard/page-has-heading-one.json +13 -13
  110. package/lib/checks/keyboard/page-has-main.json +13 -13
  111. package/lib/checks/keyboard/page-no-duplicate-banner.json +14 -14
  112. package/lib/checks/keyboard/page-no-duplicate-contentinfo.json +14 -14
  113. package/lib/checks/keyboard/page-no-duplicate-main.json +13 -13
  114. package/lib/checks/keyboard/tabindex-evaluate.js +5 -5
  115. package/lib/checks/keyboard/tabindex.json +9 -9
  116. package/lib/checks/label/alt-space-value-evaluate.js +3 -3
  117. package/lib/checks/label/alt-space-value.json +9 -9
  118. package/lib/checks/label/duplicate-img-label-evaluate.js +12 -12
  119. package/lib/checks/label/duplicate-img-label.json +12 -12
  120. package/lib/checks/label/explicit-evaluate.js +20 -25
  121. package/lib/checks/label/explicit.json +10 -10
  122. package/lib/checks/label/help-same-as-label-evaluate.js +17 -17
  123. package/lib/checks/label/help-same-as-label.json +10 -10
  124. package/lib/checks/label/hidden-explicit-label-evaluate.js +15 -21
  125. package/lib/checks/label/hidden-explicit-label.json +10 -10
  126. package/lib/checks/label/implicit-evaluate.js +9 -9
  127. package/lib/checks/label/implicit.json +10 -10
  128. package/lib/checks/label/label-content-name-mismatch-evaluate.js +42 -42
  129. package/lib/checks/label/label-content-name-mismatch.json +13 -13
  130. package/lib/checks/label/multiple-label-evaluate.js +32 -32
  131. package/lib/checks/label/multiple-label.json +9 -9
  132. package/lib/checks/label/title-only-evaluate.js +4 -4
  133. package/lib/checks/label/title-only.json +9 -9
  134. package/lib/checks/landmarks/landmark-is-unique-after.js +20 -20
  135. package/lib/checks/landmarks/landmark-is-unique-evaluate.js +6 -6
  136. package/lib/checks/landmarks/landmark-is-unique.json +10 -10
  137. package/lib/checks/language/has-lang-evaluate.js +25 -25
  138. package/lib/checks/language/has-lang.json +15 -15
  139. package/lib/checks/language/valid-lang-evaluate.js +25 -25
  140. package/lib/checks/language/valid-lang.json +12 -12
  141. package/lib/checks/language/xml-lang-mismatch-evaluate.js +3 -3
  142. package/lib/checks/language/xml-lang-mismatch.json +9 -9
  143. package/lib/checks/lists/dlitem-evaluate.js +19 -19
  144. package/lib/checks/lists/dlitem.json +9 -9
  145. package/lib/checks/lists/listitem-evaluate.js +17 -17
  146. package/lib/checks/lists/listitem.json +12 -12
  147. package/lib/checks/lists/only-dlitems-evaluate.js +44 -44
  148. package/lib/checks/lists/only-dlitems.json +9 -9
  149. package/lib/checks/lists/only-listitems-evaluate.js +56 -56
  150. package/lib/checks/lists/only-listitems.json +12 -12
  151. package/lib/checks/lists/structured-dlitems-evaluate.js +20 -20
  152. package/lib/checks/lists/structured-dlitems.json +9 -9
  153. package/lib/checks/media/caption-evaluate.js +6 -6
  154. package/lib/checks/media/caption.json +9 -9
  155. package/lib/checks/media/frame-tested-evaluate.js +20 -20
  156. package/lib/checks/media/frame-tested.json +13 -13
  157. package/lib/checks/media/no-autoplay-audio-evaluate.js +81 -81
  158. package/lib/checks/media/no-autoplay-audio.json +13 -13
  159. package/lib/checks/mobile/css-orientation-lock-evaluate.js +250 -250
  160. package/lib/checks/mobile/css-orientation-lock.json +13 -13
  161. package/lib/checks/mobile/meta-viewport-large.json +13 -13
  162. package/lib/checks/mobile/meta-viewport-scale-evaluate.js +56 -56
  163. package/lib/checks/mobile/meta-viewport.json +12 -12
  164. package/lib/checks/navigation/header-present.json +13 -13
  165. package/lib/checks/navigation/heading-order-after.js +11 -134
  166. package/lib/checks/navigation/heading-order-evaluate.js +13 -51
  167. package/lib/checks/navigation/heading-order.json +10 -10
  168. package/lib/checks/navigation/identical-links-same-purpose-after.js +86 -86
  169. package/lib/checks/navigation/identical-links-same-purpose-evaluate.js +23 -23
  170. package/lib/checks/navigation/identical-links-same-purpose.json +10 -10
  171. package/lib/checks/navigation/internal-link-present-evaluate.js +4 -4
  172. package/lib/checks/navigation/internal-link-present.json +9 -9
  173. package/lib/checks/navigation/landmark.json +12 -12
  174. package/lib/checks/navigation/meta-refresh-evaluate.js +3 -3
  175. package/lib/checks/navigation/meta-refresh.json +9 -9
  176. package/lib/checks/navigation/p-as-heading-evaluate.js +72 -72
  177. package/lib/checks/navigation/p-as-heading.json +28 -28
  178. package/lib/checks/navigation/region-evaluate.js +73 -73
  179. package/lib/checks/navigation/region.json +12 -12
  180. package/lib/checks/navigation/skip-link-evaluate.js +5 -5
  181. package/lib/checks/navigation/skip-link.json +10 -10
  182. package/lib/checks/navigation/unique-frame-title-after.js +8 -8
  183. package/lib/checks/navigation/unique-frame-title-evaluate.js +3 -3
  184. package/lib/checks/navigation/unique-frame-title.json +10 -10
  185. package/lib/checks/parsing/duplicate-id-active.json +10 -10
  186. package/lib/checks/parsing/duplicate-id-after.js +8 -8
  187. package/lib/checks/parsing/duplicate-id-aria.json +10 -10
  188. package/lib/checks/parsing/duplicate-id-evaluate.js +15 -15
  189. package/lib/checks/parsing/duplicate-id.json +10 -10
  190. package/lib/checks/shared/aria-label-evaluate.js +1 -1
  191. package/lib/checks/shared/aria-label.json +9 -9
  192. package/lib/checks/shared/aria-labelledby-evaluate.js +5 -5
  193. package/lib/checks/shared/aria-labelledby.json +10 -10
  194. package/lib/checks/shared/avoid-inline-spacing-evaluate.js +10 -10
  195. package/lib/checks/shared/avoid-inline-spacing.json +15 -15
  196. package/lib/checks/shared/button-has-visible-text.json +10 -10
  197. package/lib/checks/shared/doc-has-title-evaluate.js +2 -2
  198. package/lib/checks/shared/doc-has-title.json +9 -9
  199. package/lib/checks/shared/exists-evaluate.js +1 -1
  200. package/lib/checks/shared/exists.json +9 -9
  201. package/lib/checks/shared/has-alt-evaluate.js +5 -5
  202. package/lib/checks/shared/has-alt.json +9 -9
  203. package/lib/checks/shared/has-visible-text.json +10 -10
  204. package/lib/checks/shared/is-on-screen-evaluate.js +2 -2
  205. package/lib/checks/shared/is-on-screen.json +9 -9
  206. package/lib/checks/shared/non-empty-alt.json +15 -15
  207. package/lib/checks/shared/non-empty-if-present-evaluate.js +13 -13
  208. package/lib/checks/shared/non-empty-if-present.json +12 -12
  209. package/lib/checks/shared/non-empty-placeholder.json +15 -15
  210. package/lib/checks/shared/non-empty-title.json +15 -15
  211. package/lib/checks/shared/non-empty-value.json +15 -15
  212. package/lib/checks/shared/presentational-role-evaluate.js +29 -29
  213. package/lib/checks/shared/presentational-role.json +14 -14
  214. package/lib/checks/shared/role-none.json +17 -17
  215. package/lib/checks/shared/role-presentation.json +17 -17
  216. package/lib/checks/shared/svg-non-empty-title-evaluate.js +20 -24
  217. package/lib/checks/shared/svg-non-empty-title.json +13 -13
  218. package/lib/checks/tables/caption-faked-evaluate.js +8 -8
  219. package/lib/checks/tables/caption-faked.json +9 -9
  220. package/lib/checks/tables/html5-scope-evaluate.js +4 -4
  221. package/lib/checks/tables/html5-scope.json +9 -9
  222. package/lib/checks/tables/same-caption-summary-evaluate.js +6 -6
  223. package/lib/checks/tables/same-caption-summary.json +9 -9
  224. package/lib/checks/tables/scope-value-evaluate.js +2 -2
  225. package/lib/checks/tables/scope-value.json +12 -12
  226. package/lib/checks/tables/td-has-header-evaluate.js +21 -21
  227. package/lib/checks/tables/td-has-header.json +9 -9
  228. package/lib/checks/tables/td-headers-attr-evaluate.js +48 -48
  229. package/lib/checks/tables/td-headers-attr.json +10 -10
  230. package/lib/checks/tables/th-has-data-cells-evaluate.js +64 -64
  231. package/lib/checks/tables/th-has-data-cells.json +10 -10
  232. package/lib/checks/visibility/hidden-content-evaluate.js +28 -28
  233. package/lib/checks/visibility/hidden-content.json +10 -10
  234. package/lib/commons/aria/allowed-attr.js +12 -12
  235. package/lib/commons/aria/arialabel-text.js +7 -7
  236. package/lib/commons/aria/arialabelledby-text.js +41 -41
  237. package/lib/commons/aria/get-accessible-refs.js +41 -41
  238. package/lib/commons/aria/get-element-unallowed-roles.js +69 -69
  239. package/lib/commons/aria/get-explicit-role.js +14 -14
  240. package/lib/commons/aria/get-owned-virtual.js +14 -14
  241. package/lib/commons/aria/get-role-type.js +5 -5
  242. package/lib/commons/aria/get-role.js +89 -89
  243. package/lib/commons/aria/get-roles-by-type.js +1 -1
  244. package/lib/commons/aria/get-roles-with-name-from-contents.js +1 -1
  245. package/lib/commons/aria/implicit-nodes.js +6 -6
  246. package/lib/commons/aria/implicit-role.js +32 -32
  247. package/lib/commons/aria/is-accessible-ref.js +1 -1
  248. package/lib/commons/aria/is-aria-role-allowed-on-element.js +12 -12
  249. package/lib/commons/aria/is-unsupported-role.js +2 -2
  250. package/lib/commons/aria/is-valid-role.js +6 -6
  251. package/lib/commons/aria/label-virtual.js +24 -24
  252. package/lib/commons/aria/label.js +2 -2
  253. package/lib/commons/aria/lookup-table.js +2395 -2395
  254. package/lib/commons/aria/named-from-contents.js +19 -19
  255. package/lib/commons/aria/required-attr.js +5 -5
  256. package/lib/commons/aria/required-context.js +5 -5
  257. package/lib/commons/aria/required-owned.js +5 -5
  258. package/lib/commons/aria/validate-attr-value.js +40 -44
  259. package/lib/commons/aria/validate-attr.js +2 -2
  260. package/lib/commons/color/center-point-of-rect.js +15 -15
  261. package/lib/commons/color/color.js +224 -224
  262. package/lib/commons/color/element-has-image.js +14 -14
  263. package/lib/commons/color/element-is-distinct.js +56 -55
  264. package/lib/commons/color/filtered-rect-stack.js +32 -32
  265. package/lib/commons/color/flatten-colors.js +6 -6
  266. package/lib/commons/color/get-background-color.js +40 -40
  267. package/lib/commons/color/get-background-stack.js +71 -71
  268. package/lib/commons/color/get-contrast.js +9 -9
  269. package/lib/commons/color/get-foreground-color.js +34 -34
  270. package/lib/commons/color/get-own-background-color.js +7 -7
  271. package/lib/commons/color/get-rect-stack.js +14 -14
  272. package/lib/commons/color/get-text-shadow-colors.js +87 -87
  273. package/lib/commons/color/has-valid-contrast-ratio.js +10 -10
  274. package/lib/commons/color/incomplete-data.js +37 -37
  275. package/lib/commons/dom/find-elms-in-context.js +11 -11
  276. package/lib/commons/dom/find-up-virtual.js +31 -31
  277. package/lib/commons/dom/find-up.js +1 -1
  278. package/lib/commons/dom/focus-disabled.js +13 -13
  279. package/lib/commons/dom/get-composed-parent.js +14 -14
  280. package/lib/commons/dom/get-element-by-reference.js +18 -18
  281. package/lib/commons/dom/get-element-coordinates.js +12 -12
  282. package/lib/commons/dom/get-element-stack.js +10 -10
  283. package/lib/commons/dom/get-rect-stack.js +427 -427
  284. package/lib/commons/dom/get-scroll-offset.js +17 -17
  285. package/lib/commons/dom/get-tabbable-elements.js +9 -9
  286. package/lib/commons/dom/get-text-element-stack.js +49 -64
  287. package/lib/commons/dom/get-viewport-size.js +19 -19
  288. package/lib/commons/dom/has-content-virtual.js +29 -29
  289. package/lib/commons/dom/has-content.js +2 -2
  290. package/lib/commons/dom/idrefs.js +15 -15
  291. package/lib/commons/dom/inserted-into-focus-order.js +6 -6
  292. package/lib/commons/dom/is-focusable.js +12 -16
  293. package/lib/commons/dom/is-hidden-with-css.js +47 -47
  294. package/lib/commons/dom/is-html5.js +5 -5
  295. package/lib/commons/dom/is-in-text-block.js +74 -74
  296. package/lib/commons/dom/is-modal-open.js +78 -78
  297. package/lib/commons/dom/is-natively-focusable.js +22 -22
  298. package/lib/commons/dom/is-node.js +1 -1
  299. package/lib/commons/dom/is-offscreen.js +43 -43
  300. package/lib/commons/dom/is-opaque.js +4 -4
  301. package/lib/commons/dom/is-skip-link.js +27 -27
  302. package/lib/commons/dom/is-visible.js +147 -147
  303. package/lib/commons/dom/is-visual-content.js +33 -33
  304. package/lib/commons/dom/reduce-to-elements-below-floating.js +18 -18
  305. package/lib/commons/dom/shadow-elements-from-point.js +29 -29
  306. package/lib/commons/dom/url-props-from-attribute.js +100 -100
  307. package/lib/commons/dom/visually-contains.js +77 -77
  308. package/lib/commons/dom/visually-overlaps.js +29 -29
  309. package/lib/commons/forms/is-aria-combobox.js +2 -2
  310. package/lib/commons/forms/is-aria-listbox.js +2 -2
  311. package/lib/commons/forms/is-aria-range.js +2 -2
  312. package/lib/commons/forms/is-aria-textbox.js +2 -2
  313. package/lib/commons/forms/is-disabled.js +20 -20
  314. package/lib/commons/forms/is-native-select.js +3 -3
  315. package/lib/commons/forms/is-native-textbox.js +17 -17
  316. package/lib/commons/index.js +9 -9
  317. package/lib/commons/matches/attributes.js +4 -4
  318. package/lib/commons/matches/condition.js +1 -1
  319. package/lib/commons/matches/explicit-role.js +1 -1
  320. package/lib/commons/matches/from-definition.js +30 -30
  321. package/lib/commons/matches/from-function.js +12 -12
  322. package/lib/commons/matches/from-primative.js +20 -20
  323. package/lib/commons/matches/implicit-role.js +1 -1
  324. package/lib/commons/matches/matches.js +1 -1
  325. package/lib/commons/matches/node-name.js +4 -4
  326. package/lib/commons/matches/properties.js +4 -4
  327. package/lib/commons/matches/semantic-role.js +1 -1
  328. package/lib/commons/standards/get-aria-roles-by-type.js +3 -3
  329. package/lib/commons/standards/get-aria-roles-supporting-name-from-content.js +8 -8
  330. package/lib/commons/standards/get-element-spec.js +42 -42
  331. package/lib/commons/standards/get-elements-by-content-type.js +15 -15
  332. package/lib/commons/standards/get-global-aria-attrs.js +8 -8
  333. package/lib/commons/standards/implicit-html-roles.js +140 -140
  334. package/lib/commons/table/get-all-cells.js +16 -16
  335. package/lib/commons/table/get-cell-position.js +15 -15
  336. package/lib/commons/table/get-headers.js +65 -72
  337. package/lib/commons/table/get-scope.js +42 -42
  338. package/lib/commons/table/is-column-header.js +1 -1
  339. package/lib/commons/table/is-data-cell.js +10 -10
  340. package/lib/commons/table/is-data-table.js +176 -176
  341. package/lib/commons/table/is-header.js +8 -8
  342. package/lib/commons/table/is-row-header.js +1 -1
  343. package/lib/commons/table/to-grid.js +20 -31
  344. package/lib/commons/table/traverse.js +55 -55
  345. package/lib/commons/text/accessible-text-virtual.js +90 -90
  346. package/lib/commons/text/accessible-text.js +2 -2
  347. package/lib/commons/text/form-control-value.js +112 -113
  348. package/lib/commons/text/has-unicode.js +17 -17
  349. package/lib/commons/text/index.js +4 -4
  350. package/lib/commons/text/is-human-interpretable.js +34 -34
  351. package/lib/commons/text/is-icon-ligature.js +194 -194
  352. package/lib/commons/text/is-valid-autocomplete.js +104 -104
  353. package/lib/commons/text/label-text.js +39 -39
  354. package/lib/commons/text/label-virtual.js +26 -26
  355. package/lib/commons/text/label.js +2 -2
  356. package/lib/commons/text/native-element-type.js +97 -97
  357. package/lib/commons/text/native-text-alternative.js +19 -19
  358. package/lib/commons/text/native-text-methods.js +113 -113
  359. package/lib/commons/text/remove-unicode.js +15 -15
  360. package/lib/commons/text/sanitize.js +8 -8
  361. package/lib/commons/text/subtree-text.js +89 -47
  362. package/lib/commons/text/title-text.js +14 -14
  363. package/lib/commons/text/unicode.js +56 -56
  364. package/lib/commons/text/unsupported.js +1 -1
  365. package/lib/commons/text/visible-text-nodes.js +12 -12
  366. package/lib/commons/text/visible-virtual.js +21 -21
  367. package/lib/commons/text/visible.js +2 -2
  368. package/lib/core/base/audit.js +613 -613
  369. package/lib/core/base/cache.js +22 -22
  370. package/lib/core/base/check-result.js +20 -20
  371. package/lib/core/base/check.js +132 -132
  372. package/lib/core/base/context.js +175 -179
  373. package/lib/core/base/metadata-function-map.js +167 -179
  374. package/lib/core/base/rule-result.js +25 -25
  375. package/lib/core/base/rule.js +473 -475
  376. package/lib/core/base/virtual-node/abstract-virtual-node.js +33 -37
  377. package/lib/core/base/virtual-node/serial-virtual-node.js +76 -85
  378. package/lib/core/base/virtual-node/virtual-node.js +151 -177
  379. package/lib/core/constants.js +50 -50
  380. package/lib/core/core.js +7 -11
  381. package/lib/core/imports/index.js +14 -14
  382. package/lib/core/index.js +21 -19
  383. package/lib/core/log.js +4 -4
  384. package/lib/core/public/cleanup.js +43 -41
  385. package/lib/core/public/configure.js +112 -112
  386. package/lib/core/public/get-rules.js +19 -19
  387. package/lib/core/public/load.js +49 -47
  388. package/lib/core/public/plugins.js +24 -22
  389. package/lib/core/public/reporter.js +12 -12
  390. package/lib/core/public/reset.js +6 -6
  391. package/lib/core/public/run-rules.js +76 -61
  392. package/lib/core/public/run-virtual-rule.js +42 -47
  393. package/lib/core/public/run.js +154 -154
  394. package/lib/core/reporters/helpers/failure-summary.js +22 -22
  395. package/lib/core/reporters/helpers/get-environment-data.js +29 -29
  396. package/lib/core/reporters/helpers/incomplete-fallback-msg.js +3 -3
  397. package/lib/core/reporters/helpers/index.js +8 -8
  398. package/lib/core/reporters/helpers/process-aggregate.js +69 -69
  399. package/lib/core/reporters/na.js +16 -16
  400. package/lib/core/reporters/no-passes.js +12 -12
  401. package/lib/core/reporters/raw-env.js +9 -9
  402. package/lib/core/reporters/raw.js +24 -24
  403. package/lib/core/reporters/v1.js +23 -23
  404. package/lib/core/reporters/v2.js +13 -13
  405. package/lib/core/utils/aggregate-checks.js +63 -63
  406. package/lib/core/utils/aggregate-node-results.js +44 -44
  407. package/lib/core/utils/aggregate-result.js +24 -24
  408. package/lib/core/utils/aggregate.js +6 -6
  409. package/lib/core/utils/are-styles-set.js +14 -14
  410. package/lib/core/utils/assert.js +3 -3
  411. package/lib/core/utils/check-helper.js +23 -23
  412. package/lib/core/utils/clone.js +18 -18
  413. package/lib/core/utils/closest.js +12 -12
  414. package/lib/core/utils/collect-results-from-frames.js +45 -63
  415. package/lib/core/utils/contains.js +29 -29
  416. package/lib/core/utils/css-parser.js +0 -1
  417. package/lib/core/utils/deep-merge.js +18 -18
  418. package/lib/core/utils/dq-element.js +88 -88
  419. package/lib/core/utils/element-matches.js +29 -29
  420. package/lib/core/utils/escape-selector.js +63 -63
  421. package/lib/core/utils/extend-meta-data.js +11 -11
  422. package/lib/core/utils/finalize-result.js +13 -15
  423. package/lib/core/utils/find-by.js +3 -3
  424. package/lib/core/utils/get-all-checks.js +5 -5
  425. package/lib/core/utils/get-ancestry.js +16 -16
  426. package/lib/core/utils/get-base-lang.js +7 -7
  427. package/lib/core/utils/get-check-message.js +9 -9
  428. package/lib/core/utils/get-check-option.js +26 -26
  429. package/lib/core/utils/get-flattened-tree.js +88 -88
  430. package/lib/core/utils/get-friendly-uri-end.js +87 -87
  431. package/lib/core/utils/get-node-attributes.js +9 -10
  432. package/lib/core/utils/get-node-from-tree.js +2 -2
  433. package/lib/core/utils/get-root-node.js +6 -6
  434. package/lib/core/utils/get-scroll-state.js +26 -26
  435. package/lib/core/utils/get-scroll.js +26 -26
  436. package/lib/core/utils/get-selector.js +256 -256
  437. package/lib/core/utils/get-shadow-selector.js +19 -19
  438. package/lib/core/utils/get-stylesheet-factory.js +32 -32
  439. package/lib/core/utils/get-xpath.js +65 -65
  440. package/lib/core/utils/index.js +3 -6
  441. package/lib/core/utils/inject-style.js +24 -24
  442. package/lib/core/utils/is-hidden.js +41 -41
  443. package/lib/core/utils/is-html-element.js +122 -122
  444. package/lib/core/utils/is-node-in-context.js +24 -24
  445. package/lib/core/utils/is-shadow-root.js +28 -28
  446. package/lib/core/utils/is-xhtml.js +4 -4
  447. package/lib/core/utils/matches.js +170 -176
  448. package/lib/core/utils/memoize.js +7 -7
  449. package/lib/core/utils/merge-results.js +91 -91
  450. package/lib/core/utils/node-sorter.js +11 -11
  451. package/lib/core/utils/parse-crossorigin-stylesheet.js +41 -41
  452. package/lib/core/utils/parse-sameorigin-stylesheet.js +70 -70
  453. package/lib/core/utils/parse-stylesheet.js +41 -41
  454. package/lib/core/utils/performance-timer.js +112 -112
  455. package/lib/core/utils/pollyfills.js +263 -263
  456. package/lib/core/utils/preload-cssom.js +134 -134
  457. package/lib/core/utils/preload-media.js +42 -42
  458. package/lib/core/utils/preload.js +110 -110
  459. package/lib/core/utils/process-message.js +43 -45
  460. package/lib/core/utils/publish-metadata.js +68 -68
  461. package/lib/core/utils/query-selector-all-filter.js +77 -79
  462. package/lib/core/utils/query-selector-all.js +1 -1
  463. package/lib/core/utils/queue.js +113 -113
  464. package/lib/core/utils/respondable.js +218 -119
  465. package/lib/core/utils/rule-should-run.js +53 -53
  466. package/lib/core/utils/select.js +54 -54
  467. package/lib/core/utils/send-command-to-frame.js +43 -43
  468. package/lib/core/utils/set-scroll-state.js +7 -7
  469. package/lib/core/utils/to-array.js +1 -1
  470. package/lib/core/utils/token-list.js +4 -4
  471. package/lib/core/utils/unique-array.js +3 -3
  472. package/lib/core/utils/uuid.js +161 -170
  473. package/lib/core/utils/valid-input-type.js +25 -25
  474. package/lib/core/utils/valid-langs.js +30 -30
  475. package/lib/misc/any-failure-summary.json +4 -4
  476. package/lib/misc/incomplete-fallback.json +1 -1
  477. package/lib/misc/none-failure-summary.json +4 -4
  478. package/lib/rules/accesskeys.json +11 -11
  479. package/lib/rules/area-alt.json +20 -20
  480. package/lib/rules/aria-allowed-attr-matches.js +13 -11
  481. package/lib/rules/aria-allowed-attr.json +10 -10
  482. package/lib/rules/aria-allowed-role-matches.js +6 -6
  483. package/lib/rules/aria-allowed-role.json +12 -12
  484. package/lib/rules/aria-command-name.json +16 -16
  485. package/lib/rules/aria-dialog-name.json +11 -11
  486. package/lib/rules/aria-has-attr-matches.js +10 -10
  487. package/lib/rules/aria-hidden-body.json +12 -12
  488. package/lib/rules/aria-hidden-focus-matches.js +8 -8
  489. package/lib/rules/aria-hidden-focus.json +16 -16
  490. package/lib/rules/aria-input-field-name.json +11 -11
  491. package/lib/rules/aria-meter-name.json +11 -11
  492. package/lib/rules/aria-progressbar-name.json +11 -11
  493. package/lib/rules/aria-required-attr.json +10 -10
  494. package/lib/rules/aria-required-children.json +10 -11
  495. package/lib/rules/aria-required-parent.json +10 -11
  496. package/lib/rules/aria-roledescription.json +10 -10
  497. package/lib/rules/aria-roles.json +11 -11
  498. package/lib/rules/aria-toggle-field-name.json +16 -16
  499. package/lib/rules/aria-tooltip-name.json +16 -16
  500. package/lib/rules/aria-treeitem-name.json +16 -16
  501. package/lib/rules/aria-valid-attr-value.json +10 -10
  502. package/lib/rules/aria-valid-attr.json +10 -10
  503. package/lib/rules/audio-caption.json +18 -18
  504. package/lib/rules/autocomplete-matches.js +50 -50
  505. package/lib/rules/autocomplete-valid.json +10 -10
  506. package/lib/rules/avoid-inline-spacing.json +10 -10
  507. package/lib/rules/blink.json +17 -17
  508. package/lib/rules/button-name.json +24 -24
  509. package/lib/rules/bypass-matches.js +7 -7
  510. package/lib/rules/bypass.json +18 -19
  511. package/lib/rules/color-contrast-matches.js +137 -145
  512. package/lib/rules/color-contrast.json +11 -11
  513. package/lib/rules/css-orientation-lock.json +11 -11
  514. package/lib/rules/data-table-large-matches.js +10 -10
  515. package/lib/rules/data-table-matches.js +1 -1
  516. package/lib/rules/definition-list.json +11 -11
  517. package/lib/rules/dlitem.json +11 -11
  518. package/lib/rules/document-title.json +11 -11
  519. package/lib/rules/duplicate-id-active-matches.js +6 -6
  520. package/lib/rules/duplicate-id-active.json +12 -12
  521. package/lib/rules/duplicate-id-aria-matches.js +1 -1
  522. package/lib/rules/duplicate-id-aria.json +12 -12
  523. package/lib/rules/duplicate-id-misc-matches.js +8 -8
  524. package/lib/rules/duplicate-id.json +12 -12
  525. package/lib/rules/empty-heading.json +17 -17
  526. package/lib/rules/focus-order-semantics.json +11 -11
  527. package/lib/rules/form-field-multiple-labels.json +11 -11
  528. package/lib/rules/frame-tested.json +10 -10
  529. package/lib/rules/frame-title-has-text-matches.js +2 -2
  530. package/lib/rules/frame-title-unique.json +11 -11
  531. package/lib/rules/frame-title.json +22 -22
  532. package/lib/rules/heading-matches.js +14 -14
  533. package/lib/rules/heading-order.json +11 -11
  534. package/lib/rules/hidden-content.json +11 -11
  535. package/lib/rules/html-has-lang.json +11 -11
  536. package/lib/rules/html-lang-valid.json +10 -10
  537. package/lib/rules/html-namespace-matches.js +1 -1
  538. package/lib/rules/html-xml-lang-mismatch.json +11 -11
  539. package/lib/rules/identical-links-same-purpose-matches.js +9 -9
  540. package/lib/rules/identical-links-same-purpose.json +12 -12
  541. package/lib/rules/image-alt.json +24 -24
  542. package/lib/rules/img-redundant-alt.json +10 -10
  543. package/lib/rules/input-button-name.json +24 -24
  544. package/lib/rules/input-image-alt.json +18 -18
  545. package/lib/rules/inserted-into-focus-order-matches.js +1 -1
  546. package/lib/rules/is-initiator-matches.js +1 -1
  547. package/lib/rules/label-content-name-mismatch-matches.js +38 -38
  548. package/lib/rules/label-content-name-mismatch.json +10 -10
  549. package/lib/rules/label-matches.js +10 -10
  550. package/lib/rules/label-title-only.json +11 -11
  551. package/lib/rules/label.json +27 -27
  552. package/lib/rules/landmark-banner-is-top-level.json +11 -11
  553. package/lib/rules/landmark-complementary-is-top-level.json +10 -10
  554. package/lib/rules/landmark-contentinfo-is-top-level.json +11 -11
  555. package/lib/rules/landmark-has-body-context-matches.js +6 -6
  556. package/lib/rules/landmark-main-is-top-level.json +10 -10
  557. package/lib/rules/landmark-no-duplicate-banner.json +10 -10
  558. package/lib/rules/landmark-no-duplicate-contentinfo.json +10 -10
  559. package/lib/rules/landmark-no-duplicate-main.json +10 -10
  560. package/lib/rules/landmark-one-main.json +10 -10
  561. package/lib/rules/landmark-unique-matches.js +36 -36
  562. package/lib/rules/landmark-unique.json +11 -11
  563. package/lib/rules/layout-table-matches.js +2 -1
  564. package/lib/rules/link-in-text-block-matches.js +12 -12
  565. package/lib/rules/link-in-text-block.json +12 -12
  566. package/lib/rules/link-name.json +23 -23
  567. package/lib/rules/list.json +11 -11
  568. package/lib/rules/listitem.json +11 -11
  569. package/lib/rules/marquee.json +11 -11
  570. package/lib/rules/meta-refresh.json +18 -18
  571. package/lib/rules/meta-viewport-large.json +11 -11
  572. package/lib/rules/meta-viewport.json +11 -11
  573. package/lib/rules/no-autoplay-audio-matches.js +16 -16
  574. package/lib/rules/no-autoplay-audio.json +13 -13
  575. package/lib/rules/no-empty-role-matches.js +7 -7
  576. package/lib/rules/no-explicit-name-required-matches.js +9 -9
  577. package/lib/rules/no-naming-method-matches.js +12 -12
  578. package/lib/rules/no-role-matches.js +1 -1
  579. package/lib/rules/not-html-matches.js +2 -2
  580. package/lib/rules/object-alt.json +22 -22
  581. package/lib/rules/p-as-heading-matches.js +14 -14
  582. package/lib/rules/p-as-heading.json +11 -11
  583. package/lib/rules/page-has-heading-one.json +10 -10
  584. package/lib/rules/presentation-role-conflict.json +10 -10
  585. package/lib/rules/region.json +10 -10
  586. package/lib/rules/role-img-alt.json +18 -18
  587. package/lib/rules/scope-attr-valid.json +10 -10
  588. package/lib/rules/scrollable-region-focusable-matches.js +59 -59
  589. package/lib/rules/scrollable-region-focusable.json +10 -10
  590. package/lib/rules/select-name.json +25 -25
  591. package/lib/rules/server-side-image-map.json +16 -16
  592. package/lib/rules/skip-link-matches.js +1 -1
  593. package/lib/rules/skip-link.json +11 -11
  594. package/lib/rules/svg-img-alt.json +23 -23
  595. package/lib/rules/svg-namespace-matches.js +10 -10
  596. package/lib/rules/tabindex.json +10 -10
  597. package/lib/rules/table-duplicate-name.json +10 -10
  598. package/lib/rules/table-fake-caption.json +18 -18
  599. package/lib/rules/td-has-header.json +18 -18
  600. package/lib/rules/td-headers-attr.json +10 -10
  601. package/lib/rules/th-has-data-cells.json +11 -11
  602. package/lib/rules/valid-lang.json +11 -11
  603. package/lib/rules/video-caption.json +17 -17
  604. package/lib/rules/window-is-top-matches.js +3 -3
  605. package/lib/rules/xml-lang-mismatch-matches.js +6 -6
  606. package/lib/standards/aria-attrs.js +195 -204
  607. package/lib/standards/aria-roles.js +781 -812
  608. package/lib/standards/css-colors.js +148 -148
  609. package/lib/standards/dpub-roles.js +213 -214
  610. package/lib/standards/html-elms.js +912 -914
  611. package/lib/standards/index.js +16 -18
  612. package/locales/de.json +572 -909
  613. package/package.json +151 -174
  614. package/sri-history.json +1 -5
  615. package/typings/axe-core/axe-core-tests.ts +144 -144
  616. package/.eslintrc.js +0 -111
  617. package/lib/checks/aria/aria-prohibited-attr-evaluate.js +0 -67
  618. package/lib/checks/aria/aria-prohibited-attr.json +0 -12
  619. package/lib/checks/keyboard/frame-focusable-content.json +0 -12
  620. package/lib/checks/keyboard/no-focusable-content-evaluate.js +0 -35
  621. package/lib/checks/keyboard/no-focusable-content.json +0 -12
  622. package/lib/core/public/setup.js +0 -20
  623. package/lib/core/public/teardown.js +0 -21
  624. package/lib/core/utils/filter-html-attrs.js +0 -75
  625. package/lib/core/utils/get-rule.js +0 -17
  626. package/lib/core/utils/respondable/assert-window.js +0 -21
  627. package/lib/core/utils/respondable/callback-store.js +0 -36
  628. package/lib/core/utils/respondable/message-id.js +0 -22
  629. package/lib/core/utils/respondable/message-parser.js +0 -109
  630. package/lib/core/utils/respondable/post.js +0 -32
  631. package/lib/rules/aria-required-children-matches.js +0 -8
  632. package/lib/rules/aria-required-parent-matches.js +0 -8
  633. package/lib/rules/aria-text.json +0 -12
  634. package/lib/rules/empty-table-header.json +0 -13
  635. package/lib/rules/frame-focusable-content-matches.js +0 -9
  636. package/lib/rules/frame-focusable-content.json +0 -13
  637. package/lib/rules/nested-interactive-matches.js +0 -13
  638. package/lib/rules/nested-interactive.json +0 -12
  639. package/lib/standards/graphics-roles.js +0 -22
  640. package/locales/pl.json +0 -911
@@ -3,7 +3,7 @@ In order to reduce the file size of axe-core, this file was specially encoded. N
3
3
 
4
4
  The encoding is a trie data structure. Normally storing a trie as a true binary tree would take up more space than just an array of strings. However, there is a technique to store large amounts of data as a nested array of integers (borrowed from the Js13kGames game jam - https://keithclark.github.io/ZzFXM/) that gzipps extremely well.
5
5
 
6
- The encoding was generated by storing the trie of strings as a sequence of nested arrays, where each index represents the letter (a = 1, b = 2, etc.). For example, 'aaa' is stored as `[,[,[,1]]`. We can also use the 0 index to know if `aa` is valid by padding the end of the string with '`' (which gives 0 index as `'`'.charCodeAt(0) - 96` = 0). For example, both `aaa` and `aa` are stored as `[,[,[1,1]]]` (where `a` is not a valid lang).
6
+ The encoding was generated by storing the trie of strings as a sequence of nested arrays, where each index represents the letter (a = 1, b = 2, etc.). For example, 'aaa' is stored as `[,[,[,1]]`. We can also use the 0 index to know if `aa` is valid by padding the end of the string with '`' (which gives 0 index as `'`'.charCodeAt(0) - 96` = 0). For example, both `aaa` and `aa` are stored as `[,[1,[,1]]]` (where `a` is not a valid lang).
7
7
 
8
8
  If we need to edit the list of langs, use the code below on the page https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry:
9
9
 
@@ -61,21 +61,21 @@ const langs = [,[,[1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,,1,1,1,1,1,1,,1],[1,1,1,1,
61
61
  * @returns {Boolean}
62
62
  */
63
63
  function isValidLang(lang) {
64
- let array = langs;
65
-
66
- // padEnd is not supported in IE11
67
- while (lang.length < 3) {
68
- lang += '`';
69
- }
70
- for (let i = 0; i <= lang.length - 1; i++) {
71
- const index = lang.charCodeAt(i) - 96;
72
- array = array[index];
73
- if (!array) {
74
- return false;
75
- }
76
- }
77
-
78
- return true;
64
+ let array = langs;
65
+
66
+ // padEnd is not supported in IE11
67
+ while (lang.length < 3) {
68
+ lang += '`';
69
+ }
70
+ for (let i = 0; i <= lang.length - 1; i++) {
71
+ const index = lang.charCodeAt(i) - 96;
72
+ array = array[index];
73
+ if (!array) {
74
+ return false;
75
+ }
76
+ }
77
+
78
+ return true;
79
79
  }
80
80
 
81
81
  /**
@@ -86,20 +86,20 @@ function isValidLang(lang) {
86
86
  * @return {Array<Sting>} Valid language codes
87
87
  */
88
88
  export function validLangs(langArray) {
89
- // account for our external API tests passing non-array things
90
- langArray = Array.isArray(langArray) ? langArray : langs;
91
-
92
- let codes = [];
93
- langArray.forEach((lang, index) => {
94
- const char = String.fromCharCode(index + 96).replace('`', '');
95
- if (Array.isArray(lang)) {
96
- codes = codes.concat(validLangs(lang).map(newLang => char + newLang));
97
- } else {
98
- codes.push(char);
99
- }
100
- });
101
-
102
- return codes;
89
+ // account for our external API tests passing non-array things
90
+ langArray = Array.isArray(langArray) ? langArray : langs;
91
+
92
+ let codes = [];
93
+ langArray.forEach((lang, index) => {
94
+ const char = String.fromCharCode(index + 96).replace('`', '');
95
+ if (Array.isArray(lang)) {
96
+ codes = codes.concat(validLangs(lang).map(newLang => char + newLang));
97
+ } else {
98
+ codes.push(char);
99
+ }
100
+ });
101
+
102
+ return codes;
103
103
  }
104
104
 
105
105
  export default isValidLang;
@@ -1,6 +1,6 @@
1
1
  {
2
- "type": "any",
3
- "metadata": {
4
- "failureMessage": "Fix any of the following:{{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
5
- }
2
+ "type": "any",
3
+ "metadata": {
4
+ "failureMessage": "Fix any of the following:{{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
5
+ }
6
6
  }
@@ -1,3 +1,3 @@
1
1
  {
2
- "incompleteFallbackMessage": "axe couldn't tell the reason. Time to break out the element inspector!"
2
+ "incompleteFallbackMessage": "axe couldn't tell the reason. Time to break out the element inspector!"
3
3
  }
@@ -1,6 +1,6 @@
1
1
  {
2
- "type": "none",
3
- "metadata": {
4
- "failureMessage": "Fix all of the following:{{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
5
- }
2
+ "type": "none",
3
+ "metadata": {
4
+ "failureMessage": "Fix all of the following:{{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
5
+ }
6
6
  }
@@ -1,13 +1,13 @@
1
1
  {
2
- "id": "accesskeys",
3
- "selector": "[accesskey]",
4
- "excludeHidden": false,
5
- "tags": ["cat.keyboard", "best-practice"],
6
- "metadata": {
7
- "description": "Ensures every accesskey attribute value is unique",
8
- "help": "accesskey attribute value should be unique"
9
- },
10
- "all": [],
11
- "any": [],
12
- "none": ["accesskeys"]
2
+ "id": "accesskeys",
3
+ "selector": "[accesskey]",
4
+ "excludeHidden": false,
5
+ "tags": ["cat.keyboard", "best-practice"],
6
+ "metadata": {
7
+ "description": "Ensures every accesskey attribute value is unique",
8
+ "help": "accesskey attribute value must be unique"
9
+ },
10
+ "all": [],
11
+ "any": [],
12
+ "none": ["accesskeys"]
13
13
  }
@@ -1,22 +1,22 @@
1
1
  {
2
- "id": "area-alt",
3
- "selector": "map area[href]",
4
- "excludeHidden": false,
5
- "tags": [
6
- "cat.text-alternatives",
7
- "wcag2a",
8
- "wcag111",
9
- "wcag244",
10
- "wcag412",
11
- "section508",
12
- "section508.22.a",
13
- "ACT"
14
- ],
15
- "metadata": {
16
- "description": "Ensures <area> elements of image maps have alternate text",
17
- "help": "Active <area> elements must have alternate text"
18
- },
19
- "all": [],
20
- "any": ["non-empty-alt", "aria-label", "aria-labelledby", "non-empty-title"],
21
- "none": []
2
+ "id": "area-alt",
3
+ "selector": "map area[href]",
4
+ "excludeHidden": false,
5
+ "tags": [
6
+ "cat.text-alternatives",
7
+ "wcag2a",
8
+ "wcag111",
9
+ "wcag244",
10
+ "wcag412",
11
+ "section508",
12
+ "section508.22.a",
13
+ "ACT"
14
+ ],
15
+ "metadata": {
16
+ "description": "Ensures <area> elements of image maps have alternate text",
17
+ "help": "Active <area> elements must have alternate text"
18
+ },
19
+ "all": [],
20
+ "any": ["non-empty-alt", "non-empty-title", "aria-label", "aria-labelledby"],
21
+ "none": []
22
22
  }
@@ -1,15 +1,17 @@
1
- function ariaAllowedAttrMatches(node, virtualNode) {
2
- const aria = /^aria-/;
3
- const attrs = virtualNode.attrNames;
4
- if (attrs.length) {
5
- for (let i = 0, l = attrs.length; i < l; i++) {
6
- if (aria.test(attrs[i])) {
7
- return true;
8
- }
9
- }
10
- }
1
+ import { getNodeAttributes } from '../core/utils';
11
2
 
12
- return false;
3
+ function ariaAllowedAttrMatches(node) {
4
+ const aria = /^aria-/;
5
+ if (node.hasAttributes()) {
6
+ let attrs = getNodeAttributes(node);
7
+ for (let i = 0, l = attrs.length; i < l; i++) {
8
+ if (aria.test(attrs[i].name)) {
9
+ return true;
10
+ }
11
+ }
12
+ }
13
+
14
+ return false;
13
15
  }
14
16
 
15
17
  export default ariaAllowedAttrMatches;
@@ -1,12 +1,12 @@
1
1
  {
2
- "id": "aria-allowed-attr",
3
- "matches": "aria-allowed-attr-matches",
4
- "tags": ["cat.aria", "wcag2a", "wcag412"],
5
- "metadata": {
6
- "description": "Ensures ARIA attributes are allowed for an element's role",
7
- "help": "Elements must only use allowed ARIA attributes"
8
- },
9
- "all": [],
10
- "any": ["aria-allowed-attr"],
11
- "none": ["aria-unsupported-attr", "aria-prohibited-attr"]
2
+ "id": "aria-allowed-attr",
3
+ "matches": "aria-allowed-attr-matches",
4
+ "tags": ["cat.aria", "wcag2a", "wcag412"],
5
+ "metadata": {
6
+ "description": "Ensures ARIA attributes are allowed for an element's role",
7
+ "help": "Elements must only use allowed ARIA attributes"
8
+ },
9
+ "all": [],
10
+ "any": ["aria-allowed-attr"],
11
+ "none": ["aria-unsupported-attr"]
12
12
  }
@@ -1,12 +1,12 @@
1
1
  import { getExplicitRole } from '../commons/aria';
2
2
 
3
3
  function ariaAllowedRoleMatches(node) {
4
- return (
5
- getExplicitRole(node, {
6
- dpub: true,
7
- fallback: true
8
- }) !== null
9
- );
4
+ return (
5
+ getExplicitRole(node, {
6
+ dpub: true,
7
+ fallback: true
8
+ }) !== null
9
+ );
10
10
  }
11
11
 
12
12
  export default ariaAllowedRoleMatches;
@@ -1,14 +1,14 @@
1
1
  {
2
- "id": "aria-allowed-role",
3
- "excludeHidden": false,
4
- "selector": "[role]",
5
- "matches": "aria-allowed-role-matches",
6
- "tags": ["cat.aria", "best-practice"],
7
- "metadata": {
8
- "description": "Ensures role attribute has an appropriate value for the element",
9
- "help": "ARIA role should be appropriate for the element"
10
- },
11
- "all": [],
12
- "any": ["aria-allowed-role"],
13
- "none": []
2
+ "id": "aria-allowed-role",
3
+ "excludeHidden": false,
4
+ "selector": "[role]",
5
+ "matches": "aria-allowed-role-matches",
6
+ "tags": ["cat.aria", "best-practice"],
7
+ "metadata": {
8
+ "description": "Ensures role attribute has an appropriate value for the element",
9
+ "help": "ARIA role must be appropriate for the element"
10
+ },
11
+ "all": [],
12
+ "any": ["aria-allowed-role"],
13
+ "none": []
14
14
  }
@@ -1,18 +1,18 @@
1
1
  {
2
- "id": "aria-command-name",
3
- "selector": "[role=\"link\"], [role=\"button\"], [role=\"menuitem\"]",
4
- "matches": "no-naming-method-matches",
5
- "tags": ["cat.aria", "wcag2a", "wcag412"],
6
- "metadata": {
7
- "description": "Ensures every ARIA button, link and menuitem has an accessible name",
8
- "help": "ARIA commands must have an accessible name"
9
- },
10
- "all": [],
11
- "any": [
12
- "has-visible-text",
13
- "aria-label",
14
- "aria-labelledby",
15
- "non-empty-title"
16
- ],
17
- "none": []
2
+ "id": "aria-command-name",
3
+ "selector": "[role=\"link\"], [role=\"button\"], [role=\"menuitem\"]",
4
+ "matches": "no-naming-method-matches",
5
+ "tags": ["cat.aria", "wcag2a", "wcag412"],
6
+ "metadata": {
7
+ "description": "Ensures every ARIA button, link and menuitem has an accessible name",
8
+ "help": "ARIA commands must have an accessible name"
9
+ },
10
+ "all": [],
11
+ "any": [
12
+ "aria-label",
13
+ "aria-labelledby",
14
+ "non-empty-title",
15
+ "has-visible-text"
16
+ ],
17
+ "none": []
18
18
  }
@@ -1,13 +1,13 @@
1
1
  {
2
- "id": "aria-dialog-name",
3
- "selector": "[role=\"dialog\"], [role=\"alertdialog\"]",
4
- "matches": "no-naming-method-matches",
5
- "tags": ["cat.aria", "best-practice"],
6
- "metadata": {
7
- "description": "Ensures every ARIA dialog and alertdialog node has an accessible name",
8
- "help": "ARIA dialog and alertdialog nodes should have an accessible name"
9
- },
10
- "all": [],
11
- "any": ["aria-label", "aria-labelledby", "non-empty-title"],
12
- "none": []
2
+ "id": "aria-dialog-name",
3
+ "selector": "[role=\"dialog\"], [role=\"alertdialog\"]",
4
+ "matches": "no-naming-method-matches",
5
+ "tags": ["cat.aria", "best-practice"],
6
+ "metadata": {
7
+ "description": "Ensures every ARIA dialog and alertdialog node has an accessible name",
8
+ "help": "ARIA dialog and alertdialog nodes must have an accessible name"
9
+ },
10
+ "all": [],
11
+ "any": ["aria-label", "aria-labelledby", "non-empty-title"],
12
+ "none": []
13
13
  }
@@ -1,17 +1,17 @@
1
1
  import { getNodeAttributes } from '../core/utils';
2
2
 
3
3
  function ariaHasAttrMatches(node) {
4
- var aria = /^aria-/;
5
- if (node.hasAttributes()) {
6
- var attrs = getNodeAttributes(node);
7
- for (var i = 0, l = attrs.length; i < l; i++) {
8
- if (aria.test(attrs[i].name)) {
9
- return true;
10
- }
11
- }
12
- }
4
+ var aria = /^aria-/;
5
+ if (node.hasAttributes()) {
6
+ var attrs = getNodeAttributes(node);
7
+ for (var i = 0, l = attrs.length; i < l; i++) {
8
+ if (aria.test(attrs[i].name)) {
9
+ return true;
10
+ }
11
+ }
12
+ }
13
13
 
14
- return false;
14
+ return false;
15
15
  }
16
16
 
17
17
  export default ariaHasAttrMatches;
@@ -1,14 +1,14 @@
1
1
  {
2
- "id": "aria-hidden-body",
3
- "selector": "body",
4
- "excludeHidden": false,
5
- "matches": "is-initiator-matches",
6
- "tags": ["cat.aria", "wcag2a", "wcag412"],
7
- "metadata": {
8
- "description": "Ensures aria-hidden='true' is not present on the document body.",
9
- "help": "aria-hidden='true' must not be present on the document body"
10
- },
11
- "all": [],
12
- "any": ["aria-hidden-body"],
13
- "none": []
2
+ "id": "aria-hidden-body",
3
+ "selector": "body",
4
+ "excludeHidden": false,
5
+ "matches": "is-initiator-matches",
6
+ "tags": ["cat.aria", "wcag2a", "wcag412"],
7
+ "metadata": {
8
+ "description": "Ensures aria-hidden='true' is not present on the document body.",
9
+ "help": "aria-hidden='true' must not be present on the document body"
10
+ },
11
+ "all": [],
12
+ "any": ["aria-hidden-body"],
13
+ "none": []
14
14
  }
@@ -6,17 +6,17 @@ import { getComposedParent } from '../commons/dom';
6
6
  * @return {Boolean}
7
7
  */
8
8
  function shouldMatchElement(el) {
9
- if (!el) {
10
- return true;
11
- }
12
- if (el.getAttribute('aria-hidden') === 'true') {
13
- return false;
14
- }
15
- return shouldMatchElement(getComposedParent(el));
9
+ if (!el) {
10
+ return true;
11
+ }
12
+ if (el.getAttribute('aria-hidden') === 'true') {
13
+ return false;
14
+ }
15
+ return shouldMatchElement(getComposedParent(el));
16
16
  }
17
17
 
18
18
  function ariaHiddenFocusMatches(node) {
19
- return shouldMatchElement(getComposedParent(node));
19
+ return shouldMatchElement(getComposedParent(node));
20
20
  }
21
21
 
22
22
  export default ariaHiddenFocusMatches;
@@ -1,18 +1,18 @@
1
1
  {
2
- "id": "aria-hidden-focus",
3
- "selector": "[aria-hidden=\"true\"]",
4
- "matches": "aria-hidden-focus-matches",
5
- "excludeHidden": false,
6
- "tags": ["cat.name-role-value", "wcag2a", "wcag412", "wcag131"],
7
- "metadata": {
8
- "description": "Ensures aria-hidden elements do not contain focusable elements",
9
- "help": "ARIA hidden element must not contain focusable elements"
10
- },
11
- "all": [
12
- "focusable-modal-open",
13
- "focusable-disabled",
14
- "focusable-not-tabbable"
15
- ],
16
- "any": [],
17
- "none": []
2
+ "id": "aria-hidden-focus",
3
+ "selector": "[aria-hidden=\"true\"]",
4
+ "matches": "aria-hidden-focus-matches",
5
+ "excludeHidden": false,
6
+ "tags": ["cat.name-role-value", "wcag2a", "wcag412", "wcag131"],
7
+ "metadata": {
8
+ "description": "Ensures aria-hidden elements do not contain focusable elements",
9
+ "help": "ARIA hidden element must not contain focusable elements"
10
+ },
11
+ "all": [
12
+ "focusable-modal-open",
13
+ "focusable-disabled",
14
+ "focusable-not-tabbable"
15
+ ],
16
+ "any": [],
17
+ "none": []
18
18
  }
@@ -1,13 +1,13 @@
1
1
  {
2
- "id": "aria-input-field-name",
3
- "selector": "[role=\"combobox\"], [role=\"listbox\"], [role=\"searchbox\"], [role=\"slider\"], [role=\"spinbutton\"], [role=\"textbox\"]",
4
- "matches": "no-naming-method-matches",
5
- "tags": ["cat.aria", "wcag2a", "wcag412", "ACT"],
6
- "metadata": {
7
- "description": "Ensures every ARIA input field has an accessible name",
8
- "help": "ARIA input fields must have an accessible name"
9
- },
10
- "all": [],
11
- "any": ["aria-label", "aria-labelledby", "non-empty-title"],
12
- "none": ["no-implicit-explicit-label"]
2
+ "id": "aria-input-field-name",
3
+ "selector": "[role=\"combobox\"], [role=\"listbox\"], [role=\"searchbox\"], [role=\"slider\"], [role=\"spinbutton\"], [role=\"textbox\"]",
4
+ "matches": "no-naming-method-matches",
5
+ "tags": ["cat.aria", "wcag2a", "wcag412", "ACT"],
6
+ "metadata": {
7
+ "description": "Ensures every ARIA input field has an accessible name",
8
+ "help": "ARIA input fields must have an accessible name"
9
+ },
10
+ "all": [],
11
+ "any": ["aria-label", "aria-labelledby", "non-empty-title"],
12
+ "none": ["no-implicit-explicit-label"]
13
13
  }
@@ -1,13 +1,13 @@
1
1
  {
2
- "id": "aria-meter-name",
3
- "selector": "[role=\"meter\"]",
4
- "matches": "no-naming-method-matches",
5
- "tags": ["cat.aria", "wcag2a", "wcag111"],
6
- "metadata": {
7
- "description": "Ensures every ARIA meter node has an accessible name",
8
- "help": "ARIA meter nodes must have an accessible name"
9
- },
10
- "all": [],
11
- "any": ["aria-label", "aria-labelledby", "non-empty-title"],
12
- "none": []
2
+ "id": "aria-meter-name",
3
+ "selector": "[role=\"meter\"]",
4
+ "matches": "no-naming-method-matches",
5
+ "tags": ["cat.aria", "wcag2a", "wcag111"],
6
+ "metadata": {
7
+ "description": "Ensures every ARIA meter node has an accessible name",
8
+ "help": "ARIA meter nodes must have an accessible name"
9
+ },
10
+ "all": [],
11
+ "any": ["aria-label", "aria-labelledby", "non-empty-title"],
12
+ "none": []
13
13
  }
@@ -1,13 +1,13 @@
1
1
  {
2
- "id": "aria-progressbar-name",
3
- "selector": "[role=\"progressbar\"]",
4
- "matches": "no-naming-method-matches",
5
- "tags": ["cat.aria", "wcag2a", "wcag111"],
6
- "metadata": {
7
- "description": "Ensures every ARIA progressbar node has an accessible name",
8
- "help": "ARIA progressbar nodes must have an accessible name"
9
- },
10
- "all": [],
11
- "any": ["aria-label", "aria-labelledby", "non-empty-title"],
12
- "none": []
2
+ "id": "aria-progressbar-name",
3
+ "selector": "[role=\"progressbar\"]",
4
+ "matches": "no-naming-method-matches",
5
+ "tags": ["cat.aria", "wcag2a", "wcag111"],
6
+ "metadata": {
7
+ "description": "Ensures every ARIA progressbar node has an accessible name",
8
+ "help": "ARIA progressbar nodes must have an accessible name"
9
+ },
10
+ "all": [],
11
+ "any": ["aria-label", "aria-labelledby", "non-empty-title"],
12
+ "none": []
13
13
  }
@@ -1,12 +1,12 @@
1
1
  {
2
- "id": "aria-required-attr",
3
- "selector": "[role]",
4
- "tags": ["cat.aria", "wcag2a", "wcag412"],
5
- "metadata": {
6
- "description": "Ensures elements with ARIA roles have all required ARIA attributes",
7
- "help": "Required ARIA attributes must be provided"
8
- },
9
- "all": [],
10
- "any": ["aria-required-attr"],
11
- "none": []
2
+ "id": "aria-required-attr",
3
+ "selector": "[role]",
4
+ "tags": ["cat.aria", "wcag2a", "wcag412"],
5
+ "metadata": {
6
+ "description": "Ensures elements with ARIA roles have all required ARIA attributes",
7
+ "help": "Required ARIA attributes must be provided"
8
+ },
9
+ "all": [],
10
+ "any": ["aria-required-attr"],
11
+ "none": []
12
12
  }
@@ -1,13 +1,12 @@
1
1
  {
2
- "id": "aria-required-children",
3
- "selector": "[role]",
4
- "matches": "aria-required-children-matches",
5
- "tags": ["cat.aria", "wcag2a", "wcag131"],
6
- "metadata": {
7
- "description": "Ensures elements with an ARIA role that require child roles contain them",
8
- "help": "Certain ARIA roles must contain particular children"
9
- },
10
- "all": [],
11
- "any": ["aria-required-children"],
12
- "none": []
2
+ "id": "aria-required-children",
3
+ "selector": "[role]",
4
+ "tags": ["cat.aria", "wcag2a", "wcag131"],
5
+ "metadata": {
6
+ "description": "Ensures elements with an ARIA role that require child roles contain them",
7
+ "help": "Certain ARIA roles must contain particular children"
8
+ },
9
+ "all": [],
10
+ "any": ["aria-required-children"],
11
+ "none": []
13
12
  }
@@ -1,13 +1,12 @@
1
1
  {
2
- "id": "aria-required-parent",
3
- "selector": "[role]",
4
- "matches": "aria-required-parent-matches",
5
- "tags": ["cat.aria", "wcag2a", "wcag131"],
6
- "metadata": {
7
- "description": "Ensures elements with an ARIA role that require parent roles are contained by them",
8
- "help": "Certain ARIA roles must be contained by particular parents"
9
- },
10
- "all": [],
11
- "any": ["aria-required-parent"],
12
- "none": []
2
+ "id": "aria-required-parent",
3
+ "selector": "[role]",
4
+ "tags": ["cat.aria", "wcag2a", "wcag131"],
5
+ "metadata": {
6
+ "description": "Ensures elements with an ARIA role that require parent roles are contained by them",
7
+ "help": "Certain ARIA roles must be contained by particular parents"
8
+ },
9
+ "all": [],
10
+ "any": ["aria-required-parent"],
11
+ "none": []
13
12
  }