axe-core 4.2.4 → 4.3.0

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 (681) hide show
  1. package/CHANGELOG.md +37 -2
  2. package/README.md +24 -2
  3. package/axe.d.ts +60 -4
  4. package/axe.js +1198 -830
  5. package/axe.min.js +2 -2
  6. package/locales/de.json +1 -1
  7. package/locales/pt_BR.json +163 -44
  8. package/package.json +7 -1
  9. package/.eslintrc.js +0 -112
  10. package/.prettierrc.json +0 -10
  11. package/CONTRIBUTING.md +0 -242
  12. package/bower.json +0 -40
  13. package/doc/API.md +0 -963
  14. package/doc/accessibility-supported.md +0 -37
  15. package/doc/act-rules-format.md +0 -37
  16. package/doc/aria-supported.md +0 -13
  17. package/doc/backwards-compatibility-doc.md +0 -94
  18. package/doc/check-message-template.md +0 -124
  19. package/doc/check-options.md +0 -437
  20. package/doc/code-submission-guidelines.md +0 -171
  21. package/doc/developer-guide.md +0 -515
  22. package/doc/examples/chrome-debugging-protocol/README.md +0 -13
  23. package/doc/examples/chrome-debugging-protocol/axe-cdp.js +0 -81
  24. package/doc/examples/chrome-debugging-protocol/package.json +0 -11
  25. package/doc/examples/html-handlebars.md +0 -164
  26. package/doc/examples/jasmine/README.md +0 -35
  27. package/doc/examples/jasmine/karma.conf.js +0 -29
  28. package/doc/examples/jasmine/package-lock.json +0 -1489
  29. package/doc/examples/jasmine/package.json +0 -21
  30. package/doc/examples/jasmine/spec/a11y.js +0 -36
  31. package/doc/examples/jest_react/README.md +0 -41
  32. package/doc/examples/jest_react/link.js +0 -7
  33. package/doc/examples/jest_react/link.test.js +0 -24
  34. package/doc/examples/jest_react/package-lock.json +0 -7525
  35. package/doc/examples/jest_react/package.json +0 -28
  36. package/doc/examples/jest_react/test-helpers.js +0 -21
  37. package/doc/examples/jsdom/package.json +0 -15
  38. package/doc/examples/mocha/README.md +0 -35
  39. package/doc/examples/mocha/karma.conf.js +0 -29
  40. package/doc/examples/mocha/package-lock.json +0 -1671
  41. package/doc/examples/mocha/package.json +0 -22
  42. package/doc/examples/phantomjs/README.md +0 -17
  43. package/doc/examples/phantomjs/axe-phantom.js +0 -53
  44. package/doc/examples/phantomjs/package-lock.json +0 -862
  45. package/doc/examples/phantomjs/package.json +0 -19
  46. package/doc/examples/puppeteer/README.md +0 -12
  47. package/doc/examples/puppeteer/axe-puppeteer.js +0 -60
  48. package/doc/examples/puppeteer/package.json +0 -13
  49. package/doc/examples/qunit/README.md +0 -37
  50. package/doc/examples/qunit/package-lock.json +0 -2951
  51. package/doc/examples/qunit/package.json +0 -21
  52. package/doc/examples/test-examples.js +0 -40
  53. package/doc/frame-messenger.md +0 -107
  54. package/doc/plugins.md +0 -123
  55. package/doc/projects.md +0 -56
  56. package/doc/rule-descriptions.md +0 -135
  57. package/doc/rule-development.md +0 -123
  58. package/doc/rule-proposal.md +0 -106
  59. package/doc/standards-object.md +0 -147
  60. package/lib/checks/aria/abstractrole-evaluate.js +0 -40
  61. package/lib/checks/aria/abstractrole.json +0 -14
  62. package/lib/checks/aria/aria-allowed-attr-evaluate.js +0 -58
  63. package/lib/checks/aria/aria-allowed-attr.json +0 -14
  64. package/lib/checks/aria/aria-allowed-role-evaluate.js +0 -42
  65. package/lib/checks/aria/aria-allowed-role.json +0 -22
  66. package/lib/checks/aria/aria-errormessage-evaluate.js +0 -68
  67. package/lib/checks/aria/aria-errormessage.json +0 -18
  68. package/lib/checks/aria/aria-hidden-body-evaluate.js +0 -11
  69. package/lib/checks/aria/aria-hidden-body.json +0 -11
  70. package/lib/checks/aria/aria-prohibited-attr-evaluate.js +0 -68
  71. package/lib/checks/aria/aria-prohibited-attr.json +0 -15
  72. package/lib/checks/aria/aria-required-attr-evaluate.js +0 -67
  73. package/lib/checks/aria/aria-required-attr.json +0 -14
  74. package/lib/checks/aria/aria-required-children-evaluate.js +0 -137
  75. package/lib/checks/aria/aria-required-children.json +0 -32
  76. package/lib/checks/aria/aria-required-parent-evaluate.js +0 -120
  77. package/lib/checks/aria/aria-required-parent.json +0 -17
  78. package/lib/checks/aria/aria-roledescription-evaluate.js +0 -25
  79. package/lib/checks/aria/aria-roledescription.json +0 -23
  80. package/lib/checks/aria/aria-unsupported-attr-evaluate.js +0 -53
  81. package/lib/checks/aria/aria-unsupported-attr.json +0 -11
  82. package/lib/checks/aria/aria-valid-attr-evaluate.js +0 -51
  83. package/lib/checks/aria/aria-valid-attr-value-evaluate.js +0 -122
  84. package/lib/checks/aria/aria-valid-attr-value.json +0 -19
  85. package/lib/checks/aria/aria-valid-attr.json +0 -15
  86. package/lib/checks/aria/fallbackrole-evaluate.js +0 -13
  87. package/lib/checks/aria/fallbackrole.json +0 -11
  88. package/lib/checks/aria/has-global-aria-attribute-evaluate.js +0 -11
  89. package/lib/checks/aria/has-global-aria-attribute.json +0 -14
  90. package/lib/checks/aria/has-widget-role-evaluate.js +0 -20
  91. package/lib/checks/aria/has-widget-role.json +0 -12
  92. package/lib/checks/aria/invalidrole-evaluate.js +0 -45
  93. package/lib/checks/aria/invalidrole.json +0 -14
  94. package/lib/checks/aria/is-element-focusable-evaluate.js +0 -7
  95. package/lib/checks/aria/is-element-focusable.json +0 -11
  96. package/lib/checks/aria/no-implicit-explicit-label-evaluate.js +0 -54
  97. package/lib/checks/aria/no-implicit-explicit-label.json +0 -11
  98. package/lib/checks/aria/unsupportedrole-evaluate.js +0 -15
  99. package/lib/checks/aria/unsupportedrole.json +0 -11
  100. package/lib/checks/aria/valid-scrollable-semantics-evaluate.js +0 -70
  101. package/lib/checks/aria/valid-scrollable-semantics.json +0 -14
  102. package/lib/checks/color/color-contrast-evaluate.js +0 -178
  103. package/lib/checks/color/color-contrast.json +0 -42
  104. package/lib/checks/color/link-in-text-block-evaluate.js +0 -94
  105. package/lib/checks/color/link-in-text-block.json +0 -19
  106. package/lib/checks/forms/autocomplete-appropriate-evaluate.js +0 -84
  107. package/lib/checks/forms/autocomplete-appropriate.json +0 -11
  108. package/lib/checks/forms/autocomplete-valid-evaluate.js +0 -8
  109. package/lib/checks/forms/autocomplete-valid.json +0 -11
  110. package/lib/checks/generic/README.md +0 -13
  111. package/lib/checks/generic/attr-non-space-content-evaluate.js +0 -28
  112. package/lib/checks/generic/has-descendant-after.js +0 -15
  113. package/lib/checks/generic/has-descendant-evaluate.js +0 -20
  114. package/lib/checks/generic/has-text-content-evaluate.js +0 -11
  115. package/lib/checks/generic/matches-definition-evaluate.js +0 -7
  116. package/lib/checks/generic/page-no-duplicate-after.js +0 -6
  117. package/lib/checks/generic/page-no-duplicate-evaluate.js +0 -42
  118. package/lib/checks/index.js +0 -11
  119. package/lib/checks/keyboard/accesskeys-after.js +0 -23
  120. package/lib/checks/keyboard/accesskeys-evaluate.js +0 -11
  121. package/lib/checks/keyboard/accesskeys.json +0 -12
  122. package/lib/checks/keyboard/focusable-content-evaluate.js +0 -20
  123. package/lib/checks/keyboard/focusable-content.json +0 -11
  124. package/lib/checks/keyboard/focusable-disabled-evaluate.js +0 -36
  125. package/lib/checks/keyboard/focusable-disabled.json +0 -11
  126. package/lib/checks/keyboard/focusable-element-evaluate.js +0 -47
  127. package/lib/checks/keyboard/focusable-element.json +0 -11
  128. package/lib/checks/keyboard/focusable-modal-open-evaluate.js +0 -20
  129. package/lib/checks/keyboard/focusable-modal-open.json +0 -11
  130. package/lib/checks/keyboard/focusable-no-name-evaluate.js +0 -18
  131. package/lib/checks/keyboard/focusable-no-name.json +0 -12
  132. package/lib/checks/keyboard/focusable-not-tabbable-evaluate.js +0 -36
  133. package/lib/checks/keyboard/focusable-not-tabbable.json +0 -11
  134. package/lib/checks/keyboard/frame-focusable-content.json +0 -12
  135. package/lib/checks/keyboard/landmark-is-top-level-evaluate.js +0 -31
  136. package/lib/checks/keyboard/landmark-is-top-level.json +0 -11
  137. package/lib/checks/keyboard/no-focusable-content-evaluate.js +0 -35
  138. package/lib/checks/keyboard/no-focusable-content.json +0 -12
  139. package/lib/checks/keyboard/page-has-heading-one.json +0 -15
  140. package/lib/checks/keyboard/page-has-main.json +0 -15
  141. package/lib/checks/keyboard/page-no-duplicate-banner.json +0 -16
  142. package/lib/checks/keyboard/page-no-duplicate-contentinfo.json +0 -16
  143. package/lib/checks/keyboard/page-no-duplicate-main.json +0 -15
  144. package/lib/checks/keyboard/tabindex-evaluate.js +0 -10
  145. package/lib/checks/keyboard/tabindex.json +0 -11
  146. package/lib/checks/label/alt-space-value-evaluate.js +0 -7
  147. package/lib/checks/label/alt-space-value.json +0 -11
  148. package/lib/checks/label/duplicate-img-label-evaluate.js +0 -23
  149. package/lib/checks/label/duplicate-img-label.json +0 -14
  150. package/lib/checks/label/explicit-evaluate.js +0 -34
  151. package/lib/checks/label/explicit.json +0 -12
  152. package/lib/checks/label/help-same-as-label-evaluate.js +0 -28
  153. package/lib/checks/label/help-same-as-label.json +0 -12
  154. package/lib/checks/label/hidden-explicit-label-evaluate.js +0 -30
  155. package/lib/checks/label/hidden-explicit-label.json +0 -12
  156. package/lib/checks/label/implicit-evaluate.js +0 -16
  157. package/lib/checks/label/implicit.json +0 -12
  158. package/lib/checks/label/label-content-name-mismatch-evaluate.js +0 -71
  159. package/lib/checks/label/label-content-name-mismatch.json +0 -15
  160. package/lib/checks/label/multiple-label-evaluate.js +0 -44
  161. package/lib/checks/label/multiple-label.json +0 -11
  162. package/lib/checks/label/title-only-evaluate.js +0 -11
  163. package/lib/checks/label/title-only.json +0 -11
  164. package/lib/checks/landmarks/landmark-is-unique-after.js +0 -27
  165. package/lib/checks/landmarks/landmark-is-unique-evaluate.js +0 -14
  166. package/lib/checks/landmarks/landmark-is-unique.json +0 -12
  167. package/lib/checks/language/has-lang-evaluate.js +0 -39
  168. package/lib/checks/language/has-lang.json +0 -17
  169. package/lib/checks/language/valid-lang-evaluate.js +0 -36
  170. package/lib/checks/language/valid-lang.json +0 -14
  171. package/lib/checks/language/xml-lang-mismatch-evaluate.js +0 -10
  172. package/lib/checks/language/xml-lang-mismatch.json +0 -11
  173. package/lib/checks/lists/dlitem-evaluate.js +0 -30
  174. package/lib/checks/lists/dlitem.json +0 -11
  175. package/lib/checks/lists/listitem-evaluate.js +0 -28
  176. package/lib/checks/lists/listitem.json +0 -14
  177. package/lib/checks/lists/only-dlitems-evaluate.js +0 -51
  178. package/lib/checks/lists/only-dlitems.json +0 -11
  179. package/lib/checks/lists/only-listitems-evaluate.js +0 -63
  180. package/lib/checks/lists/only-listitems.json +0 -14
  181. package/lib/checks/lists/structured-dlitems-evaluate.js +0 -26
  182. package/lib/checks/lists/structured-dlitems.json +0 -11
  183. package/lib/checks/media/caption-evaluate.js +0 -13
  184. package/lib/checks/media/caption.json +0 -11
  185. package/lib/checks/media/frame-tested-after.js +0 -31
  186. package/lib/checks/media/frame-tested-evaluate.js +0 -6
  187. package/lib/checks/media/frame-tested.json +0 -16
  188. package/lib/checks/media/no-autoplay-audio-evaluate.js +0 -97
  189. package/lib/checks/media/no-autoplay-audio.json +0 -15
  190. package/lib/checks/mobile/css-orientation-lock-evaluate.js +0 -254
  191. package/lib/checks/mobile/css-orientation-lock.json +0 -15
  192. package/lib/checks/mobile/meta-viewport-large.json +0 -15
  193. package/lib/checks/mobile/meta-viewport-scale-evaluate.js +0 -71
  194. package/lib/checks/mobile/meta-viewport.json +0 -14
  195. package/lib/checks/navigation/header-present.json +0 -15
  196. package/lib/checks/navigation/heading-order-after.js +0 -132
  197. package/lib/checks/navigation/heading-order-evaluate.js +0 -58
  198. package/lib/checks/navigation/heading-order.json +0 -13
  199. package/lib/checks/navigation/identical-links-same-purpose-after.js +0 -106
  200. package/lib/checks/navigation/identical-links-same-purpose-evaluate.js +0 -35
  201. package/lib/checks/navigation/identical-links-same-purpose.json +0 -12
  202. package/lib/checks/navigation/internal-link-present-evaluate.js +0 -10
  203. package/lib/checks/navigation/internal-link-present.json +0 -11
  204. package/lib/checks/navigation/landmark.json +0 -14
  205. package/lib/checks/navigation/meta-refresh-evaluate.js +0 -8
  206. package/lib/checks/navigation/meta-refresh.json +0 -11
  207. package/lib/checks/navigation/p-as-heading-evaluate.js +0 -98
  208. package/lib/checks/navigation/p-as-heading.json +0 -30
  209. package/lib/checks/navigation/region-evaluate.js +0 -106
  210. package/lib/checks/navigation/region.json +0 -14
  211. package/lib/checks/navigation/skip-link-evaluate.js +0 -11
  212. package/lib/checks/navigation/skip-link.json +0 -12
  213. package/lib/checks/navigation/unique-frame-title-after.js +0 -13
  214. package/lib/checks/navigation/unique-frame-title-evaluate.js +0 -9
  215. package/lib/checks/navigation/unique-frame-title.json +0 -12
  216. package/lib/checks/parsing/duplicate-id-active.json +0 -12
  217. package/lib/checks/parsing/duplicate-id-after.js +0 -12
  218. package/lib/checks/parsing/duplicate-id-aria.json +0 -12
  219. package/lib/checks/parsing/duplicate-id-evaluate.js +0 -24
  220. package/lib/checks/parsing/duplicate-id.json +0 -12
  221. package/lib/checks/shared/aria-label-evaluate.js +0 -8
  222. package/lib/checks/shared/aria-label.json +0 -11
  223. package/lib/checks/shared/aria-labelledby-evaluate.js +0 -12
  224. package/lib/checks/shared/aria-labelledby.json +0 -12
  225. package/lib/checks/shared/avoid-inline-spacing-evaluate.js +0 -16
  226. package/lib/checks/shared/avoid-inline-spacing.json +0 -17
  227. package/lib/checks/shared/button-has-visible-text.json +0 -12
  228. package/lib/checks/shared/doc-has-title-evaluate.js +0 -8
  229. package/lib/checks/shared/doc-has-title.json +0 -11
  230. package/lib/checks/shared/exists-evaluate.js +0 -5
  231. package/lib/checks/shared/exists.json +0 -11
  232. package/lib/checks/shared/has-alt-evaluate.js +0 -10
  233. package/lib/checks/shared/has-alt.json +0 -11
  234. package/lib/checks/shared/has-visible-text.json +0 -12
  235. package/lib/checks/shared/is-on-screen-evaluate.js +0 -8
  236. package/lib/checks/shared/is-on-screen.json +0 -11
  237. package/lib/checks/shared/non-empty-alt.json +0 -17
  238. package/lib/checks/shared/non-empty-if-present-evaluate.js +0 -19
  239. package/lib/checks/shared/non-empty-if-present.json +0 -14
  240. package/lib/checks/shared/non-empty-placeholder.json +0 -17
  241. package/lib/checks/shared/non-empty-title.json +0 -17
  242. package/lib/checks/shared/non-empty-value.json +0 -17
  243. package/lib/checks/shared/presentational-role-evaluate.js +0 -42
  244. package/lib/checks/shared/presentational-role.json +0 -16
  245. package/lib/checks/shared/role-none.json +0 -19
  246. package/lib/checks/shared/role-presentation.json +0 -19
  247. package/lib/checks/shared/svg-non-empty-title-evaluate.js +0 -33
  248. package/lib/checks/shared/svg-non-empty-title.json +0 -15
  249. package/lib/checks/tables/caption-faked-evaluate.js +0 -16
  250. package/lib/checks/tables/caption-faked.json +0 -11
  251. package/lib/checks/tables/html5-scope-evaluate.js +0 -11
  252. package/lib/checks/tables/html5-scope.json +0 -11
  253. package/lib/checks/tables/same-caption-summary-evaluate.js +0 -12
  254. package/lib/checks/tables/same-caption-summary.json +0 -11
  255. package/lib/checks/tables/scope-value-evaluate.js +0 -7
  256. package/lib/checks/tables/scope-value.json +0 -14
  257. package/lib/checks/tables/td-has-header-evaluate.js +0 -33
  258. package/lib/checks/tables/td-has-header.json +0 -11
  259. package/lib/checks/tables/td-headers-attr-evaluate.js +0 -67
  260. package/lib/checks/tables/td-headers-attr.json +0 -12
  261. package/lib/checks/tables/th-has-data-cells-evaluate.js +0 -82
  262. package/lib/checks/tables/th-has-data-cells.json +0 -12
  263. package/lib/checks/visibility/hidden-content-evaluate.js +0 -34
  264. package/lib/checks/visibility/hidden-content.json +0 -12
  265. package/lib/commons/aria/allowed-attr.js +0 -31
  266. package/lib/commons/aria/arialabel-text.js +0 -21
  267. package/lib/commons/aria/arialabelledby-text.js +0 -65
  268. package/lib/commons/aria/get-accessible-refs.js +0 -73
  269. package/lib/commons/aria/get-element-unallowed-roles.js +0 -110
  270. package/lib/commons/aria/get-explicit-role.js +0 -26
  271. package/lib/commons/aria/get-owned-virtual.js +0 -27
  272. package/lib/commons/aria/get-role-type.js +0 -21
  273. package/lib/commons/aria/get-role.js +0 -178
  274. package/lib/commons/aria/get-roles-by-type.js +0 -16
  275. package/lib/commons/aria/get-roles-with-name-from-contents.js +0 -15
  276. package/lib/commons/aria/implicit-nodes.js +0 -23
  277. package/lib/commons/aria/implicit-role.js +0 -44
  278. package/lib/commons/aria/index.js +0 -32
  279. package/lib/commons/aria/is-accessible-ref.js +0 -12
  280. package/lib/commons/aria/is-aria-role-allowed-on-element.js +0 -32
  281. package/lib/commons/aria/is-unsupported-role.js +0 -16
  282. package/lib/commons/aria/is-valid-role.js +0 -22
  283. package/lib/commons/aria/label-virtual.js +0 -46
  284. package/lib/commons/aria/label.js +0 -17
  285. package/lib/commons/aria/lookup-table.js +0 -2435
  286. package/lib/commons/aria/named-from-contents.js +0 -39
  287. package/lib/commons/aria/required-attr.js +0 -21
  288. package/lib/commons/aria/required-context.js +0 -21
  289. package/lib/commons/aria/required-owned.js +0 -21
  290. package/lib/commons/aria/validate-attr-value.js +0 -70
  291. package/lib/commons/aria/validate-attr.js +0 -16
  292. package/lib/commons/color/center-point-of-rect.js +0 -31
  293. package/lib/commons/color/color.js +0 -250
  294. package/lib/commons/color/element-has-image.js +0 -35
  295. package/lib/commons/color/element-is-distinct.js +0 -87
  296. package/lib/commons/color/filtered-rect-stack.js +0 -51
  297. package/lib/commons/color/flatten-colors.js +0 -22
  298. package/lib/commons/color/get-background-color.js +0 -84
  299. package/lib/commons/color/get-background-stack.js +0 -130
  300. package/lib/commons/color/get-contrast.js +0 -27
  301. package/lib/commons/color/get-foreground-color.js +0 -69
  302. package/lib/commons/color/get-own-background-color.js +0 -24
  303. package/lib/commons/color/get-rect-stack.js +0 -32
  304. package/lib/commons/color/get-text-shadow-colors.js +0 -121
  305. package/lib/commons/color/has-valid-contrast-ratio.js +0 -30
  306. package/lib/commons/color/incomplete-data.js +0 -47
  307. package/lib/commons/color/index.js +0 -20
  308. package/lib/commons/dom/find-elms-in-context.js +0 -31
  309. package/lib/commons/dom/find-up-virtual.js +0 -52
  310. package/lib/commons/dom/find-up.js +0 -20
  311. package/lib/commons/dom/focus-disabled.js +0 -30
  312. package/lib/commons/dom/get-composed-parent.js +0 -26
  313. package/lib/commons/dom/get-element-by-reference.js +0 -34
  314. package/lib/commons/dom/get-element-coordinates.js +0 -38
  315. package/lib/commons/dom/get-element-stack.js +0 -28
  316. package/lib/commons/dom/get-rect-stack.js +0 -514
  317. package/lib/commons/dom/get-root-node.js +0 -12
  318. package/lib/commons/dom/get-scroll-offset.js +0 -32
  319. package/lib/commons/dom/get-tabbable-elements.js +0 -26
  320. package/lib/commons/dom/get-text-element-stack.js +0 -89
  321. package/lib/commons/dom/get-viewport-size.js +0 -35
  322. package/lib/commons/dom/has-content-virtual.js +0 -53
  323. package/lib/commons/dom/has-content.js +0 -21
  324. package/lib/commons/dom/idrefs.js +0 -41
  325. package/lib/commons/dom/index.js +0 -38
  326. package/lib/commons/dom/inserted-into-focus-order.js +0 -24
  327. package/lib/commons/dom/is-focusable.js +0 -36
  328. package/lib/commons/dom/is-hidden-with-css.js +0 -76
  329. package/lib/commons/dom/is-html5.js +0 -17
  330. package/lib/commons/dom/is-in-text-block.js +0 -107
  331. package/lib/commons/dom/is-modal-open.js +0 -104
  332. package/lib/commons/dom/is-natively-focusable.js +0 -41
  333. package/lib/commons/dom/is-node.js +0 -14
  334. package/lib/commons/dom/is-offscreen.js +0 -66
  335. package/lib/commons/dom/is-opaque.js +0 -16
  336. package/lib/commons/dom/is-skip-link.js +0 -49
  337. package/lib/commons/dom/is-visible.js +0 -201
  338. package/lib/commons/dom/is-visual-content.js +0 -49
  339. package/lib/commons/dom/reduce-to-elements-below-floating.js +0 -36
  340. package/lib/commons/dom/shadow-elements-from-point.js +0 -47
  341. package/lib/commons/dom/url-props-from-attribute.js +0 -152
  342. package/lib/commons/dom/visually-contains.js +0 -113
  343. package/lib/commons/dom/visually-overlaps.js +0 -46
  344. package/lib/commons/forms/index.js +0 -12
  345. package/lib/commons/forms/is-aria-combobox.js +0 -15
  346. package/lib/commons/forms/is-aria-listbox.js +0 -15
  347. package/lib/commons/forms/is-aria-range.js +0 -17
  348. package/lib/commons/forms/is-aria-textbox.js +0 -15
  349. package/lib/commons/forms/is-disabled.js +0 -40
  350. package/lib/commons/forms/is-native-select.js +0 -17
  351. package/lib/commons/forms/is-native-textbox.js +0 -34
  352. package/lib/commons/index.js +0 -31
  353. package/lib/commons/matches/attributes.js +0 -32
  354. package/lib/commons/matches/condition.js +0 -20
  355. package/lib/commons/matches/explicit-role.js +0 -24
  356. package/lib/commons/matches/from-definition.js +0 -73
  357. package/lib/commons/matches/from-function.js +0 -40
  358. package/lib/commons/matches/from-primative.js +0 -44
  359. package/lib/commons/matches/implicit-role.js +0 -24
  360. package/lib/commons/matches/index.js +0 -29
  361. package/lib/commons/matches/matches.js +0 -39
  362. package/lib/commons/matches/node-name.js +0 -29
  363. package/lib/commons/matches/properties.js +0 -32
  364. package/lib/commons/matches/semantic-role.js +0 -24
  365. package/lib/commons/standards/get-aria-roles-by-type.js +0 -14
  366. package/lib/commons/standards/get-aria-roles-supporting-name-from-content.js +0 -22
  367. package/lib/commons/standards/get-element-spec.js +0 -54
  368. package/lib/commons/standards/get-elements-by-content-type.js +0 -30
  369. package/lib/commons/standards/get-global-aria-attrs.js +0 -22
  370. package/lib/commons/standards/implicit-html-roles.js +0 -186
  371. package/lib/commons/standards/index.js +0 -11
  372. package/lib/commons/table/get-all-cells.js +0 -28
  373. package/lib/commons/table/get-cell-position.js +0 -32
  374. package/lib/commons/table/get-headers.js +0 -102
  375. package/lib/commons/table/get-scope.js +0 -58
  376. package/lib/commons/table/index.js +0 -19
  377. package/lib/commons/table/is-column-header.js +0 -15
  378. package/lib/commons/table/is-data-cell.js +0 -24
  379. package/lib/commons/table/is-data-table.js +0 -195
  380. package/lib/commons/table/is-header.js +0 -26
  381. package/lib/commons/table/is-row-header.js +0 -15
  382. package/lib/commons/table/to-grid.js +0 -48
  383. package/lib/commons/table/traverse.js +0 -76
  384. package/lib/commons/text/accessible-text-virtual.js +0 -152
  385. package/lib/commons/text/accessible-text.js +0 -19
  386. package/lib/commons/text/form-control-value.js +0 -216
  387. package/lib/commons/text/has-unicode.js +0 -38
  388. package/lib/commons/text/index.js +0 -32
  389. package/lib/commons/text/is-human-interpretable.js +0 -54
  390. package/lib/commons/text/is-icon-ligature.js +0 -214
  391. package/lib/commons/text/is-valid-autocomplete.js +0 -118
  392. package/lib/commons/text/label-text.js +0 -70
  393. package/lib/commons/text/label-virtual.js +0 -50
  394. package/lib/commons/text/label.js +0 -19
  395. package/lib/commons/text/native-element-type.js +0 -101
  396. package/lib/commons/text/native-text-alternative.js +0 -46
  397. package/lib/commons/text/native-text-methods.js +0 -136
  398. package/lib/commons/text/remove-unicode.js +0 -38
  399. package/lib/commons/text/sanitize.js +0 -21
  400. package/lib/commons/text/subtree-text.js +0 -74
  401. package/lib/commons/text/title-text.js +0 -33
  402. package/lib/commons/text/unicode.js +0 -85
  403. package/lib/commons/text/unsupported.js +0 -5
  404. package/lib/commons/text/visible-text-nodes.js +0 -27
  405. package/lib/commons/text/visible-virtual.js +0 -46
  406. package/lib/commons/text/visible.js +0 -18
  407. package/lib/core/base/audit.js +0 -767
  408. package/lib/core/base/cache.js +0 -30
  409. package/lib/core/base/check-result.js +0 -31
  410. package/lib/core/base/check.js +0 -215
  411. package/lib/core/base/context.js +0 -280
  412. package/lib/core/base/metadata-function-map.js +0 -353
  413. package/lib/core/base/rule-result.js +0 -39
  414. package/lib/core/base/rule.js +0 -611
  415. package/lib/core/base/virtual-node/abstract-virtual-node.js +0 -43
  416. package/lib/core/base/virtual-node/serial-virtual-node.js +0 -117
  417. package/lib/core/base/virtual-node/virtual-node.js +0 -194
  418. package/lib/core/constants.js +0 -70
  419. package/lib/core/core.js +0 -91
  420. package/lib/core/imports/index.js +0 -39
  421. package/lib/core/index.js +0 -40
  422. package/lib/core/log.js +0 -13
  423. package/lib/core/public/cleanup.js +0 -51
  424. package/lib/core/public/configure.js +0 -134
  425. package/lib/core/public/frame-messenger.js +0 -5
  426. package/lib/core/public/get-rules.js +0 -29
  427. package/lib/core/public/load.js +0 -65
  428. package/lib/core/public/plugins.js +0 -39
  429. package/lib/core/public/reporter.js +0 -25
  430. package/lib/core/public/reset.js +0 -13
  431. package/lib/core/public/run-rules.js +0 -83
  432. package/lib/core/public/run-virtual-rule.js +0 -63
  433. package/lib/core/public/run.js +0 -186
  434. package/lib/core/public/setup.js +0 -20
  435. package/lib/core/public/teardown.js +0 -21
  436. package/lib/core/reporters/helpers/failure-summary.js +0 -33
  437. package/lib/core/reporters/helpers/get-environment-data.js +0 -39
  438. package/lib/core/reporters/helpers/incomplete-fallback-msg.js +0 -12
  439. package/lib/core/reporters/helpers/index.js +0 -21
  440. package/lib/core/reporters/helpers/process-aggregate.js +0 -110
  441. package/lib/core/reporters/na.js +0 -24
  442. package/lib/core/reporters/no-passes.js +0 -20
  443. package/lib/core/reporters/raw-env.js +0 -17
  444. package/lib/core/reporters/raw.js +0 -32
  445. package/lib/core/reporters/v1.js +0 -33
  446. package/lib/core/reporters/v2.js +0 -19
  447. package/lib/core/utils/aggregate-checks.js +0 -90
  448. package/lib/core/utils/aggregate-node-results.js +0 -65
  449. package/lib/core/utils/aggregate-result.js +0 -39
  450. package/lib/core/utils/aggregate.js +0 -21
  451. package/lib/core/utils/are-styles-set.js +0 -18
  452. package/lib/core/utils/assert.js +0 -12
  453. package/lib/core/utils/check-helper.js +0 -36
  454. package/lib/core/utils/clone.js +0 -28
  455. package/lib/core/utils/closest.js +0 -30
  456. package/lib/core/utils/collect-results-from-frames.js +0 -84
  457. package/lib/core/utils/contains.js +0 -46
  458. package/lib/core/utils/css-parser.js +0 -9
  459. package/lib/core/utils/deep-merge.js +0 -31
  460. package/lib/core/utils/dq-element.js +0 -131
  461. package/lib/core/utils/element-matches.js +0 -43
  462. package/lib/core/utils/escape-selector.js +0 -79
  463. package/lib/core/utils/extend-meta-data.js +0 -20
  464. package/lib/core/utils/filter-html-attrs.js +0 -75
  465. package/lib/core/utils/finalize-result.js +0 -28
  466. package/lib/core/utils/find-by.js +0 -16
  467. package/lib/core/utils/frame-messenger/assert-window.js +0 -21
  468. package/lib/core/utils/frame-messenger/channel-store.js +0 -23
  469. package/lib/core/utils/frame-messenger/create-responder.js +0 -15
  470. package/lib/core/utils/frame-messenger/message-handler.js +0 -72
  471. package/lib/core/utils/frame-messenger/message-id.js +0 -22
  472. package/lib/core/utils/frame-messenger/message-parser.js +0 -109
  473. package/lib/core/utils/frame-messenger/post-message.js +0 -54
  474. package/lib/core/utils/frame-messenger/process-error.js +0 -30
  475. package/lib/core/utils/frame-messenger.js +0 -40
  476. package/lib/core/utils/get-all-checks.js +0 -13
  477. package/lib/core/utils/get-ancestry.js +0 -31
  478. package/lib/core/utils/get-base-lang.js +0 -18
  479. package/lib/core/utils/get-check-message.js +0 -24
  480. package/lib/core/utils/get-check-option.js +0 -41
  481. package/lib/core/utils/get-flattened-tree.js +0 -151
  482. package/lib/core/utils/get-friendly-uri-end.js +0 -143
  483. package/lib/core/utils/get-node-attributes.js +0 -22
  484. package/lib/core/utils/get-node-from-tree.js +0 -14
  485. package/lib/core/utils/get-root-node.js +0 -17
  486. package/lib/core/utils/get-rule.js +0 -17
  487. package/lib/core/utils/get-scroll-state.js +0 -43
  488. package/lib/core/utils/get-scroll.js +0 -41
  489. package/lib/core/utils/get-selector.js +0 -395
  490. package/lib/core/utils/get-shadow-selector.js +0 -31
  491. package/lib/core/utils/get-standards.js +0 -6
  492. package/lib/core/utils/get-stylesheet-factory.js +0 -53
  493. package/lib/core/utils/get-xpath.js +0 -84
  494. package/lib/core/utils/index.js +0 -90
  495. package/lib/core/utils/inject-style.js +0 -33
  496. package/lib/core/utils/is-hidden.js +0 -55
  497. package/lib/core/utils/is-html-element.js +0 -137
  498. package/lib/core/utils/is-node-in-context.js +0 -46
  499. package/lib/core/utils/is-shadow-root.js +0 -40
  500. package/lib/core/utils/is-xhtml.js +0 -15
  501. package/lib/core/utils/matches.js +0 -263
  502. package/lib/core/utils/memoize.js +0 -22
  503. package/lib/core/utils/merge-results.js +0 -134
  504. package/lib/core/utils/node-sorter.js +0 -23
  505. package/lib/core/utils/parse-crossorigin-stylesheet.js +0 -66
  506. package/lib/core/utils/parse-sameorigin-stylesheet.js +0 -100
  507. package/lib/core/utils/parse-stylesheet.js +0 -75
  508. package/lib/core/utils/performance-timer.js +0 -126
  509. package/lib/core/utils/pollyfills.js +0 -347
  510. package/lib/core/utils/preload-cssom.js +0 -249
  511. package/lib/core/utils/preload-media.js +0 -70
  512. package/lib/core/utils/preload.js +0 -150
  513. package/lib/core/utils/process-message.js +0 -77
  514. package/lib/core/utils/publish-metadata.js +0 -109
  515. package/lib/core/utils/query-selector-all-filter.js +0 -104
  516. package/lib/core/utils/query-selector-all.js +0 -15
  517. package/lib/core/utils/queue.js +0 -137
  518. package/lib/core/utils/respondable.js +0 -108
  519. package/lib/core/utils/rule-should-run.js +0 -83
  520. package/lib/core/utils/select.js +0 -87
  521. package/lib/core/utils/send-command-to-frame.js +0 -65
  522. package/lib/core/utils/set-scroll-state.js +0 -21
  523. package/lib/core/utils/to-array.js +0 -10
  524. package/lib/core/utils/token-list.js +0 -15
  525. package/lib/core/utils/unique-array.js +0 -13
  526. package/lib/core/utils/uuid.js +0 -253
  527. package/lib/core/utils/valid-input-type.js +0 -35
  528. package/lib/core/utils/valid-langs.js +0 -105
  529. package/lib/intro.stub +0 -15
  530. package/lib/misc/any-failure-summary.json +0 -6
  531. package/lib/misc/incomplete-fallback.json +0 -3
  532. package/lib/misc/none-failure-summary.json +0 -6
  533. package/lib/outro.stub +0 -2
  534. package/lib/rules/accesskeys.json +0 -13
  535. package/lib/rules/area-alt.json +0 -22
  536. package/lib/rules/aria-allowed-attr-matches.js +0 -15
  537. package/lib/rules/aria-allowed-attr.json +0 -12
  538. package/lib/rules/aria-allowed-role-matches.js +0 -12
  539. package/lib/rules/aria-allowed-role.json +0 -14
  540. package/lib/rules/aria-command-name.json +0 -18
  541. package/lib/rules/aria-dialog-name.json +0 -13
  542. package/lib/rules/aria-has-attr-matches.js +0 -9
  543. package/lib/rules/aria-hidden-body.json +0 -14
  544. package/lib/rules/aria-hidden-focus-matches.js +0 -22
  545. package/lib/rules/aria-hidden-focus.json +0 -18
  546. package/lib/rules/aria-input-field-name.json +0 -13
  547. package/lib/rules/aria-meter-name.json +0 -13
  548. package/lib/rules/aria-progressbar-name.json +0 -13
  549. package/lib/rules/aria-required-attr.json +0 -12
  550. package/lib/rules/aria-required-children-matches.js +0 -8
  551. package/lib/rules/aria-required-children.json +0 -13
  552. package/lib/rules/aria-required-parent-matches.js +0 -8
  553. package/lib/rules/aria-required-parent.json +0 -13
  554. package/lib/rules/aria-roledescription.json +0 -12
  555. package/lib/rules/aria-roles.json +0 -13
  556. package/lib/rules/aria-text.json +0 -12
  557. package/lib/rules/aria-toggle-field-name.json +0 -18
  558. package/lib/rules/aria-tooltip-name.json +0 -18
  559. package/lib/rules/aria-treeitem-name.json +0 -18
  560. package/lib/rules/aria-valid-attr-value.json +0 -12
  561. package/lib/rules/aria-valid-attr.json +0 -12
  562. package/lib/rules/audio-caption.json +0 -20
  563. package/lib/rules/autocomplete-matches.js +0 -58
  564. package/lib/rules/autocomplete-valid.json +0 -12
  565. package/lib/rules/avoid-inline-spacing.json +0 -12
  566. package/lib/rules/blink.json +0 -19
  567. package/lib/rules/button-name.json +0 -26
  568. package/lib/rules/bypass-matches.js +0 -14
  569. package/lib/rules/bypass.json +0 -21
  570. package/lib/rules/color-contrast-matches.js +0 -156
  571. package/lib/rules/color-contrast.json +0 -13
  572. package/lib/rules/css-orientation-lock.json +0 -13
  573. package/lib/rules/data-table-large-matches.js +0 -17
  574. package/lib/rules/data-table-matches.js +0 -7
  575. package/lib/rules/definition-list.json +0 -13
  576. package/lib/rules/dlitem.json +0 -13
  577. package/lib/rules/document-title.json +0 -13
  578. package/lib/rules/duplicate-id-active-matches.js +0 -15
  579. package/lib/rules/duplicate-id-active.json +0 -14
  580. package/lib/rules/duplicate-id-aria-matches.js +0 -7
  581. package/lib/rules/duplicate-id-aria.json +0 -14
  582. package/lib/rules/duplicate-id-misc-matches.js +0 -17
  583. package/lib/rules/duplicate-id.json +0 -14
  584. package/lib/rules/empty-heading.json +0 -19
  585. package/lib/rules/empty-table-header.json +0 -13
  586. package/lib/rules/focus-order-semantics.json +0 -13
  587. package/lib/rules/form-field-multiple-labels.json +0 -13
  588. package/lib/rules/frame-focusable-content-matches.js +0 -9
  589. package/lib/rules/frame-focusable-content.json +0 -13
  590. package/lib/rules/frame-tested.json +0 -12
  591. package/lib/rules/frame-title-has-text-matches.js +0 -8
  592. package/lib/rules/frame-title-unique.json +0 -13
  593. package/lib/rules/frame-title.json +0 -24
  594. package/lib/rules/has-implicit-chromium-role-matches.js +0 -7
  595. package/lib/rules/heading-matches.js +0 -19
  596. package/lib/rules/heading-order.json +0 -13
  597. package/lib/rules/hidden-content.json +0 -13
  598. package/lib/rules/html-has-lang.json +0 -13
  599. package/lib/rules/html-lang-valid.json +0 -12
  600. package/lib/rules/html-namespace-matches.js +0 -7
  601. package/lib/rules/html-xml-lang-mismatch.json +0 -13
  602. package/lib/rules/identical-links-same-purpose-matches.js +0 -18
  603. package/lib/rules/identical-links-same-purpose.json +0 -14
  604. package/lib/rules/image-alt.json +0 -26
  605. package/lib/rules/img-redundant-alt.json +0 -12
  606. package/lib/rules/input-button-name.json +0 -26
  607. package/lib/rules/input-image-alt.json +0 -20
  608. package/lib/rules/inserted-into-focus-order-matches.js +0 -7
  609. package/lib/rules/is-initiator-matches.js +0 -5
  610. package/lib/rules/label-content-name-mismatch-matches.js +0 -52
  611. package/lib/rules/label-content-name-mismatch.json +0 -12
  612. package/lib/rules/label-matches.js +0 -15
  613. package/lib/rules/label-title-only.json +0 -13
  614. package/lib/rules/label.json +0 -29
  615. package/lib/rules/landmark-banner-is-top-level.json +0 -13
  616. package/lib/rules/landmark-complementary-is-top-level.json +0 -12
  617. package/lib/rules/landmark-contentinfo-is-top-level.json +0 -13
  618. package/lib/rules/landmark-has-body-context-matches.js +0 -13
  619. package/lib/rules/landmark-main-is-top-level.json +0 -12
  620. package/lib/rules/landmark-no-duplicate-banner.json +0 -12
  621. package/lib/rules/landmark-no-duplicate-contentinfo.json +0 -12
  622. package/lib/rules/landmark-no-duplicate-main.json +0 -12
  623. package/lib/rules/landmark-one-main.json +0 -12
  624. package/lib/rules/landmark-unique-matches.js +0 -50
  625. package/lib/rules/landmark-unique.json +0 -13
  626. package/lib/rules/layout-table-matches.js +0 -8
  627. package/lib/rules/link-in-text-block-matches.js +0 -21
  628. package/lib/rules/link-in-text-block.json +0 -14
  629. package/lib/rules/link-name.json +0 -25
  630. package/lib/rules/list.json +0 -13
  631. package/lib/rules/listitem.json +0 -13
  632. package/lib/rules/marquee.json +0 -13
  633. package/lib/rules/meta-refresh.json +0 -20
  634. package/lib/rules/meta-viewport-large.json +0 -14
  635. package/lib/rules/meta-viewport.json +0 -14
  636. package/lib/rules/nested-interactive-matches.js +0 -13
  637. package/lib/rules/nested-interactive.json +0 -12
  638. package/lib/rules/no-autoplay-audio-matches.js +0 -22
  639. package/lib/rules/no-autoplay-audio.json +0 -15
  640. package/lib/rules/no-empty-role-matches.js +0 -13
  641. package/lib/rules/no-explicit-name-required-matches.js +0 -22
  642. package/lib/rules/no-naming-method-matches.js +0 -24
  643. package/lib/rules/no-role-matches.js +0 -5
  644. package/lib/rules/not-html-matches.js +0 -5
  645. package/lib/rules/object-alt.json +0 -24
  646. package/lib/rules/p-as-heading-matches.js +0 -21
  647. package/lib/rules/p-as-heading.json +0 -13
  648. package/lib/rules/page-has-heading-one.json +0 -12
  649. package/lib/rules/presentation-role-conflict-matches.js +0 -7
  650. package/lib/rules/presentation-role-conflict.json +0 -13
  651. package/lib/rules/region.json +0 -12
  652. package/lib/rules/role-img-alt.json +0 -20
  653. package/lib/rules/scope-attr-valid.json +0 -12
  654. package/lib/rules/scrollable-region-focusable-matches.js +0 -75
  655. package/lib/rules/scrollable-region-focusable.json +0 -12
  656. package/lib/rules/select-name.json +0 -27
  657. package/lib/rules/server-side-image-map.json +0 -18
  658. package/lib/rules/skip-link-matches.js +0 -7
  659. package/lib/rules/skip-link.json +0 -13
  660. package/lib/rules/svg-img-alt.json +0 -25
  661. package/lib/rules/svg-namespace-matches.js +0 -18
  662. package/lib/rules/tabindex.json +0 -12
  663. package/lib/rules/table-duplicate-name.json +0 -12
  664. package/lib/rules/table-fake-caption.json +0 -20
  665. package/lib/rules/td-has-header.json +0 -20
  666. package/lib/rules/td-headers-attr.json +0 -12
  667. package/lib/rules/th-has-data-cells.json +0 -13
  668. package/lib/rules/valid-lang.json +0 -13
  669. package/lib/rules/video-caption.json +0 -19
  670. package/lib/rules/window-is-top-matches.js +0 -8
  671. package/lib/rules/xml-lang-mismatch-matches.js +0 -14
  672. package/lib/standards/aria-attrs.js +0 -209
  673. package/lib/standards/aria-roles.js +0 -835
  674. package/lib/standards/css-colors.js +0 -153
  675. package/lib/standards/dpub-roles.js +0 -219
  676. package/lib/standards/graphics-roles.js +0 -22
  677. package/lib/standards/html-elms.js +0 -933
  678. package/lib/standards/index.js +0 -37
  679. package/sri-history.json +0 -274
  680. package/typings/axe-core/axe-core-tests.js +0 -203
  681. package/typings/axe-core/axe-core-tests.ts +0 -233
@@ -1,12 +0,0 @@
1
- {
2
- "id": "hidden-explicit-label",
3
- "evaluate": "hidden-explicit-label-evaluate",
4
- "metadata": {
5
- "impact": "critical",
6
- "messages": {
7
- "pass": "Form element has a visible explicit <label>",
8
- "fail": "Form element has explicit <label> that is hidden",
9
- "incomplete": "Unable to determine if form element has explicit <label> that is hidden"
10
- }
11
- }
12
- }
@@ -1,16 +0,0 @@
1
- import { closest } from '../../core/utils';
2
- import { accessibleTextVirtual } from '../../commons/text';
3
-
4
- function implicitEvaluate(node, options, virtualNode) {
5
- try {
6
- const label = closest(virtualNode, 'label');
7
- if (label) {
8
- return !!accessibleTextVirtual(label, { inControlContext: true });
9
- }
10
- return false;
11
- } catch (e) {
12
- return undefined;
13
- }
14
- }
15
-
16
- export default implicitEvaluate;
@@ -1,12 +0,0 @@
1
- {
2
- "id": "implicit-label",
3
- "evaluate": "implicit-evaluate",
4
- "metadata": {
5
- "impact": "critical",
6
- "messages": {
7
- "pass": "Form element has an implicit (wrapped) <label>",
8
- "fail": "Form element does not have an implicit (wrapped) <label>",
9
- "incomplete": "Unable to determine if form element has an implicit (wrapped} <label>"
10
- }
11
- }
12
- }
@@ -1,71 +0,0 @@
1
- import {
2
- accessibleText,
3
- isHumanInterpretable,
4
- visibleTextNodes,
5
- isIconLigature,
6
- sanitize,
7
- removeUnicode
8
- } from '../../commons/text';
9
-
10
- /**
11
- * Check if a given text exists in another
12
- *
13
- * @param {String} compare given text to check
14
- * @param {String} compareWith text against which to be compared
15
- * @returns {Boolean}
16
- */
17
- function isStringContained(compare, compareWith) {
18
- const curatedCompareWith = curateString(compareWith);
19
- const curatedCompare = curateString(compare);
20
- if (!curatedCompareWith || !curatedCompare) {
21
- return false;
22
- }
23
- return curatedCompareWith.includes(curatedCompare);
24
- }
25
-
26
- /**
27
- * Curate given text, by removing emoji's, punctuations, unicode and trim whitespace.
28
- *
29
- * @param {String} str given text to curate
30
- * @returns {String}
31
- */
32
- function curateString(str) {
33
- const noUnicodeStr = removeUnicode(str, {
34
- emoji: true,
35
- nonBmp: true,
36
- punctuations: true
37
- });
38
- return sanitize(noUnicodeStr);
39
- }
40
-
41
- function labelContentNameMismatchEvaluate(node, options, virtualNode) {
42
- const { pixelThreshold, occuranceThreshold } = options || {};
43
-
44
- const accText = accessibleText(node).toLowerCase();
45
- if (isHumanInterpretable(accText) < 1) {
46
- return undefined;
47
- }
48
-
49
- const textVNodes = visibleTextNodes(virtualNode);
50
- const nonLigatureText = textVNodes
51
- .filter(
52
- textVNode =>
53
- !isIconLigature(textVNode, pixelThreshold, occuranceThreshold)
54
- )
55
- .map(textVNode => textVNode.actualNode.nodeValue)
56
- .join('');
57
- const visibleText = sanitize(nonLigatureText).toLowerCase();
58
- if (!visibleText) {
59
- return true;
60
- }
61
- if (isHumanInterpretable(visibleText) < 1) {
62
- if (isStringContained(visibleText, accText)) {
63
- return true;
64
- }
65
- return undefined;
66
- }
67
-
68
- return isStringContained(visibleText, accText);
69
- }
70
-
71
- export default labelContentNameMismatchEvaluate;
@@ -1,15 +0,0 @@
1
- {
2
- "id": "label-content-name-mismatch",
3
- "evaluate": "label-content-name-mismatch-evaluate",
4
- "options": {
5
- "pixelThreshold": 0.1,
6
- "occuranceThreshold": 3
7
- },
8
- "metadata": {
9
- "impact": "serious",
10
- "messages": {
11
- "pass": "Element contains visible text as part of it's accessible name",
12
- "fail": "Text inside the element is not included in the accessible name"
13
- }
14
- }
15
- }
@@ -1,44 +0,0 @@
1
- import { getRootNode, isVisible, idrefs } from '../../commons/dom';
2
- import { escapeSelector } from '../../core/utils';
3
-
4
- function multipleLabelEvaluate(node) {
5
- const id = escapeSelector(node.getAttribute('id'));
6
- let parent = node.parentNode;
7
- let root = getRootNode(node);
8
- root = root.documentElement || root;
9
- let labels = Array.from(root.querySelectorAll(`label[for="${id}"]`));
10
-
11
- if (labels.length) {
12
- // filter out CSS hidden labels because they're fine
13
- labels = labels.filter(label => isVisible(label));
14
- }
15
-
16
- while (parent) {
17
- if (
18
- parent.nodeName.toUpperCase() === 'LABEL' &&
19
- labels.indexOf(parent) === -1
20
- ) {
21
- labels.push(parent);
22
- }
23
- parent = parent.parentNode;
24
- }
25
-
26
- this.relatedNodes(labels);
27
-
28
- // more than 1 CSS visible label
29
- if (labels.length > 1) {
30
- const ATVisibleLabels = labels.filter(label => isVisible(label, true));
31
- // more than 1 AT visible label will fail IOS/Safari/VO even with aria-labelledby
32
- if (ATVisibleLabels.length > 1) {
33
- return undefined;
34
- }
35
- // make sure the ONE AT visible label is in the list of idRefs of aria-labelledby
36
- const labelledby = idrefs(node, 'aria-labelledby');
37
- return !labelledby.includes(ATVisibleLabels[0]) ? undefined : false;
38
- }
39
-
40
- // only 1 CSS visible label
41
- return false;
42
- }
43
-
44
- export default multipleLabelEvaluate;
@@ -1,11 +0,0 @@
1
- {
2
- "id": "multiple-label",
3
- "evaluate": "multiple-label-evaluate",
4
- "metadata": {
5
- "impact": "moderate",
6
- "messages": {
7
- "pass": "Form field does not have multiple label elements",
8
- "incomplete": "Multiple label elements is not widely supported in assistive technologies. Ensure the first label contains all necessary information."
9
- }
10
- }
11
- }
@@ -1,11 +0,0 @@
1
- import { labelVirtual, titleText } from '../../commons/text';
2
-
3
- function titleOnlyEvaluate(node, options, virtualNode) {
4
- const labelText = labelVirtual(virtualNode);
5
- const title = titleText(virtualNode);
6
- const ariaDescribedBy = virtualNode.attr('aria-describedby');
7
-
8
- return !labelText && !!(title || ariaDescribedBy);
9
- }
10
-
11
- export default titleOnlyEvaluate;
@@ -1,11 +0,0 @@
1
- {
2
- "id": "title-only",
3
- "evaluate": "title-only-evaluate",
4
- "metadata": {
5
- "impact": "serious",
6
- "messages": {
7
- "pass": "Form element does not solely use title attribute for its label",
8
- "fail": "Only title used to generate label for form element"
9
- }
10
- }
11
- }
@@ -1,27 +0,0 @@
1
- function landmarkIsUniqueAfter(results) {
2
- var uniqueLandmarks = [];
3
-
4
- // filter out landmark elements that share the same role and accessible text
5
- // so every non-unique landmark isn't reported as a failure (just the first)
6
- return results.filter(currentResult => {
7
- var findMatch = someResult => {
8
- return (
9
- currentResult.data.role === someResult.data.role &&
10
- currentResult.data.accessibleText === someResult.data.accessibleText
11
- );
12
- };
13
-
14
- var matchedResult = uniqueLandmarks.find(findMatch);
15
- if (matchedResult) {
16
- matchedResult.result = false;
17
- matchedResult.relatedNodes.push(currentResult.relatedNodes[0]);
18
- return false;
19
- }
20
-
21
- uniqueLandmarks.push(currentResult);
22
- currentResult.relatedNodes = [];
23
- return true;
24
- });
25
- }
26
-
27
- export default landmarkIsUniqueAfter;
@@ -1,14 +0,0 @@
1
- import { getRole } from '../../commons/aria';
2
- import { accessibleTextVirtual } from '../../commons/text';
3
-
4
- function landmarkIsUniqueEvaluate(node, options, virtualNode) {
5
- var role = getRole(node);
6
- var accessibleText = accessibleTextVirtual(virtualNode);
7
- accessibleText = accessibleText ? accessibleText.toLowerCase() : null;
8
- this.data({ role: role, accessibleText: accessibleText });
9
- this.relatedNodes([node]);
10
-
11
- return true;
12
- }
13
-
14
- export default landmarkIsUniqueEvaluate;
@@ -1,12 +0,0 @@
1
- {
2
- "id": "landmark-is-unique",
3
- "evaluate": "landmark-is-unique-evaluate",
4
- "after": "landmark-is-unique-after",
5
- "metadata": {
6
- "impact": "moderate",
7
- "messages": {
8
- "pass": "Landmarks must have a unique role or role/label/title (i.e. accessible name) combination",
9
- "fail": "The landmark must have a unique aria-label, aria-labelledby, or title to make landmarks distinguishable"
10
- }
11
- }
12
- }
@@ -1,39 +0,0 @@
1
- import { isXHTML } from '../../core/utils';
2
-
3
- function hasValue(value) {
4
- return (value || '').trim() !== '';
5
- }
6
-
7
- function hasLangEvaluate(node, options, virtualNode) {
8
- // special case when xml:lang has a value and lang does not
9
- // but the document is not XHTML
10
- const xhtml = typeof document !== 'undefined' ? isXHTML(document) : false;
11
-
12
- if (
13
- options.attributes.includes('xml:lang') &&
14
- options.attributes.includes('lang') &&
15
- hasValue(virtualNode.attr('xml:lang')) &&
16
- !hasValue(virtualNode.attr('lang')) &&
17
- !xhtml
18
- ) {
19
- this.data({
20
- messageKey: 'noXHTML'
21
- });
22
- return false;
23
- }
24
-
25
- const hasLang = options.attributes.some(name => {
26
- return hasValue(virtualNode.attr(name));
27
- });
28
-
29
- if (!hasLang) {
30
- this.data({
31
- messageKey: 'noLang'
32
- });
33
- return false;
34
- }
35
-
36
- return true;
37
- }
38
-
39
- export default hasLangEvaluate;
@@ -1,17 +0,0 @@
1
- {
2
- "id": "has-lang",
3
- "evaluate": "has-lang-evaluate",
4
- "options": {
5
- "attributes": ["lang", "xml:lang"]
6
- },
7
- "metadata": {
8
- "impact": "serious",
9
- "messages": {
10
- "pass": "The <html> element has a lang attribute",
11
- "fail": {
12
- "noXHTML": "The xml:lang attribute is not valid on HTML pages, use the lang attribute.",
13
- "noLang": "The <html> element does not have a lang attribute"
14
- }
15
- }
16
- }
17
- }
@@ -1,36 +0,0 @@
1
- import { isValidLang, getBaseLang } from '../../core/utils';
2
- import { sanitize } from '../../commons/text';
3
-
4
- function validLangEvaluate(node, options, virtualNode) {
5
- const invalid = [];
6
- options.attributes.forEach(langAttr => {
7
- const langVal = virtualNode.attr(langAttr);
8
- if (typeof langVal !== 'string') {
9
- return;
10
- }
11
-
12
- const baselangVal = getBaseLang(langVal);
13
- const invalidLang = options.value
14
- ? !options.value.map(getBaseLang).includes(baselangVal)
15
- : !isValidLang(baselangVal);
16
-
17
- // Edge sets lang to an empty string when xml:lang is set
18
- // so we need to ignore empty strings here
19
- if (
20
- (baselangVal !== '' && invalidLang) ||
21
- // whitespace only lang value is invalid
22
- (langVal !== '' && !sanitize(langVal))
23
- ) {
24
- invalid.push(langAttr + '="' + virtualNode.attr(langAttr) + '"');
25
- }
26
- });
27
-
28
- if (invalid.length) {
29
- this.data(invalid);
30
- return true;
31
- }
32
-
33
- return false;
34
- }
35
-
36
- export default validLangEvaluate;
@@ -1,14 +0,0 @@
1
- {
2
- "id": "valid-lang",
3
- "evaluate": "valid-lang-evaluate",
4
- "options": {
5
- "attributes": ["lang", "xml:lang"]
6
- },
7
- "metadata": {
8
- "impact": "serious",
9
- "messages": {
10
- "pass": "Value of lang attribute is included in the list of valid languages",
11
- "fail": "Value of lang attribute not included in the list of valid languages"
12
- }
13
- }
14
- }
@@ -1,10 +0,0 @@
1
- import { getBaseLang } from '../../core/utils';
2
-
3
- function xmlLangMismatchEvaluate(node, options, vNode) {
4
- const primaryLangValue = getBaseLang(vNode.attr('lang'));
5
- const primaryXmlLangValue = getBaseLang(vNode.attr('xml:lang'));
6
-
7
- return primaryLangValue === primaryXmlLangValue;
8
- }
9
-
10
- export default xmlLangMismatchEvaluate;
@@ -1,11 +0,0 @@
1
- {
2
- "id": "xml-lang-mismatch",
3
- "evaluate": "xml-lang-mismatch-evaluate",
4
- "metadata": {
5
- "impact": "moderate",
6
- "messages": {
7
- "pass": "Lang and xml:lang attributes have the same base language",
8
- "fail": "Lang and xml:lang attributes do not have the same base language"
9
- }
10
- }
11
- }
@@ -1,30 +0,0 @@
1
- import { getComposedParent } from '../../commons/dom';
2
- import { getExplicitRole } from '../../commons/aria';
3
-
4
- function dlitemEvaluate(node) {
5
- let parent = getComposedParent(node);
6
- let parentTagName = parent.nodeName.toUpperCase();
7
- let parentRole = getExplicitRole(parent);
8
-
9
- if (
10
- parentTagName === 'DIV' &&
11
- ['presentation', 'none', null].includes(parentRole)
12
- ) {
13
- parent = getComposedParent(parent);
14
- parentTagName = parent.nodeName.toUpperCase();
15
- parentRole = getExplicitRole(parent);
16
- }
17
-
18
- // Unlike with UL|OL+LI, DT|DD must be in a DL
19
- if (parentTagName !== 'DL') {
20
- return false;
21
- }
22
-
23
- if (!parentRole || ['presentation', 'none', 'list'].includes(parentRole)) {
24
- return true;
25
- }
26
-
27
- return false;
28
- }
29
-
30
- export default dlitemEvaluate;
@@ -1,11 +0,0 @@
1
- {
2
- "id": "dlitem",
3
- "evaluate": "dlitem-evaluate",
4
- "metadata": {
5
- "impact": "serious",
6
- "messages": {
7
- "pass": "Description list item has a <dl> parent element",
8
- "fail": "Description list item does not have a <dl> parent element"
9
- }
10
- }
11
- }
@@ -1,28 +0,0 @@
1
- import { getComposedParent } from '../../commons/dom';
2
- import { isValidRole } from '../../commons/aria';
3
-
4
- function listitemEvaluate(node) {
5
- const parent = getComposedParent(node);
6
- if (!parent) {
7
- // Can only happen with detached DOM nodes and roots:
8
- return undefined;
9
- }
10
-
11
- const parentTagName = parent.nodeName.toUpperCase();
12
- const parentRole = (parent.getAttribute('role') || '').toLowerCase();
13
-
14
- if (['presentation', 'none', 'list'].includes(parentRole)) {
15
- return true;
16
- }
17
-
18
- if (parentRole && isValidRole(parentRole)) {
19
- this.data({
20
- messageKey: 'roleNotValid'
21
- });
22
- return false;
23
- }
24
-
25
- return ['UL', 'OL'].includes(parentTagName);
26
- }
27
-
28
- export default listitemEvaluate;
@@ -1,14 +0,0 @@
1
- {
2
- "id": "listitem",
3
- "evaluate": "listitem-evaluate",
4
- "metadata": {
5
- "impact": "serious",
6
- "messages": {
7
- "pass": "List item has a <ul>, <ol> or role=\"list\" parent element",
8
- "fail": {
9
- "default": "List item does not have a <ul>, <ol> parent element",
10
- "roleNotValid": "List item does not have a <ul>, <ol> parent element without a role, or a role=\"list\""
11
- }
12
- }
13
- }
14
- }
@@ -1,51 +0,0 @@
1
- import { isVisible } from '../../commons/dom';
2
- import { getRole, getExplicitRole } from '../../commons/aria';
3
-
4
- function onlyDlitemsEvaluate(node, options, virtualNode) {
5
- const ALLOWED_ROLES = ['definition', 'term', 'list'];
6
- const base = {
7
- badNodes: [],
8
- hasNonEmptyTextNode: false
9
- };
10
-
11
- const content = virtualNode.children.reduce((content, child) => {
12
- const { actualNode } = child;
13
- if (
14
- actualNode.nodeName.toUpperCase() === 'DIV' &&
15
- getRole(actualNode) === null
16
- ) {
17
- return content.concat(child.children);
18
- }
19
- return content.concat(child);
20
- }, []);
21
-
22
- const result = content.reduce((out, childNode) => {
23
- const { actualNode } = childNode;
24
- const tagName = actualNode.nodeName.toUpperCase();
25
-
26
- if (actualNode.nodeType === 1 && isVisible(actualNode, true, false)) {
27
- const explicitRole = getExplicitRole(actualNode);
28
-
29
- if ((tagName !== 'DT' && tagName !== 'DD') || explicitRole) {
30
- if (!ALLOWED_ROLES.includes(explicitRole)) {
31
- // handle comment - https://github.com/dequelabs/axe-core/pull/518/files#r139284668
32
- out.badNodes.push(actualNode);
33
- }
34
- }
35
- } else if (
36
- actualNode.nodeType === 3 &&
37
- actualNode.nodeValue.trim() !== ''
38
- ) {
39
- out.hasNonEmptyTextNode = true;
40
- }
41
- return out;
42
- }, base);
43
-
44
- if (result.badNodes.length) {
45
- this.relatedNodes(result.badNodes);
46
- }
47
-
48
- return !!result.badNodes.length || result.hasNonEmptyTextNode;
49
- }
50
-
51
- export default onlyDlitemsEvaluate;
@@ -1,11 +0,0 @@
1
- {
2
- "id": "only-dlitems",
3
- "evaluate": "only-dlitems-evaluate",
4
- "metadata": {
5
- "impact": "serious",
6
- "messages": {
7
- "pass": "List element only has direct children that are allowed inside <dt> or <dd> elements",
8
- "fail": "List element has direct children that are not allowed inside <dt> or <dd> elements"
9
- }
10
- }
11
- }
@@ -1,63 +0,0 @@
1
- import { isVisible } from '../../commons/dom';
2
- import { getRole } from '../../commons/aria';
3
-
4
- function onlyListitemsEvaluate(node, options, virtualNode) {
5
- let hasNonEmptyTextNode = false;
6
- let atLeastOneListitem = false;
7
- let isEmpty = true;
8
- const badNodes = [];
9
- const badRoleNodes = [];
10
- const badRoles = [];
11
-
12
- virtualNode.children.forEach(vNode => {
13
- const { actualNode } = vNode;
14
-
15
- if (actualNode.nodeType === 3 && actualNode.nodeValue.trim() !== '') {
16
- hasNonEmptyTextNode = true;
17
- return;
18
- }
19
-
20
- if (actualNode.nodeType !== 1 || !isVisible(actualNode, true, false)) {
21
- return;
22
- }
23
-
24
- isEmpty = false;
25
- const isLi = actualNode.nodeName.toUpperCase() === 'LI';
26
- const role = getRole(vNode);
27
- const isListItemRole = role === 'listitem';
28
-
29
- if (!isLi && !isListItemRole) {
30
- badNodes.push(actualNode);
31
- }
32
-
33
- if (isLi && !isListItemRole) {
34
- badRoleNodes.push(actualNode);
35
-
36
- if (!badRoles.includes(role)) {
37
- badRoles.push(role);
38
- }
39
- }
40
-
41
- if (isListItemRole) {
42
- atLeastOneListitem = true;
43
- }
44
- });
45
-
46
- if (hasNonEmptyTextNode || badNodes.length) {
47
- this.relatedNodes(badNodes);
48
- return true;
49
- }
50
-
51
- if (isEmpty || atLeastOneListitem) {
52
- return false;
53
- }
54
-
55
- this.relatedNodes(badRoleNodes);
56
- this.data({
57
- messageKey: 'roleNotValid',
58
- roles: badRoles.join(', ')
59
- });
60
- return true;
61
- }
62
-
63
- export default onlyListitemsEvaluate;
@@ -1,14 +0,0 @@
1
- {
2
- "id": "only-listitems",
3
- "evaluate": "only-listitems-evaluate",
4
- "metadata": {
5
- "impact": "serious",
6
- "messages": {
7
- "pass": "List element only has direct children that are allowed inside <li> elements",
8
- "fail": {
9
- "default": "List element has direct children that are not allowed inside <li> elements",
10
- "roleNotValid": "List element has direct children with a role that is not allowed: ${data.roles}"
11
- }
12
- }
13
- }
14
- }
@@ -1,26 +0,0 @@
1
- function structuredDlitemsEvaluate(node, options, virtualNode) {
2
- const children = virtualNode.children;
3
- if (!children || !children.length) {
4
- return false;
5
- }
6
-
7
- let hasDt = false,
8
- hasDd = false,
9
- nodeName;
10
- for (var i = 0; i < children.length; i++) {
11
- nodeName = children[i].props.nodeName.toUpperCase();
12
- if (nodeName === 'DT') {
13
- hasDt = true;
14
- }
15
- if (hasDt && nodeName === 'DD') {
16
- return false;
17
- }
18
- if (nodeName === 'DD') {
19
- hasDd = true;
20
- }
21
- }
22
-
23
- return hasDt || hasDd;
24
- }
25
-
26
- export default structuredDlitemsEvaluate;