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
@@ -26,31 +26,31 @@ import { getNodeAttributes } from '../../core/utils';
26
26
  * @return {Boolean} True if all `aria-` attributes are valid. False otherwise.
27
27
  */
28
28
  function ariaValidAttrEvaluate(node, options) {
29
- options = Array.isArray(options.value) ? options.value : [];
29
+ options = Array.isArray(options.value) ? options.value : [];
30
30
 
31
- var invalid = [],
32
- aria = /^aria-/;
31
+ var invalid = [],
32
+ aria = /^aria-/;
33
33
 
34
- var attr,
35
- attrs = getNodeAttributes(node);
34
+ var attr,
35
+ attrs = getNodeAttributes(node);
36
36
 
37
- for (var i = 0, l = attrs.length; i < l; i++) {
38
- attr = attrs[i].name;
39
- if (
40
- options.indexOf(attr) === -1 &&
41
- aria.test(attr) &&
42
- !validateAttr(attr)
43
- ) {
44
- invalid.push(attr);
45
- }
46
- }
37
+ for (var i = 0, l = attrs.length; i < l; i++) {
38
+ attr = attrs[i].name;
39
+ if (
40
+ options.indexOf(attr) === -1 &&
41
+ aria.test(attr) &&
42
+ !validateAttr(attr)
43
+ ) {
44
+ invalid.push(attr);
45
+ }
46
+ }
47
47
 
48
- if (invalid.length) {
49
- this.data(invalid);
50
- return false;
51
- }
48
+ if (invalid.length) {
49
+ this.data(invalid);
50
+ return false;
51
+ }
52
52
 
53
- return true;
53
+ return true;
54
54
  }
55
55
 
56
56
  export default ariaValidAttrEvaluate;
@@ -26,97 +26,86 @@ import { getNodeAttributes } from '../../core/utils';
26
26
  * @return {Mixed} True if all ARIA attributes have a valid value. Undefined for invalid `aria-current` or `aria-describedby` values. False otherwise.
27
27
  */
28
28
  function ariaValidAttrValueEvaluate(node, options) {
29
- options = Array.isArray(options.value) ? options.value : [];
29
+ options = Array.isArray(options.value) ? options.value : [];
30
30
 
31
- let needsReview = '';
32
- let messageKey = '';
33
- const invalid = [];
34
- const aria = /^aria-/;
35
- const attrs = getNodeAttributes(node);
31
+ let needsReview = '';
32
+ let messageKey = '';
33
+ const invalid = [];
34
+ const aria = /^aria-/;
35
+ const attrs = getNodeAttributes(node);
36
36
 
37
- const skipAttrs = ['aria-errormessage'];
37
+ const skipAttrs = ['aria-errormessage'];
38
38
 
39
- const preChecks = {
40
- // aria-controls should only check if element exists if the element
41
- // doesn't have aria-expanded=false or aria-selected=false (tabs)
42
- // @see https://github.com/dequelabs/axe-core/issues/1463
43
- 'aria-controls': () => {
44
- return (
45
- node.getAttribute('aria-expanded') !== 'false' &&
46
- node.getAttribute('aria-selected') !== 'false'
47
- );
48
- },
49
- // aria-current should mark as needs review if any value is used that is
50
- // not one of the valid values (since any value is treated as "true")
51
- 'aria-current': () => {
52
- if (!validateAttrValue(node, 'aria-current')) {
53
- needsReview = `aria-current="${node.getAttribute('aria-current')}"`;
54
- messageKey = 'ariaCurrent';
55
- }
39
+ const preChecks = {
40
+ // aria-controls should only check if element exists if the element
41
+ // doesn't have aria-expanded=false or aria-selected=false (tabs)
42
+ // @see https://github.com/dequelabs/axe-core/issues/1463
43
+ 'aria-controls': () => {
44
+ return (
45
+ node.getAttribute('aria-expanded') !== 'false' &&
46
+ node.getAttribute('aria-selected') !== 'false'
47
+ );
48
+ },
49
+ // aria-current should mark as needs review if any value is used that is
50
+ // not one of the valid values (since any value is treated as "true")
51
+ 'aria-current': () => {
52
+ if (!validateAttrValue(node, 'aria-current')) {
53
+ needsReview = `aria-current="${node.getAttribute('aria-current')}"`;
54
+ messageKey = 'ariaCurrent';
55
+ }
56
56
 
57
- return;
58
- },
59
- // aria-owns should only check if element exists if the element
60
- // doesn't have aria-expanded=false (combobox)
61
- // @see https://github.com/dequelabs/axe-core/issues/1524
62
- 'aria-owns': () => {
63
- return node.getAttribute('aria-expanded') !== 'false';
64
- },
65
- // aria-describedby should not mark missing element as violation but
66
- // instead as needs review
67
- // @see https://github.com/dequelabs/axe-core/issues/1151
68
- 'aria-describedby': () => {
69
- if (!validateAttrValue(node, 'aria-describedby')) {
70
- needsReview = `aria-describedby="${node.getAttribute(
71
- 'aria-describedby'
72
- )}"`;
73
- messageKey = 'noId';
74
- }
57
+ return;
58
+ },
59
+ // aria-owns should only check if element exists if the element
60
+ // doesn't have aria-expanded=false (combobox)
61
+ // @see https://github.com/dequelabs/axe-core/issues/1524
62
+ 'aria-owns': () => {
63
+ return node.getAttribute('aria-expanded') !== 'false';
64
+ },
65
+ // aria-describedby should not mark missing element as violation but
66
+ // instead as needs review
67
+ // @see https://github.com/dequelabs/axe-core/issues/1151
68
+ 'aria-describedby': () => {
69
+ if (!validateAttrValue(node, 'aria-describedby')) {
70
+ needsReview = `aria-describedby="${node.getAttribute(
71
+ 'aria-describedby'
72
+ )}"`;
73
+ messageKey = 'noId';
74
+ }
75
75
 
76
- return;
77
- },
78
- // aria-labelledby should not mark missing element as violation but
79
- // instead as needs review
80
- // @see https://github.com/dequelabs/axe-core/issues/2621
81
- 'aria-labelledby': () => {
82
- if (!validateAttrValue(node, 'aria-labelledby')) {
83
- needsReview = `aria-labelledby="${node.getAttribute(
84
- 'aria-labelledby'
85
- )}"`;
86
- messageKey = 'noId';
87
- }
88
- }
89
- };
76
+ return;
77
+ }
78
+ };
90
79
 
91
- for (let i = 0, l = attrs.length; i < l; i++) {
92
- const attr = attrs[i];
93
- const attrName = attr.name;
94
- // skip any attributes handled elsewhere
95
- if (
96
- !skipAttrs.includes(attrName) &&
97
- options.indexOf(attrName) === -1 &&
98
- aria.test(attrName) &&
99
- (preChecks[attrName] ? preChecks[attrName]() : true) &&
100
- !validateAttrValue(node, attrName)
101
- ) {
102
- invalid.push(`${attrName}="${attr.nodeValue}"`);
103
- }
104
- }
80
+ for (let i = 0, l = attrs.length; i < l; i++) {
81
+ const attr = attrs[i];
82
+ const attrName = attr.name;
83
+ // skip any attributes handled elsewhere
84
+ if (
85
+ !skipAttrs.includes(attrName) &&
86
+ options.indexOf(attrName) === -1 &&
87
+ aria.test(attrName) &&
88
+ (preChecks[attrName] ? preChecks[attrName]() : true) &&
89
+ !validateAttrValue(node, attrName)
90
+ ) {
91
+ invalid.push(`${attrName}="${attr.nodeValue}"`);
92
+ }
93
+ }
105
94
 
106
- if (needsReview) {
107
- this.data({
108
- messageKey,
109
- needsReview
110
- });
111
- return undefined;
112
- }
95
+ if (needsReview) {
96
+ this.data({
97
+ messageKey,
98
+ needsReview
99
+ });
100
+ return undefined;
101
+ }
113
102
 
114
- if (invalid.length) {
115
- this.data(invalid);
116
- return false;
117
- }
103
+ if (invalid.length) {
104
+ this.data(invalid);
105
+ return false;
106
+ }
118
107
 
119
- return true;
108
+ return true;
120
109
  }
121
110
 
122
111
  export default ariaValidAttrValueEvaluate;
@@ -1,19 +1,19 @@
1
1
  {
2
- "id": "aria-valid-attr-value",
3
- "evaluate": "aria-valid-attr-value-evaluate",
4
- "options": [],
5
- "metadata": {
6
- "impact": "critical",
7
- "messages": {
8
- "pass": "ARIA attribute values are valid",
9
- "fail": {
10
- "singular": "Invalid ARIA attribute value: ${data.values}",
11
- "plural": "Invalid ARIA attribute values: ${data.values}"
12
- },
13
- "incomplete": {
14
- "noId": "ARIA attribute element ID does not exist on the page: ${data.needsReview}",
15
- "ariaCurrent": "ARIA attribute value is invalid and will be treated as \"aria-current=true\": ${data.needsReview}"
16
- }
17
- }
18
- }
2
+ "id": "aria-valid-attr-value",
3
+ "evaluate": "aria-valid-attr-value-evaluate",
4
+ "options": [],
5
+ "metadata": {
6
+ "impact": "critical",
7
+ "messages": {
8
+ "pass": "ARIA attribute values are valid",
9
+ "fail": {
10
+ "singular": "Invalid ARIA attribute value: ${data.values}",
11
+ "plural": "Invalid ARIA attribute values: ${data.values}"
12
+ },
13
+ "incomplete": {
14
+ "noId": "ARIA attribute element ID does not exist on the page: ${data.needsReview}",
15
+ "ariaCurrent": "ARIA attribute value is invalid and will be treated as \"aria-current=true\": ${data.needsReview}"
16
+ }
17
+ }
18
+ }
19
19
  }
@@ -1,15 +1,15 @@
1
1
  {
2
- "id": "aria-valid-attr",
3
- "evaluate": "aria-valid-attr-evaluate",
4
- "options": [],
5
- "metadata": {
6
- "impact": "critical",
7
- "messages": {
8
- "pass": "ARIA attribute name is valid",
9
- "fail": {
10
- "singular": "Invalid ARIA attribute name: ${data.values}",
11
- "plural": "Invalid ARIA attribute names: ${data.values}"
12
- }
13
- }
14
- }
2
+ "id": "aria-valid-attr",
3
+ "evaluate": "aria-valid-attr-evaluate",
4
+ "options": [],
5
+ "metadata": {
6
+ "impact": "critical",
7
+ "messages": {
8
+ "pass": "ARIA attribute name is valid",
9
+ "fail": {
10
+ "singular": "Invalid ARIA attribute name: ${data.values}",
11
+ "plural": "Invalid ARIA attribute names: ${data.values}"
12
+ }
13
+ }
14
+ }
15
15
  }
@@ -7,7 +7,7 @@ import { tokenList } from '../../core/utils';
7
7
  * @return {Boolean} True if the element uses more than one explicit role. False otherwise.
8
8
  */
9
9
  function fallbackroleEvaluate(node, options, virtualNode) {
10
- return tokenList(virtualNode.attr('role')).length > 1;
10
+ return tokenList(virtualNode.attr('role')).length > 1;
11
11
  }
12
12
 
13
13
  export default fallbackroleEvaluate;
@@ -1,11 +1,11 @@
1
1
  {
2
- "id": "fallbackrole",
3
- "evaluate": "fallbackrole-evaluate",
4
- "metadata": {
5
- "impact": "serious",
6
- "messages": {
7
- "pass": "Only one role value used",
8
- "fail": "Use only one role value, since fallback roles are not supported in older browsers"
9
- }
10
- }
2
+ "id": "fallbackrole",
3
+ "evaluate": "fallbackrole-evaluate",
4
+ "metadata": {
5
+ "impact": "serious",
6
+ "messages": {
7
+ "pass": "Only one role value used",
8
+ "fail": "Use only one role value, since fallback roles are not supported in older browsers"
9
+ }
10
+ }
11
11
  }
@@ -1,11 +1,11 @@
1
1
  import getGlobalAriaAttrs from '../../commons/standards/get-global-aria-attrs';
2
2
 
3
3
  function hasGlobalAriaAttributeEvaluate(node, options, virtualNode) {
4
- const globalAttrs = getGlobalAriaAttrs().filter(attr =>
5
- virtualNode.hasAttr(attr)
6
- );
7
- this.data(globalAttrs);
8
- return globalAttrs.length > 0;
4
+ const globalAttrs = getGlobalAriaAttrs().filter(attr =>
5
+ virtualNode.hasAttr(attr)
6
+ );
7
+ this.data(globalAttrs);
8
+ return globalAttrs.length > 0;
9
9
  }
10
10
 
11
11
  export default hasGlobalAriaAttributeEvaluate;
@@ -1,14 +1,14 @@
1
1
  {
2
- "id": "has-global-aria-attribute",
3
- "evaluate": "has-global-aria-attribute-evaluate",
4
- "metadata": {
5
- "impact": "minor",
6
- "messages": {
7
- "pass": {
8
- "singular": "Element has global ARIA attribute: ${data.values}",
9
- "plural": "Element has global ARIA attributes: ${data.values}"
10
- },
11
- "fail": "Element does not have global ARIA attribute"
12
- }
13
- }
2
+ "id": "has-global-aria-attribute",
3
+ "evaluate": "has-global-aria-attribute-evaluate",
4
+ "metadata": {
5
+ "impact": "minor",
6
+ "messages": {
7
+ "pass": {
8
+ "singular": "Element has global ARIA attribute: ${data.values}",
9
+ "plural": "Element has global ARIA attributes: ${data.values}"
10
+ },
11
+ "fail": "Element does not have global ARIA attribute"
12
+ }
13
+ }
14
14
  }
@@ -9,12 +9,12 @@ import { getRoleType } from '../../commons/aria';
9
9
  * @return {Boolean} True if the element uses a `widget` or `composite` role. False otherwise.
10
10
  */
11
11
  function hasWidgetRoleEvaluate(node) {
12
- const role = node.getAttribute('role');
13
- if (role === null) {
14
- return false;
15
- }
16
- const roleType = getRoleType(role);
17
- return roleType === 'widget' || roleType === 'composite';
12
+ const role = node.getAttribute('role');
13
+ if (role === null) {
14
+ return false;
15
+ }
16
+ const roleType = getRoleType(role);
17
+ return roleType === 'widget' || roleType === 'composite';
18
18
  }
19
19
 
20
20
  export default hasWidgetRoleEvaluate;
@@ -1,12 +1,12 @@
1
1
  {
2
- "id": "has-widget-role",
3
- "evaluate": "has-widget-role-evaluate",
4
- "options": [],
5
- "metadata": {
6
- "impact": "minor",
7
- "messages": {
8
- "pass": "Element has a widget role.",
9
- "fail": "Element does not have a widget role."
10
- }
11
- }
2
+ "id": "has-widget-role",
3
+ "evaluate": "has-widget-role-evaluate",
4
+ "options": [],
5
+ "metadata": {
6
+ "impact": "minor",
7
+ "messages": {
8
+ "pass": "Element has a widget role.",
9
+ "fail": "Element does not have a widget role."
10
+ }
11
+ }
12
12
  }
@@ -26,20 +26,20 @@ import { tokenList } from '../../core/utils';
26
26
  * @return {Boolean} True if the element uses an invalid role. False otherwise.
27
27
  */
28
28
  function invalidroleEvaluate(node, options, virtualNode) {
29
- const allRoles = tokenList(virtualNode.attr('role'));
30
- const allInvalid = allRoles.every(
31
- role => !isValidRole(role, { allowAbstract: true })
32
- );
29
+ const allRoles = tokenList(virtualNode.attr('role'));
30
+ const allInvalid = allRoles.every(
31
+ role => !isValidRole(role, { allowAbstract: true })
32
+ );
33
33
 
34
- /**
35
- * Only fail when all the roles are invalid
36
- */
37
- if (allInvalid) {
38
- this.data(allRoles);
39
- return true;
40
- }
34
+ /**
35
+ * Only fail when all the roles are invalid
36
+ */
37
+ if (allInvalid) {
38
+ this.data(allRoles);
39
+ return true;
40
+ }
41
41
 
42
- return false;
42
+ return false;
43
43
  }
44
44
 
45
45
  export default invalidroleEvaluate;
@@ -1,14 +1,14 @@
1
1
  {
2
- "id": "invalidrole",
3
- "evaluate": "invalidrole-evaluate",
4
- "metadata": {
5
- "impact": "critical",
6
- "messages": {
7
- "pass": "ARIA role is valid",
8
- "fail": {
9
- "singular": "Role must be one of the valid ARIA roles: ${data.values}",
10
- "plural": "Roles must be one of the valid ARIA roles: ${data.values}"
11
- }
12
- }
13
- }
2
+ "id": "invalidrole",
3
+ "evaluate": "invalidrole-evaluate",
4
+ "metadata": {
5
+ "impact": "critical",
6
+ "messages": {
7
+ "pass": "ARIA role is valid",
8
+ "fail": {
9
+ "singular": "Role must be one of the valid ARIA roles: ${data.values}",
10
+ "plural": "Roles must be one of the valid ARIA roles: ${data.values}"
11
+ }
12
+ }
13
+ }
14
14
  }
@@ -1,7 +1,7 @@
1
1
  import { isFocusable } from '../../commons/dom';
2
2
 
3
3
  function isElementFocusableEvaluate(node, options, virtualNode) {
4
- return isFocusable(virtualNode);
4
+ return isFocusable(virtualNode);
5
5
  }
6
6
 
7
7
  export default isElementFocusableEvaluate;
@@ -1,11 +1,11 @@
1
1
  {
2
- "id": "is-element-focusable",
3
- "evaluate": "is-element-focusable-evaluate",
4
- "metadata": {
5
- "impact": "minor",
6
- "messages": {
7
- "pass": "Element is focusable.",
8
- "fail": "Element is not focusable."
9
- }
10
- }
2
+ "id": "is-element-focusable",
3
+ "evaluate": "is-element-focusable-evaluate",
4
+ "metadata": {
5
+ "impact": "minor",
6
+ "messages": {
7
+ "pass": "Element is focusable.",
8
+ "fail": "Element is not focusable."
9
+ }
10
+ }
11
11
  }
@@ -24,31 +24,29 @@ import { sanitize, labelText, accessibleTextVirtual } from '../../commons/text';
24
24
  * @return {Mixed} False if the element does not have an explicit label and accessible name or if there is no mismatch between them. Undefined if the element has an explicit label but no accessible name or if the accessible name does not include the label text.
25
25
  */
26
26
  function noImplicitExplicitLabelEvaluate(node, options, virtualNode) {
27
- const role = getRole(virtualNode, { noImplicit: true });
28
- this.data(role);
27
+ const role = getRole(virtualNode, { noImplicit: true });
28
+ this.data(role);
29
29
 
30
- let label;
31
- let accText;
32
- try {
33
- label = sanitize(labelText(virtualNode)).toLowerCase();
34
- accText = sanitize(accessibleTextVirtual(virtualNode)).toLowerCase();
35
- } catch (e) {
36
- return undefined;
37
- }
30
+ try {
31
+ const label = sanitize(labelText(virtualNode)).toLowerCase();
32
+ const accText = sanitize(accessibleTextVirtual(virtualNode)).toLowerCase();
38
33
 
39
- if (!accText && !label) {
40
- return false;
41
- }
34
+ if (!accText && !label) {
35
+ return false;
36
+ }
42
37
 
43
- if (!accText && label) {
44
- return undefined;
45
- }
38
+ if (!accText && label) {
39
+ return undefined;
40
+ }
46
41
 
47
- if (!accText.includes(label)) {
48
- return undefined;
49
- }
42
+ if (!accText.includes(label)) {
43
+ return undefined;
44
+ }
50
45
 
51
- return false;
46
+ return false;
47
+ } catch (e) {
48
+ return undefined;
49
+ }
52
50
  }
53
51
 
54
52
  export default noImplicitExplicitLabelEvaluate;
@@ -1,11 +1,11 @@
1
1
  {
2
- "id": "no-implicit-explicit-label",
3
- "evaluate": "no-implicit-explicit-label-evaluate",
4
- "metadata": {
5
- "impact": "moderate",
6
- "messages": {
7
- "pass": "There is no mismatch between a <label> and accessible name",
8
- "incomplete": "Check that the <label> does not need be part of the ARIA ${data} field's name"
9
- }
10
- }
2
+ "id": "no-implicit-explicit-label",
3
+ "evaluate": "no-implicit-explicit-label-evaluate",
4
+ "metadata": {
5
+ "impact": "moderate",
6
+ "messages": {
7
+ "pass": "There is no mismatch between a <label> and accessible name",
8
+ "incomplete": "Check that the <label> does not need be part of the ARIA ${data} field's name"
9
+ }
10
+ }
11
11
  }
@@ -8,8 +8,8 @@ import { isUnsupportedRole, getRole } from '../../commons/aria';
8
8
  * @memberof checks
9
9
  * @return {Boolean} True if the elements semantic role is unsupported. False otherwise.
10
10
  */
11
- function unsupportedroleEvaluate(node, options, virtualNode) {
12
- return isUnsupportedRole(getRole(virtualNode));
11
+ function unsupportedroleEvaluate(node) {
12
+ return isUnsupportedRole(getRole(node));
13
13
  }
14
14
 
15
15
  export default unsupportedroleEvaluate;
@@ -1,11 +1,11 @@
1
1
  {
2
- "id": "unsupportedrole",
3
- "evaluate": "unsupportedrole-evaluate",
4
- "metadata": {
5
- "impact": "critical",
6
- "messages": {
7
- "pass": "ARIA role is supported",
8
- "fail": "The role used is not widely supported in screen readers and assistive technologies: ${data.values}"
9
- }
10
- }
2
+ "id": "unsupportedrole",
3
+ "evaluate": "unsupportedrole-evaluate",
4
+ "metadata": {
5
+ "impact": "critical",
6
+ "messages": {
7
+ "pass": "ARIA role is supported",
8
+ "fail": "The role used is not widely supported in screen readers and assistive technologies: ${data.values}"
9
+ }
10
+ }
11
11
  }