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
@@ -1,17 +1,17 @@
1
1
  {
2
- "id": "non-empty-title",
3
- "evaluate": "attr-non-space-content-evaluate",
4
- "options": {
5
- "attribute": "title"
6
- },
7
- "metadata": {
8
- "impact": "serious",
9
- "messages": {
10
- "pass": "Element has a title attribute",
11
- "fail": {
12
- "noAttr": "Element has no title attribute",
13
- "emptyAttr": "Element has an empty title attribute"
14
- }
15
- }
16
- }
2
+ "id": "non-empty-title",
3
+ "evaluate": "attr-non-space-content-evaluate",
4
+ "options": {
5
+ "attribute": "title"
6
+ },
7
+ "metadata": {
8
+ "impact": "serious",
9
+ "messages": {
10
+ "pass": "Element has a title attribute",
11
+ "fail": {
12
+ "noAttr": "Element has no title attribute",
13
+ "emptyAttr": "Element has an empty title attribute"
14
+ }
15
+ }
16
+ }
17
17
  }
@@ -1,17 +1,17 @@
1
1
  {
2
- "id": "non-empty-value",
3
- "evaluate": "attr-non-space-content-evaluate",
4
- "options": {
5
- "attribute": "value"
6
- },
7
- "metadata": {
8
- "impact": "critical",
9
- "messages": {
10
- "pass": "Element has a non-empty value attribute",
11
- "fail": {
12
- "noAttr": "Element has no value attribute",
13
- "emptyAttr": "Element has an empty value attribute"
14
- }
15
- }
16
- }
2
+ "id": "non-empty-value",
3
+ "evaluate": "attr-non-space-content-evaluate",
4
+ "options": {
5
+ "attribute": "value"
6
+ },
7
+ "metadata": {
8
+ "impact": "critical",
9
+ "messages": {
10
+ "pass": "Element has a non-empty value attribute",
11
+ "fail": {
12
+ "noAttr": "Element has no value attribute",
13
+ "emptyAttr": "Element has an empty value attribute"
14
+ }
15
+ }
16
+ }
17
17
  }
@@ -3,40 +3,40 @@ import { getGlobalAriaAttrs } from '../../commons/standards';
3
3
  import { isFocusable } from '../../commons/dom';
4
4
 
5
5
  function presentationalRoleEvaluate(node, options, virtualNode) {
6
- const role = getRole(virtualNode);
7
- const explicitRole = getExplicitRole(virtualNode);
6
+ const role = getRole(virtualNode);
7
+ const explicitRole = getExplicitRole(virtualNode);
8
8
 
9
- if (['presentation', 'none'].includes(role)) {
10
- this.data({ role });
11
- return true;
12
- }
9
+ if (['presentation', 'none'].includes(role)) {
10
+ this.data({ role });
11
+ return true;
12
+ }
13
13
 
14
- // if the user didn't intended to make this presentational we fail
15
- if (!['presentation', 'none'].includes(explicitRole)) {
16
- return false;
17
- }
14
+ // if the user didn't intended to make this presentational we fail
15
+ if (!['presentation', 'none'].includes(explicitRole)) {
16
+ return false;
17
+ }
18
18
 
19
- // user intended to make this presentational so inform them of
20
- // problems caused by role conflict resolution
21
- const hasGlobalAria = getGlobalAriaAttrs().some(attr =>
22
- virtualNode.hasAttr(attr)
23
- );
24
- const focusable = isFocusable(virtualNode);
25
- let messageKey;
19
+ // user intended to make this presentational so inform them of
20
+ // problems caused by role conflict resolution
21
+ const hasGlobalAria = getGlobalAriaAttrs().some(attr =>
22
+ virtualNode.hasAttr(attr)
23
+ );
24
+ const focusable = isFocusable(virtualNode);
25
+ let messageKey;
26
26
 
27
- if (hasGlobalAria && !focusable) {
28
- messageKey = 'globalAria';
29
- } else if (!hasGlobalAria && focusable) {
30
- messageKey = 'focusable';
31
- } else {
32
- messageKey = 'both';
33
- }
27
+ if (hasGlobalAria && !focusable) {
28
+ messageKey = 'globalAria';
29
+ } else if (!hasGlobalAria && focusable) {
30
+ messageKey = 'focusable';
31
+ } else {
32
+ messageKey = 'both';
33
+ }
34
34
 
35
- this.data({
36
- messageKey,
37
- role
38
- });
39
- return false;
35
+ this.data({
36
+ messageKey,
37
+ role
38
+ });
39
+ return false;
40
40
  }
41
41
 
42
42
  export default presentationalRoleEvaluate;
@@ -1,16 +1,16 @@
1
1
  {
2
- "id": "presentational-role",
3
- "evaluate": "presentational-role-evaluate",
4
- "metadata": {
5
- "impact": "minor",
6
- "messages": {
7
- "pass": "Element's default semantics were overriden with role=\"${data.role}\"",
8
- "fail": {
9
- "default": "Element's default semantics were not overridden with role=\"none\" or role=\"presentation\"",
10
- "globalAria": "Element's role is not presentational because it has a global ARIA attribute",
11
- "focusable": "Element's role is not presentational because it is focusable",
12
- "both": "Element's role is not presentational because it has a global ARIA attribute and is focusable"
13
- }
14
- }
15
- }
2
+ "id": "presentational-role",
3
+ "evaluate": "presentational-role-evaluate",
4
+ "metadata": {
5
+ "impact": "minor",
6
+ "messages": {
7
+ "pass": "Element's default semantics were overriden with role=\"${data.role}\"",
8
+ "fail": {
9
+ "default": "Element's default semantics were not overridden with role=\"none\" or role=\"presentation\"",
10
+ "globalAria": "Element's role is not presentational because it has a global ARIA attribute",
11
+ "focusable": "Element's role is not presentational because it is focusable",
12
+ "both": "Element's role is not presentational because it has a global ARIA attribute and is focusable"
13
+ }
14
+ }
15
+ }
16
16
  }
@@ -1,19 +1,19 @@
1
1
  {
2
- "id": "role-none",
3
- "evaluate": "matches-definition-evaluate",
4
- "deprecated": true,
5
- "options": {
6
- "matcher": {
7
- "attributes": {
8
- "role": "none"
9
- }
10
- }
11
- },
12
- "metadata": {
13
- "impact": "minor",
14
- "messages": {
15
- "pass": "Element's default semantics were overriden with role=\"none\"",
16
- "fail": "Element's default semantics were not overridden with role=\"none\""
17
- }
18
- }
2
+ "id": "role-none",
3
+ "evaluate": "matches-definition-evaluate",
4
+ "deprecated": true,
5
+ "options": {
6
+ "matcher": {
7
+ "attributes": {
8
+ "role": "none"
9
+ }
10
+ }
11
+ },
12
+ "metadata": {
13
+ "impact": "minor",
14
+ "messages": {
15
+ "pass": "Element's default semantics were overriden with role=\"none\"",
16
+ "fail": "Element's default semantics were not overridden with role=\"none\""
17
+ }
18
+ }
19
19
  }
@@ -1,19 +1,19 @@
1
1
  {
2
- "id": "role-presentation",
3
- "evaluate": "matches-definition-evaluate",
4
- "deprecated": true,
5
- "options": {
6
- "matcher": {
7
- "attributes": {
8
- "role": "presentation"
9
- }
10
- }
11
- },
12
- "metadata": {
13
- "impact": "minor",
14
- "messages": {
15
- "pass": "Element's default semantics were overriden with role=\"presentation\"",
16
- "fail": "Element's default semantics were not overridden with role=\"presentation\""
17
- }
18
- }
2
+ "id": "role-presentation",
3
+ "evaluate": "matches-definition-evaluate",
4
+ "deprecated": true,
5
+ "options": {
6
+ "matcher": {
7
+ "attributes": {
8
+ "role": "presentation"
9
+ }
10
+ }
11
+ },
12
+ "metadata": {
13
+ "impact": "minor",
14
+ "messages": {
15
+ "pass": "Element's default semantics were overriden with role=\"presentation\"",
16
+ "fail": "Element's default semantics were not overridden with role=\"presentation\""
17
+ }
18
+ }
19
19
  }
@@ -1,33 +1,29 @@
1
1
  import visibleVirtual from '../../commons/text/visible-virtual';
2
2
 
3
3
  function svgNonEmptyTitleEvaluate(node, options, virtualNode) {
4
- if (!virtualNode.children) {
5
- return undefined;
6
- }
4
+ try {
5
+ const titleNode = virtualNode.children.find(({ props }) => {
6
+ return props.nodeName === 'title';
7
+ });
7
8
 
8
- const titleNode = virtualNode.children.find(({ props }) => {
9
- return props.nodeName === 'title';
10
- });
9
+ if (!titleNode) {
10
+ this.data({
11
+ messageKey: 'noTitle'
12
+ });
13
+ return false;
14
+ }
11
15
 
12
- if (!titleNode) {
13
- this.data({
14
- messageKey: 'noTitle'
15
- });
16
- return false;
17
- }
16
+ if (visibleVirtual(titleNode) === '') {
17
+ this.data({
18
+ messageKey: 'emptyTitle'
19
+ });
20
+ return false;
21
+ }
18
22
 
19
- try {
20
- if (visibleVirtual(titleNode) === '') {
21
- this.data({
22
- messageKey: 'emptyTitle'
23
- });
24
- return false;
25
- }
26
- } catch (e) {
27
- return undefined;
28
- }
29
-
30
- return true;
23
+ return true;
24
+ } catch (e) {
25
+ return undefined;
26
+ }
31
27
  }
32
28
 
33
29
  export default svgNonEmptyTitleEvaluate;
@@ -1,15 +1,15 @@
1
1
  {
2
- "id": "svg-non-empty-title",
3
- "evaluate": "svg-non-empty-title-evaluate",
4
- "metadata": {
5
- "impact": "serious",
6
- "messages": {
7
- "pass": "Element has a child that is a title",
8
- "fail": {
9
- "noTitle": "Element has no child that is a title",
10
- "emptyTitle": "Element child title is empty"
11
- },
12
- "incomplete": "Unable to determine element has a child that is a title"
13
- }
14
- }
2
+ "id": "svg-non-empty-title",
3
+ "evaluate": "svg-non-empty-title-evaluate",
4
+ "metadata": {
5
+ "impact": "serious",
6
+ "messages": {
7
+ "pass": "Element has a child that is a title",
8
+ "fail": {
9
+ "noTitle": "Element has no child that is a title",
10
+ "emptyTitle": "Element child title is empty"
11
+ },
12
+ "incomplete": "Unable to determine element has a child that is a title"
13
+ }
14
+ }
15
15
  }
@@ -1,16 +1,16 @@
1
1
  import { toGrid } from '../../commons/table';
2
2
 
3
3
  function captionFakedEvaluate(node) {
4
- var table = toGrid(node);
5
- var firstRow = table[0];
4
+ var table = toGrid(node);
5
+ var firstRow = table[0];
6
6
 
7
- if (table.length <= 1 || firstRow.length <= 1 || node.rows.length <= 1) {
8
- return true;
9
- }
7
+ if (table.length <= 1 || firstRow.length <= 1 || node.rows.length <= 1) {
8
+ return true;
9
+ }
10
10
 
11
- return firstRow.reduce((out, curr, i) => {
12
- return out || (curr !== firstRow[i + 1] && firstRow[i + 1] !== undefined);
13
- }, false);
11
+ return firstRow.reduce(function(out, curr, i) {
12
+ return out || (curr !== firstRow[i + 1] && firstRow[i + 1] !== undefined);
13
+ }, false);
14
14
  }
15
15
 
16
16
  export default captionFakedEvaluate;
@@ -1,11 +1,11 @@
1
1
  {
2
- "id": "caption-faked",
3
- "evaluate": "caption-faked-evaluate",
4
- "metadata": {
5
- "impact": "serious",
6
- "messages": {
7
- "pass": "The first row of a table is not used as a caption",
8
- "fail": "The first child of the table should be a caption instead of a table cell"
9
- }
10
- }
2
+ "id": "caption-faked",
3
+ "evaluate": "caption-faked-evaluate",
4
+ "metadata": {
5
+ "impact": "serious",
6
+ "messages": {
7
+ "pass": "The first row of a table is not used as a caption",
8
+ "fail": "The first child of the table should be a caption instead of a table cell"
9
+ }
10
+ }
11
11
  }
@@ -1,11 +1,11 @@
1
1
  import { isHTML5 } from '../../commons/dom';
2
2
 
3
3
  function html5ScopeEvaluate(node) {
4
- if (!isHTML5(document)) {
5
- return true;
6
- }
4
+ if (!isHTML5(document)) {
5
+ return true;
6
+ }
7
7
 
8
- return node.nodeName.toUpperCase() === 'TH';
8
+ return node.nodeName.toUpperCase() === 'TH';
9
9
  }
10
10
 
11
11
  export default html5ScopeEvaluate;
@@ -1,11 +1,11 @@
1
1
  {
2
- "id": "html5-scope",
3
- "evaluate": "html5-scope-evaluate",
4
- "metadata": {
5
- "impact": "moderate",
6
- "messages": {
7
- "pass": "Scope attribute is only used on table header elements (<th>)",
8
- "fail": "In HTML 5, scope attributes may only be used on table header elements (<th>)"
9
- }
10
- }
2
+ "id": "html5-scope",
3
+ "evaluate": "html5-scope-evaluate",
4
+ "metadata": {
5
+ "impact": "moderate",
6
+ "messages": {
7
+ "pass": "Scope attribute is only used on table header elements (<th>)",
8
+ "fail": "In HTML 5, scope attributes may only be used on table header elements (<th>)"
9
+ }
10
+ }
11
11
  }
@@ -1,12 +1,12 @@
1
1
  import { accessibleText } from '../../commons/text';
2
2
 
3
3
  function sameCaptionSummaryEvaluate(node) {
4
- // passing node.caption to accessibleText instead of using
5
- // the logic in accessibleTextVirtual on virtualNode
6
- return (
7
- !!(node.summary && node.caption) &&
8
- node.summary.toLowerCase() === accessibleText(node.caption).toLowerCase()
9
- );
4
+ // passing node.caption to accessibleText instead of using
5
+ // the logic in accessibleTextVirtual on virtualNode
6
+ return (
7
+ !!(node.summary && node.caption) &&
8
+ node.summary.toLowerCase() === accessibleText(node.caption).toLowerCase()
9
+ );
10
10
  }
11
11
 
12
12
  export default sameCaptionSummaryEvaluate;
@@ -1,11 +1,11 @@
1
1
  {
2
- "id": "same-caption-summary",
3
- "evaluate": "same-caption-summary-evaluate",
4
- "metadata": {
5
- "impact": "minor",
6
- "messages": {
7
- "pass": "Content of summary attribute and <caption> are not duplicated",
8
- "fail": "Content of summary attribute and <caption> element are identical"
9
- }
10
- }
2
+ "id": "same-caption-summary",
3
+ "evaluate": "same-caption-summary-evaluate",
4
+ "metadata": {
5
+ "impact": "minor",
6
+ "messages": {
7
+ "pass": "Content of summary attribute and <caption> are not duplicated",
8
+ "fail": "Content of summary attribute and <caption> element are identical"
9
+ }
10
+ }
11
11
  }
@@ -1,7 +1,7 @@
1
1
  function scopeValueEvaluate(node, options) {
2
- var value = node.getAttribute('scope').toLowerCase();
2
+ var value = node.getAttribute('scope').toLowerCase();
3
3
 
4
- return options.values.indexOf(value) !== -1;
4
+ return options.values.indexOf(value) !== -1;
5
5
  }
6
6
 
7
7
  export default scopeValueEvaluate;
@@ -1,14 +1,14 @@
1
1
  {
2
- "id": "scope-value",
3
- "evaluate": "scope-value-evaluate",
4
- "options": {
5
- "values": ["row", "col", "rowgroup", "colgroup"]
6
- },
7
- "metadata": {
8
- "impact": "critical",
9
- "messages": {
10
- "pass": "Scope attribute is used correctly",
11
- "fail": "The value of the scope attribute may only be 'row' or 'col'"
12
- }
13
- }
2
+ "id": "scope-value",
3
+ "evaluate": "scope-value-evaluate",
4
+ "options": {
5
+ "values": ["row", "col", "rowgroup", "colgroup"]
6
+ },
7
+ "metadata": {
8
+ "impact": "critical",
9
+ "messages": {
10
+ "pass": "Scope attribute is used correctly",
11
+ "fail": "The value of the scope attribute may only be 'row' or 'col'"
12
+ }
13
+ }
14
14
  }
@@ -3,31 +3,31 @@ import { hasContent } from '../../commons/dom';
3
3
  import { label } from '../../commons/aria';
4
4
 
5
5
  function tdHasHeaderEvaluate(node) {
6
- const badCells = [];
7
- const cells = tableUtils.getAllCells(node);
8
- const tableGrid = tableUtils.toGrid(node);
6
+ const badCells = [];
7
+ const cells = tableUtils.getAllCells(node);
8
+ const tableGrid = tableUtils.toGrid(node);
9
9
 
10
- cells.forEach(cell => {
11
- // For each non-empty data cell that doesn't have an aria label
12
- if (hasContent(cell) && tableUtils.isDataCell(cell) && !label(cell)) {
13
- // Check if it has any headers
14
- const hasHeaders = tableUtils.getHeaders(cell, tableGrid).some(header => {
15
- return header !== null && !!hasContent(header);
16
- });
10
+ cells.forEach(cell => {
11
+ // For each non-empty data cell that doesn't have an aria label
12
+ if (hasContent(cell) && tableUtils.isDataCell(cell) && !label(cell)) {
13
+ // Check if it has any headers
14
+ const hasHeaders = tableUtils.getHeaders(cell, tableGrid).some(header => {
15
+ return header !== null && !!hasContent(header);
16
+ });
17
17
 
18
- // If no headers, put it on the naughty list
19
- if (!hasHeaders) {
20
- badCells.push(cell);
21
- }
22
- }
23
- });
18
+ // If no headers, put it on the naughty list
19
+ if (!hasHeaders) {
20
+ badCells.push(cell);
21
+ }
22
+ }
23
+ });
24
24
 
25
- if (badCells.length) {
26
- this.relatedNodes(badCells);
27
- return false;
28
- }
25
+ if (badCells.length) {
26
+ this.relatedNodes(badCells);
27
+ return false;
28
+ }
29
29
 
30
- return true;
30
+ return true;
31
31
  }
32
32
 
33
33
  export default tdHasHeaderEvaluate;
@@ -1,11 +1,11 @@
1
1
  {
2
- "id": "td-has-header",
3
- "evaluate": "td-has-header-evaluate",
4
- "metadata": {
5
- "impact": "critical",
6
- "messages": {
7
- "pass": "All non-empty data cells have table headers",
8
- "fail": "Some non-empty data cells do not have table headers"
9
- }
10
- }
2
+ "id": "td-has-header",
3
+ "evaluate": "td-has-header-evaluate",
4
+ "metadata": {
5
+ "impact": "critical",
6
+ "messages": {
7
+ "pass": "All non-empty data cells have table headers",
8
+ "fail": "Some non-empty data cells do not have table headers"
9
+ }
10
+ }
11
11
  }