govuk_publishing_components 18.1.0 → 18.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (513) hide show
  1. checksums.yaml +4 -4
  2. data/lib/govuk_publishing_components/version.rb +1 -1
  3. data/node_modules/axe-core/CHANGELOG.md +741 -0
  4. data/node_modules/axe-core/CONTRIBUTING.md +187 -0
  5. data/node_modules/axe-core/LICENSE +362 -0
  6. data/node_modules/axe-core/README.md +147 -0
  7. data/node_modules/axe-core/axe.d.ts +216 -0
  8. data/node_modules/axe-core/axe.js +15298 -0
  9. data/node_modules/axe-core/axe.min.js +12 -0
  10. data/node_modules/axe-core/bower.json +40 -0
  11. data/node_modules/axe-core/doc/API.md +798 -0
  12. data/node_modules/axe-core/doc/accessibility-supported.md +33 -0
  13. data/node_modules/axe-core/doc/act-rules-format.md +37 -0
  14. data/node_modules/axe-core/doc/aria-supported.md +23 -0
  15. data/node_modules/axe-core/doc/axelogo2018.png +0 -0
  16. data/node_modules/axe-core/doc/code-submission-guidelines.md +178 -0
  17. data/node_modules/axe-core/doc/developer-guide.md +500 -0
  18. data/node_modules/axe-core/doc/examples/chrome-debugging-protocol/README.md +13 -0
  19. data/node_modules/axe-core/doc/examples/chrome-debugging-protocol/axe-cdp.js +81 -0
  20. data/node_modules/axe-core/doc/examples/chrome-debugging-protocol/package.json +8 -0
  21. data/node_modules/axe-core/doc/examples/html-handlebars.md +164 -0
  22. data/node_modules/axe-core/doc/examples/jasmine/README.md +37 -0
  23. data/node_modules/axe-core/doc/examples/jasmine/package.json +20 -0
  24. data/node_modules/axe-core/doc/examples/jasmine/spec/a11y.js +36 -0
  25. data/node_modules/axe-core/doc/examples/jest_react/README.md +41 -0
  26. data/node_modules/axe-core/doc/examples/jest_react/link.js +7 -0
  27. data/node_modules/axe-core/doc/examples/jest_react/link.test.js +24 -0
  28. data/node_modules/axe-core/doc/examples/jest_react/package.json +28 -0
  29. data/node_modules/axe-core/doc/examples/jest_react/test-helpers.js +21 -0
  30. data/node_modules/axe-core/doc/examples/mocha/README.md +37 -0
  31. data/node_modules/axe-core/doc/examples/mocha/package.json +21 -0
  32. data/node_modules/axe-core/doc/examples/phantomjs/README.md +17 -0
  33. data/node_modules/axe-core/doc/examples/phantomjs/axe-phantom.js +51 -0
  34. data/node_modules/axe-core/doc/examples/phantomjs/package.json +19 -0
  35. data/node_modules/axe-core/doc/examples/puppeteer/README.md +12 -0
  36. data/node_modules/axe-core/doc/examples/puppeteer/axe-puppeteer.js +60 -0
  37. data/node_modules/axe-core/doc/examples/puppeteer/package.json +10 -0
  38. data/node_modules/axe-core/doc/examples/qunit/README.md +37 -0
  39. data/node_modules/axe-core/doc/examples/qunit/package.json +21 -0
  40. data/node_modules/axe-core/doc/plugins.md +123 -0
  41. data/node_modules/axe-core/doc/projects.md +44 -0
  42. data/node_modules/axe-core/doc/rule-descriptions.md +79 -0
  43. data/node_modules/axe-core/doc/rule-development.md +95 -0
  44. data/node_modules/axe-core/doc/rule-proposal.md +106 -0
  45. data/node_modules/axe-core/lib/checks/aria/abstractrole.js +1 -0
  46. data/node_modules/axe-core/lib/checks/aria/abstractrole.json +11 -0
  47. data/node_modules/axe-core/lib/checks/aria/allowed-attr.js +39 -0
  48. data/node_modules/axe-core/lib/checks/aria/allowed-attr.json +11 -0
  49. data/node_modules/axe-core/lib/checks/aria/aria-allowed-role.js +28 -0
  50. data/node_modules/axe-core/lib/checks/aria/aria-allowed-role.json +16 -0
  51. data/node_modules/axe-core/lib/checks/aria/aria-hidden-body.js +1 -0
  52. data/node_modules/axe-core/lib/checks/aria/aria-hidden-body.json +11 -0
  53. data/node_modules/axe-core/lib/checks/aria/errormessage.js +33 -0
  54. data/node_modules/axe-core/lib/checks/aria/errormessage.json +11 -0
  55. data/node_modules/axe-core/lib/checks/aria/has-widget-role.js +6 -0
  56. data/node_modules/axe-core/lib/checks/aria/has-widget-role.json +12 -0
  57. data/node_modules/axe-core/lib/checks/aria/implicit-role-fallback.js +6 -0
  58. data/node_modules/axe-core/lib/checks/aria/implicit-role-fallback.json +11 -0
  59. data/node_modules/axe-core/lib/checks/aria/invalidrole.js +3 -0
  60. data/node_modules/axe-core/lib/checks/aria/invalidrole.json +11 -0
  61. data/node_modules/axe-core/lib/checks/aria/required-attr.js +28 -0
  62. data/node_modules/axe-core/lib/checks/aria/required-attr.json +11 -0
  63. data/node_modules/axe-core/lib/checks/aria/required-children.js +117 -0
  64. data/node_modules/axe-core/lib/checks/aria/required-children.json +15 -0
  65. data/node_modules/axe-core/lib/checks/aria/required-parent.js +87 -0
  66. data/node_modules/axe-core/lib/checks/aria/required-parent.json +11 -0
  67. data/node_modules/axe-core/lib/checks/aria/unsupportedattr.js +39 -0
  68. data/node_modules/axe-core/lib/checks/aria/unsupportedattr.json +11 -0
  69. data/node_modules/axe-core/lib/checks/aria/unsupportedrole.js +1 -0
  70. data/node_modules/axe-core/lib/checks/aria/unsupportedrole.json +11 -0
  71. data/node_modules/axe-core/lib/checks/aria/valid-attr-value.js +32 -0
  72. data/node_modules/axe-core/lib/checks/aria/valid-attr-value.json +12 -0
  73. data/node_modules/axe-core/lib/checks/aria/valid-attr.js +25 -0
  74. data/node_modules/axe-core/lib/checks/aria/valid-attr.json +12 -0
  75. data/node_modules/axe-core/lib/checks/aria/valid-scrollable-semantics.js +62 -0
  76. data/node_modules/axe-core/lib/checks/aria/valid-scrollable-semantics.json +12 -0
  77. data/node_modules/axe-core/lib/checks/color/color-contrast.js +70 -0
  78. data/node_modules/axe-core/lib/checks/color/color-contrast.json +24 -0
  79. data/node_modules/axe-core/lib/checks/color/link-in-text-block.js +85 -0
  80. data/node_modules/axe-core/lib/checks/color/link-in-text-block.json +19 -0
  81. data/node_modules/axe-core/lib/checks/forms/autocomplete-appropriate.js +67 -0
  82. data/node_modules/axe-core/lib/checks/forms/autocomplete-appropriate.json +11 -0
  83. data/node_modules/axe-core/lib/checks/forms/autocomplete-valid.js +2 -0
  84. data/node_modules/axe-core/lib/checks/forms/autocomplete-valid.json +11 -0
  85. data/node_modules/axe-core/lib/checks/forms/fieldset-after.js +25 -0
  86. data/node_modules/axe-core/lib/checks/forms/fieldset.js +109 -0
  87. data/node_modules/axe-core/lib/checks/forms/fieldset.json +12 -0
  88. data/node_modules/axe-core/lib/checks/forms/group-labelledby-after.js +16 -0
  89. data/node_modules/axe-core/lib/checks/forms/group-labelledby.js +66 -0
  90. data/node_modules/axe-core/lib/checks/forms/group-labelledby.json +12 -0
  91. data/node_modules/axe-core/lib/checks/keyboard/accesskeys-after.js +19 -0
  92. data/node_modules/axe-core/lib/checks/keyboard/accesskeys.js +5 -0
  93. data/node_modules/axe-core/lib/checks/keyboard/accesskeys.json +12 -0
  94. data/node_modules/axe-core/lib/checks/keyboard/focusable-disabled.js +25 -0
  95. data/node_modules/axe-core/lib/checks/keyboard/focusable-disabled.json +11 -0
  96. data/node_modules/axe-core/lib/checks/keyboard/focusable-no-name.js +6 -0
  97. data/node_modules/axe-core/lib/checks/keyboard/focusable-no-name.json +11 -0
  98. data/node_modules/axe-core/lib/checks/keyboard/focusable-not-tabbable.js +25 -0
  99. data/node_modules/axe-core/lib/checks/keyboard/focusable-not-tabbable.json +11 -0
  100. data/node_modules/axe-core/lib/checks/keyboard/landmark-is-top-level.js +18 -0
  101. data/node_modules/axe-core/lib/checks/keyboard/landmark-is-top-level.json +11 -0
  102. data/node_modules/axe-core/lib/checks/keyboard/page-has-elm-after.js +11 -0
  103. data/node_modules/axe-core/lib/checks/keyboard/page-has-elm.js +9 -0
  104. data/node_modules/axe-core/lib/checks/keyboard/page-has-heading-one.json +15 -0
  105. data/node_modules/axe-core/lib/checks/keyboard/page-has-main.json +15 -0
  106. data/node_modules/axe-core/lib/checks/keyboard/page-no-duplicate-banner.json +15 -0
  107. data/node_modules/axe-core/lib/checks/keyboard/page-no-duplicate-contentinfo.json +15 -0
  108. data/node_modules/axe-core/lib/checks/keyboard/page-no-duplicate-main.json +14 -0
  109. data/node_modules/axe-core/lib/checks/keyboard/page-no-duplicate.js +22 -0
  110. data/node_modules/axe-core/lib/checks/keyboard/tabindex.js +1 -0
  111. data/node_modules/axe-core/lib/checks/keyboard/tabindex.json +11 -0
  112. data/node_modules/axe-core/lib/checks/label/alt-space-value.js +2 -0
  113. data/node_modules/axe-core/lib/checks/label/alt-space-value.json +11 -0
  114. data/node_modules/axe-core/lib/checks/label/duplicate-img-label.js +19 -0
  115. data/node_modules/axe-core/lib/checks/label/duplicate-img-label.json +11 -0
  116. data/node_modules/axe-core/lib/checks/label/explicit.js +15 -0
  117. data/node_modules/axe-core/lib/checks/label/explicit.json +11 -0
  118. data/node_modules/axe-core/lib/checks/label/help-same-as-label.js +23 -0
  119. data/node_modules/axe-core/lib/checks/label/help-same-as-label.json +12 -0
  120. data/node_modules/axe-core/lib/checks/label/hidden-explicit-label.js +12 -0
  121. data/node_modules/axe-core/lib/checks/label/hidden-explicit-label.json +11 -0
  122. data/node_modules/axe-core/lib/checks/label/implicit.js +7 -0
  123. data/node_modules/axe-core/lib/checks/label/implicit.json +11 -0
  124. data/node_modules/axe-core/lib/checks/label/label-content-name-mismatch.js +49 -0
  125. data/node_modules/axe-core/lib/checks/label/label-content-name-mismatch.json +11 -0
  126. data/node_modules/axe-core/lib/checks/label/multiple-label.js +29 -0
  127. data/node_modules/axe-core/lib/checks/label/multiple-label.json +11 -0
  128. data/node_modules/axe-core/lib/checks/label/title-only.js +5 -0
  129. data/node_modules/axe-core/lib/checks/label/title-only.json +11 -0
  130. data/node_modules/axe-core/lib/checks/language/has-lang.js +5 -0
  131. data/node_modules/axe-core/lib/checks/language/has-lang.json +11 -0
  132. data/node_modules/axe-core/lib/checks/language/valid-lang.js +26 -0
  133. data/node_modules/axe-core/lib/checks/language/valid-lang.json +11 -0
  134. data/node_modules/axe-core/lib/checks/language/xml-lang-mismatch.js +5 -0
  135. data/node_modules/axe-core/lib/checks/language/xml-lang-mismatch.json +11 -0
  136. data/node_modules/axe-core/lib/checks/lists/dlitem.js +23 -0
  137. data/node_modules/axe-core/lib/checks/lists/dlitem.json +11 -0
  138. data/node_modules/axe-core/lib/checks/lists/listitem.js +18 -0
  139. data/node_modules/axe-core/lib/checks/lists/listitem.json +11 -0
  140. data/node_modules/axe-core/lib/checks/lists/only-dlitems.js +42 -0
  141. data/node_modules/axe-core/lib/checks/lists/only-dlitems.json +11 -0
  142. data/node_modules/axe-core/lib/checks/lists/only-listitems.js +68 -0
  143. data/node_modules/axe-core/lib/checks/lists/only-listitems.json +11 -0
  144. data/node_modules/axe-core/lib/checks/lists/structured-dlitems.js +22 -0
  145. data/node_modules/axe-core/lib/checks/lists/structured-dlitems.json +11 -0
  146. data/node_modules/axe-core/lib/checks/media/caption.js +8 -0
  147. data/node_modules/axe-core/lib/checks/media/caption.json +11 -0
  148. data/node_modules/axe-core/lib/checks/media/description.js +8 -0
  149. data/node_modules/axe-core/lib/checks/media/description.json +11 -0
  150. data/node_modules/axe-core/lib/checks/media/frame-tested.js +28 -0
  151. data/node_modules/axe-core/lib/checks/media/frame-tested.json +15 -0
  152. data/node_modules/axe-core/lib/checks/mobile/css-orientation-lock.js +132 -0
  153. data/node_modules/axe-core/lib/checks/mobile/css-orientation-lock.json +12 -0
  154. data/node_modules/axe-core/lib/checks/mobile/meta-viewport-large.json +15 -0
  155. data/node_modules/axe-core/lib/checks/mobile/meta-viewport-scale.js +38 -0
  156. data/node_modules/axe-core/lib/checks/mobile/meta-viewport.json +14 -0
  157. data/node_modules/axe-core/lib/checks/navigation/header-present.js +4 -0
  158. data/node_modules/axe-core/lib/checks/navigation/header-present.json +11 -0
  159. data/node_modules/axe-core/lib/checks/navigation/heading-order-after.js +14 -0
  160. data/node_modules/axe-core/lib/checks/navigation/heading-order.js +15 -0
  161. data/node_modules/axe-core/lib/checks/navigation/heading-order.json +12 -0
  162. data/node_modules/axe-core/lib/checks/navigation/internal-link-present.js +4 -0
  163. data/node_modules/axe-core/lib/checks/navigation/internal-link-present.json +11 -0
  164. data/node_modules/axe-core/lib/checks/navigation/landmark.js +3 -0
  165. data/node_modules/axe-core/lib/checks/navigation/landmark.json +11 -0
  166. data/node_modules/axe-core/lib/checks/navigation/meta-refresh.js +4 -0
  167. data/node_modules/axe-core/lib/checks/navigation/meta-refresh.json +11 -0
  168. data/node_modules/axe-core/lib/checks/navigation/p-as-heading.js +93 -0
  169. data/node_modules/axe-core/lib/checks/navigation/p-as-heading.json +30 -0
  170. data/node_modules/axe-core/lib/checks/navigation/region-after.js +1 -0
  171. data/node_modules/axe-core/lib/checks/navigation/region.js +85 -0
  172. data/node_modules/axe-core/lib/checks/navigation/region.json +12 -0
  173. data/node_modules/axe-core/lib/checks/navigation/skip-link.js +5 -0
  174. data/node_modules/axe-core/lib/checks/navigation/skip-link.json +12 -0
  175. data/node_modules/axe-core/lib/checks/navigation/unique-frame-title-after.js +9 -0
  176. data/node_modules/axe-core/lib/checks/navigation/unique-frame-title.js +6 -0
  177. data/node_modules/axe-core/lib/checks/navigation/unique-frame-title.json +12 -0
  178. data/node_modules/axe-core/lib/checks/parsing/duplicate-id-active.json +12 -0
  179. data/node_modules/axe-core/lib/checks/parsing/duplicate-id-after.js +8 -0
  180. data/node_modules/axe-core/lib/checks/parsing/duplicate-id-aria.json +12 -0
  181. data/node_modules/axe-core/lib/checks/parsing/duplicate-id.js +17 -0
  182. data/node_modules/axe-core/lib/checks/parsing/duplicate-id.json +12 -0
  183. data/node_modules/axe-core/lib/checks/shared/aria-label.js +2 -0
  184. data/node_modules/axe-core/lib/checks/shared/aria-label.json +11 -0
  185. data/node_modules/axe-core/lib/checks/shared/aria-labelledby.js +2 -0
  186. data/node_modules/axe-core/lib/checks/shared/aria-labelledby.json +11 -0
  187. data/node_modules/axe-core/lib/checks/shared/button-has-visible-text.js +12 -0
  188. data/node_modules/axe-core/lib/checks/shared/button-has-visible-text.json +11 -0
  189. data/node_modules/axe-core/lib/checks/shared/doc-has-title.js +2 -0
  190. data/node_modules/axe-core/lib/checks/shared/doc-has-title.json +11 -0
  191. data/node_modules/axe-core/lib/checks/shared/exists.js +1 -0
  192. data/node_modules/axe-core/lib/checks/shared/exists.json +11 -0
  193. data/node_modules/axe-core/lib/checks/shared/has-alt.js +4 -0
  194. data/node_modules/axe-core/lib/checks/shared/has-alt.json +11 -0
  195. data/node_modules/axe-core/lib/checks/shared/has-visible-text.js +1 -0
  196. data/node_modules/axe-core/lib/checks/shared/has-visible-text.json +11 -0
  197. data/node_modules/axe-core/lib/checks/shared/is-on-screen.js +4 -0
  198. data/node_modules/axe-core/lib/checks/shared/is-on-screen.json +11 -0
  199. data/node_modules/axe-core/lib/checks/shared/non-empty-alt.js +2 -0
  200. data/node_modules/axe-core/lib/checks/shared/non-empty-alt.json +11 -0
  201. data/node_modules/axe-core/lib/checks/shared/non-empty-if-present.js +11 -0
  202. data/node_modules/axe-core/lib/checks/shared/non-empty-if-present.json +11 -0
  203. data/node_modules/axe-core/lib/checks/shared/non-empty-title.js +2 -0
  204. data/node_modules/axe-core/lib/checks/shared/non-empty-title.json +11 -0
  205. data/node_modules/axe-core/lib/checks/shared/non-empty-value.js +2 -0
  206. data/node_modules/axe-core/lib/checks/shared/non-empty-value.json +11 -0
  207. data/node_modules/axe-core/lib/checks/shared/role-none.js +1 -0
  208. data/node_modules/axe-core/lib/checks/shared/role-none.json +11 -0
  209. data/node_modules/axe-core/lib/checks/shared/role-presentation.js +1 -0
  210. data/node_modules/axe-core/lib/checks/shared/role-presentation.json +11 -0
  211. data/node_modules/axe-core/lib/checks/tables/caption-faked.js +10 -0
  212. data/node_modules/axe-core/lib/checks/tables/caption-faked.json +11 -0
  213. data/node_modules/axe-core/lib/checks/tables/has-caption.js +1 -0
  214. data/node_modules/axe-core/lib/checks/tables/has-caption.json +11 -0
  215. data/node_modules/axe-core/lib/checks/tables/has-summary.js +1 -0
  216. data/node_modules/axe-core/lib/checks/tables/has-summary.json +11 -0
  217. data/node_modules/axe-core/lib/checks/tables/has-th.js +31 -0
  218. data/node_modules/axe-core/lib/checks/tables/has-th.json +11 -0
  219. data/node_modules/axe-core/lib/checks/tables/headers-visible-text.js +30 -0
  220. data/node_modules/axe-core/lib/checks/tables/html5-scope.js +5 -0
  221. data/node_modules/axe-core/lib/checks/tables/html5-scope.json +11 -0
  222. data/node_modules/axe-core/lib/checks/tables/same-caption-summary.js +7 -0
  223. data/node_modules/axe-core/lib/checks/tables/same-caption-summary.json +11 -0
  224. data/node_modules/axe-core/lib/checks/tables/scope-value.js +5 -0
  225. data/node_modules/axe-core/lib/checks/tables/scope-value.json +11 -0
  226. data/node_modules/axe-core/lib/checks/tables/td-has-header.js +29 -0
  227. data/node_modules/axe-core/lib/checks/tables/td-has-header.json +11 -0
  228. data/node_modules/axe-core/lib/checks/tables/td-headers-attr.js +62 -0
  229. data/node_modules/axe-core/lib/checks/tables/td-headers-attr.json +11 -0
  230. data/node_modules/axe-core/lib/checks/tables/th-has-data-cells.js +76 -0
  231. data/node_modules/axe-core/lib/checks/tables/th-has-data-cells.json +12 -0
  232. data/node_modules/axe-core/lib/checks/tables/th-single-row-column.js +39 -0
  233. data/node_modules/axe-core/lib/checks/visibility/hidden-content.js +21 -0
  234. data/node_modules/axe-core/lib/checks/visibility/hidden-content.json +12 -0
  235. data/node_modules/axe-core/lib/commons/aria/arialabel-text.js +15 -0
  236. data/node_modules/axe-core/lib/commons/aria/arialabelledby-text.js +52 -0
  237. data/node_modules/axe-core/lib/commons/aria/attributes.js +45 -0
  238. data/node_modules/axe-core/lib/commons/aria/get-element-unallowed-roles.js +92 -0
  239. data/node_modules/axe-core/lib/commons/aria/get-owned-virtual.js +24 -0
  240. data/node_modules/axe-core/lib/commons/aria/get-role.js +44 -0
  241. data/node_modules/axe-core/lib/commons/aria/index.js +2417 -0
  242. data/node_modules/axe-core/lib/commons/aria/is-accessible-ref.js +55 -0
  243. data/node_modules/axe-core/lib/commons/aria/is-aria-role-allowed-on-element.js +41 -0
  244. data/node_modules/axe-core/lib/commons/aria/is-unsupported-role.js +14 -0
  245. data/node_modules/axe-core/lib/commons/aria/label-virtual.js +54 -0
  246. data/node_modules/axe-core/lib/commons/aria/named-from-contents.js +39 -0
  247. data/node_modules/axe-core/lib/commons/aria/roles.js +208 -0
  248. data/node_modules/axe-core/lib/commons/aria/validate-attr-value.js +63 -0
  249. data/node_modules/axe-core/lib/commons/color/contrast.js +172 -0
  250. data/node_modules/axe-core/lib/commons/color/element-is-distinct.js +88 -0
  251. data/node_modules/axe-core/lib/commons/color/get-background-color.js +411 -0
  252. data/node_modules/axe-core/lib/commons/color/get-foreground-color.js +32 -0
  253. data/node_modules/axe-core/lib/commons/color/incomplete-data.js +50 -0
  254. data/node_modules/axe-core/lib/commons/color/index.js +8 -0
  255. data/node_modules/axe-core/lib/commons/dom/elements-below-floating.js +39 -0
  256. data/node_modules/axe-core/lib/commons/dom/find-elms-in-context.js +28 -0
  257. data/node_modules/axe-core/lib/commons/dom/find-up.js +63 -0
  258. data/node_modules/axe-core/lib/commons/dom/get-composed-parent.js +25 -0
  259. data/node_modules/axe-core/lib/commons/dom/get-element-by-reference.js +34 -0
  260. data/node_modules/axe-core/lib/commons/dom/get-element-coordinates.js +38 -0
  261. data/node_modules/axe-core/lib/commons/dom/get-root-node.js +12 -0
  262. data/node_modules/axe-core/lib/commons/dom/get-scroll-offset.js +34 -0
  263. data/node_modules/axe-core/lib/commons/dom/get-tabbable-elements.js +24 -0
  264. data/node_modules/axe-core/lib/commons/dom/get-viewport-size.js +37 -0
  265. data/node_modules/axe-core/lib/commons/dom/has-content-virtual.js +73 -0
  266. data/node_modules/axe-core/lib/commons/dom/idrefs.js +36 -0
  267. data/node_modules/axe-core/lib/commons/dom/index.js +9 -0
  268. data/node_modules/axe-core/lib/commons/dom/is-focusable.js +90 -0
  269. data/node_modules/axe-core/lib/commons/dom/is-hidden-with-css.js +60 -0
  270. data/node_modules/axe-core/lib/commons/dom/is-html5.js +17 -0
  271. data/node_modules/axe-core/lib/commons/dom/is-in-text-block.js +95 -0
  272. data/node_modules/axe-core/lib/commons/dom/is-node.js +13 -0
  273. data/node_modules/axe-core/lib/commons/dom/is-offscreen.js +62 -0
  274. data/node_modules/axe-core/lib/commons/dom/is-visible.js +77 -0
  275. data/node_modules/axe-core/lib/commons/dom/is-visual-content.js +50 -0
  276. data/node_modules/axe-core/lib/commons/dom/shadow-elements-from-point.js +41 -0
  277. data/node_modules/axe-core/lib/commons/dom/visually-contains.js +62 -0
  278. data/node_modules/axe-core/lib/commons/dom/visually-overlaps.js +47 -0
  279. data/node_modules/axe-core/lib/commons/index.js +11 -0
  280. data/node_modules/axe-core/lib/commons/intro.stub +1 -0
  281. data/node_modules/axe-core/lib/commons/matches/attributes.js +23 -0
  282. data/node_modules/axe-core/lib/commons/matches/condition.js +19 -0
  283. data/node_modules/axe-core/lib/commons/matches/from-definition.js +47 -0
  284. data/node_modules/axe-core/lib/commons/matches/from-function.js +38 -0
  285. data/node_modules/axe-core/lib/commons/matches/from-primative.js +30 -0
  286. data/node_modules/axe-core/lib/commons/matches/index.js +37 -0
  287. data/node_modules/axe-core/lib/commons/matches/node-name.js +34 -0
  288. data/node_modules/axe-core/lib/commons/matches/properties.js +25 -0
  289. data/node_modules/axe-core/lib/commons/outro.stub +2 -0
  290. data/node_modules/axe-core/lib/commons/table/get-all-cells.js +28 -0
  291. data/node_modules/axe-core/lib/commons/table/get-cell-position.js +28 -0
  292. data/node_modules/axe-core/lib/commons/table/get-headers.js +29 -0
  293. data/node_modules/axe-core/lib/commons/table/get-scope.js +54 -0
  294. data/node_modules/axe-core/lib/commons/table/index.js +9 -0
  295. data/node_modules/axe-core/lib/commons/table/is-column-header.js +13 -0
  296. data/node_modules/axe-core/lib/commons/table/is-data-cell.js +22 -0
  297. data/node_modules/axe-core/lib/commons/table/is-data-table.js +190 -0
  298. data/node_modules/axe-core/lib/commons/table/is-header.js +22 -0
  299. data/node_modules/axe-core/lib/commons/table/is-row-header.js +13 -0
  300. data/node_modules/axe-core/lib/commons/table/to-grid.js +38 -0
  301. data/node_modules/axe-core/lib/commons/table/traverse.js +78 -0
  302. data/node_modules/axe-core/lib/commons/text/accessible-text-virtual.js +152 -0
  303. data/node_modules/axe-core/lib/commons/text/form-control-value.js +204 -0
  304. data/node_modules/axe-core/lib/commons/text/index.js +8 -0
  305. data/node_modules/axe-core/lib/commons/text/is-human-interpretable.js +51 -0
  306. data/node_modules/axe-core/lib/commons/text/is-valid-autocomplete.js +118 -0
  307. data/node_modules/axe-core/lib/commons/text/label-text.js +58 -0
  308. data/node_modules/axe-core/lib/commons/text/label-virtual.js +53 -0
  309. data/node_modules/axe-core/lib/commons/text/native-element-types.js +100 -0
  310. data/node_modules/axe-core/lib/commons/text/native-text-alternative.js +50 -0
  311. data/node_modules/axe-core/lib/commons/text/native-text-methods.js +122 -0
  312. data/node_modules/axe-core/lib/commons/text/sanitize.js +18 -0
  313. data/node_modules/axe-core/lib/commons/text/subtree-text.js +89 -0
  314. data/node_modules/axe-core/lib/commons/text/title-text.js +33 -0
  315. data/node_modules/axe-core/lib/commons/text/unicode.js +117 -0
  316. data/node_modules/axe-core/lib/commons/text/unsupported.js +5 -0
  317. data/node_modules/axe-core/lib/commons/text/visible-virtual.js +46 -0
  318. data/node_modules/axe-core/lib/commons/utils/index.js +10 -0
  319. data/node_modules/axe-core/lib/core/base/audit.js +684 -0
  320. data/node_modules/axe-core/lib/core/base/check-result.js +33 -0
  321. data/node_modules/axe-core/lib/core/base/check.js +123 -0
  322. data/node_modules/axe-core/lib/core/base/context.js +273 -0
  323. data/node_modules/axe-core/lib/core/base/rule-result.js +39 -0
  324. data/node_modules/axe-core/lib/core/base/rule.js +383 -0
  325. data/node_modules/axe-core/lib/core/constants.js +68 -0
  326. data/node_modules/axe-core/lib/core/imports/index.js +26 -0
  327. data/node_modules/axe-core/lib/core/index.js +45 -0
  328. data/node_modules/axe-core/lib/core/log.js +12 -0
  329. data/node_modules/axe-core/lib/core/public/cleanup-plugins.js +53 -0
  330. data/node_modules/axe-core/lib/core/public/configure.js +57 -0
  331. data/node_modules/axe-core/lib/core/public/get-rules.js +29 -0
  332. data/node_modules/axe-core/lib/core/public/load.js +66 -0
  333. data/node_modules/axe-core/lib/core/public/plugins.js +47 -0
  334. data/node_modules/axe-core/lib/core/public/reporter.js +24 -0
  335. data/node_modules/axe-core/lib/core/public/reset.js +12 -0
  336. data/node_modules/axe-core/lib/core/public/run-rules.js +94 -0
  337. data/node_modules/axe-core/lib/core/public/run.js +148 -0
  338. data/node_modules/axe-core/lib/core/reporters/helpers/failure-summary.js +35 -0
  339. data/node_modules/axe-core/lib/core/reporters/helpers/get-environment-data.js +39 -0
  340. data/node_modules/axe-core/lib/core/reporters/helpers/incomplete-fallback-msg.js +11 -0
  341. data/node_modules/axe-core/lib/core/reporters/helpers/index.js +3 -0
  342. data/node_modules/axe-core/lib/core/reporters/helpers/process-aggregate.js +102 -0
  343. data/node_modules/axe-core/lib/core/reporters/na.js +20 -0
  344. data/node_modules/axe-core/lib/core/reporters/no-passes.js +18 -0
  345. data/node_modules/axe-core/lib/core/reporters/raw.js +8 -0
  346. data/node_modules/axe-core/lib/core/reporters/v1.js +26 -0
  347. data/node_modules/axe-core/lib/core/reporters/v2.js +22 -0
  348. data/node_modules/axe-core/lib/core/utils/aggregate.js +19 -0
  349. data/node_modules/axe-core/lib/core/utils/aggregateChecks.js +85 -0
  350. data/node_modules/axe-core/lib/core/utils/aggregateNodeResults.js +61 -0
  351. data/node_modules/axe-core/lib/core/utils/aggregateResult.js +37 -0
  352. data/node_modules/axe-core/lib/core/utils/are-styles-set.js +24 -0
  353. data/node_modules/axe-core/lib/core/utils/check-helper.js +38 -0
  354. data/node_modules/axe-core/lib/core/utils/clone.js +27 -0
  355. data/node_modules/axe-core/lib/core/utils/collect-results-from-frames.js +127 -0
  356. data/node_modules/axe-core/lib/core/utils/contains.js +30 -0
  357. data/node_modules/axe-core/lib/core/utils/css-parser.js +5 -0
  358. data/node_modules/axe-core/lib/core/utils/dq-element.js +97 -0
  359. data/node_modules/axe-core/lib/core/utils/element-matches.js +39 -0
  360. data/node_modules/axe-core/lib/core/utils/escape-selector.js +79 -0
  361. data/node_modules/axe-core/lib/core/utils/extend-meta-data.js +17 -0
  362. data/node_modules/axe-core/lib/core/utils/finalize-result.js +11 -0
  363. data/node_modules/axe-core/lib/core/utils/find-by.js +14 -0
  364. data/node_modules/axe-core/lib/core/utils/flattened-tree.js +170 -0
  365. data/node_modules/axe-core/lib/core/utils/get-all-checks.js +12 -0
  366. data/node_modules/axe-core/lib/core/utils/get-base-lang.js +16 -0
  367. data/node_modules/axe-core/lib/core/utils/get-check-option.js +40 -0
  368. data/node_modules/axe-core/lib/core/utils/get-friendly-uri-end.js +144 -0
  369. data/node_modules/axe-core/lib/core/utils/get-root-node.js +17 -0
  370. data/node_modules/axe-core/lib/core/utils/get-selector.js +406 -0
  371. data/node_modules/axe-core/lib/core/utils/get-xpath.js +84 -0
  372. data/node_modules/axe-core/lib/core/utils/index.js +10 -0
  373. data/node_modules/axe-core/lib/core/utils/inject-style.js +38 -0
  374. data/node_modules/axe-core/lib/core/utils/is-hidden.js +40 -0
  375. data/node_modules/axe-core/lib/core/utils/is-html-element.js +135 -0
  376. data/node_modules/axe-core/lib/core/utils/is-shadow-root.js +40 -0
  377. data/node_modules/axe-core/lib/core/utils/is-xhtml.js +14 -0
  378. data/node_modules/axe-core/lib/core/utils/merge-results.js +116 -0
  379. data/node_modules/axe-core/lib/core/utils/node-sorter.js +21 -0
  380. data/node_modules/axe-core/lib/core/utils/performance-timer.js +121 -0
  381. data/node_modules/axe-core/lib/core/utils/pollyfills.js +299 -0
  382. data/node_modules/axe-core/lib/core/utils/preload-cssom.js +456 -0
  383. data/node_modules/axe-core/lib/core/utils/preload.js +109 -0
  384. data/node_modules/axe-core/lib/core/utils/publish-metadata.js +93 -0
  385. data/node_modules/axe-core/lib/core/utils/qsa.js +322 -0
  386. data/node_modules/axe-core/lib/core/utils/queue.js +138 -0
  387. data/node_modules/axe-core/lib/core/utils/respondable.js +243 -0
  388. data/node_modules/axe-core/lib/core/utils/rule-should-run.js +83 -0
  389. data/node_modules/axe-core/lib/core/utils/scroll-state.js +70 -0
  390. data/node_modules/axe-core/lib/core/utils/select.js +146 -0
  391. data/node_modules/axe-core/lib/core/utils/to-array.js +21 -0
  392. data/node_modules/axe-core/lib/core/utils/token-list.js +15 -0
  393. data/node_modules/axe-core/lib/core/utils/uuid.js +242 -0
  394. data/node_modules/axe-core/lib/core/utils/valid-input-type.js +35 -0
  395. data/node_modules/axe-core/lib/core/utils/valid-langs.js +8152 -0
  396. data/node_modules/axe-core/lib/intro.stub +15 -0
  397. data/node_modules/axe-core/lib/misc/any-failure-summary.json +6 -0
  398. data/node_modules/axe-core/lib/misc/incomplete-fallback.json +3 -0
  399. data/node_modules/axe-core/lib/misc/none-failure-summary.json +6 -0
  400. data/node_modules/axe-core/lib/outro.stub +2 -0
  401. data/node_modules/axe-core/lib/rules/accesskeys.json +13 -0
  402. data/node_modules/axe-core/lib/rules/area-alt.json +19 -0
  403. data/node_modules/axe-core/lib/rules/aria-allowed-attr-matches.js +11 -0
  404. data/node_modules/axe-core/lib/rules/aria-allowed-attr.json +12 -0
  405. data/node_modules/axe-core/lib/rules/aria-allowed-role-matches.js +7 -0
  406. data/node_modules/axe-core/lib/rules/aria-allowed-role.json +14 -0
  407. data/node_modules/axe-core/lib/rules/aria-dpub-role-fallback-matches.js +10 -0
  408. data/node_modules/axe-core/lib/rules/aria-dpub-role-fallback.json +13 -0
  409. data/node_modules/axe-core/lib/rules/aria-has-attr-matches.js +11 -0
  410. data/node_modules/axe-core/lib/rules/aria-hidden-body.json +13 -0
  411. data/node_modules/axe-core/lib/rules/aria-hidden-focus-matches.js +18 -0
  412. data/node_modules/axe-core/lib/rules/aria-hidden-focus.json +14 -0
  413. data/node_modules/axe-core/lib/rules/aria-required-attr.json +12 -0
  414. data/node_modules/axe-core/lib/rules/aria-required-children.json +12 -0
  415. data/node_modules/axe-core/lib/rules/aria-required-parent.json +12 -0
  416. data/node_modules/axe-core/lib/rules/aria-roles.json +12 -0
  417. data/node_modules/axe-core/lib/rules/aria-valid-attr-value.json +12 -0
  418. data/node_modules/axe-core/lib/rules/aria-valid-attr.json +12 -0
  419. data/node_modules/axe-core/lib/rules/audio-caption.json +20 -0
  420. data/node_modules/axe-core/lib/rules/autocomplete-matches.js +45 -0
  421. data/node_modules/axe-core/lib/rules/autocomplete-valid.json +12 -0
  422. data/node_modules/axe-core/lib/rules/blink.json +19 -0
  423. data/node_modules/axe-core/lib/rules/button-name.json +27 -0
  424. data/node_modules/axe-core/lib/rules/bypass-matches.js +1 -0
  425. data/node_modules/axe-core/lib/rules/bypass.json +20 -0
  426. data/node_modules/axe-core/lib/rules/checkboxgroup.json +12 -0
  427. data/node_modules/axe-core/lib/rules/color-contrast-matches.js +120 -0
  428. data/node_modules/axe-core/lib/rules/color-contrast.json +16 -0
  429. data/node_modules/axe-core/lib/rules/css-orientation-lock.json +13 -0
  430. data/node_modules/axe-core/lib/rules/data-table-large-matches.js +11 -0
  431. data/node_modules/axe-core/lib/rules/data-table-matches.js +1 -0
  432. data/node_modules/axe-core/lib/rules/definition-list.json +13 -0
  433. data/node_modules/axe-core/lib/rules/dlitem.json +13 -0
  434. data/node_modules/axe-core/lib/rules/document-title.json +13 -0
  435. data/node_modules/axe-core/lib/rules/duplicate-id-active-matches.js +8 -0
  436. data/node_modules/axe-core/lib/rules/duplicate-id-active.json +14 -0
  437. data/node_modules/axe-core/lib/rules/duplicate-id-aria-matches.js +1 -0
  438. data/node_modules/axe-core/lib/rules/duplicate-id-aria.json +14 -0
  439. data/node_modules/axe-core/lib/rules/duplicate-id-misc-matches.js +11 -0
  440. data/node_modules/axe-core/lib/rules/duplicate-id.json +14 -0
  441. data/node_modules/axe-core/lib/rules/empty-heading.json +13 -0
  442. data/node_modules/axe-core/lib/rules/focus-order-semantics.json +13 -0
  443. data/node_modules/axe-core/lib/rules/form-field-multiple-labels.json +13 -0
  444. data/node_modules/axe-core/lib/rules/frame-tested.json +12 -0
  445. data/node_modules/axe-core/lib/rules/frame-title-has-text.js +2 -0
  446. data/node_modules/axe-core/lib/rules/frame-title-unique.json +13 -0
  447. data/node_modules/axe-core/lib/rules/frame-title.json +25 -0
  448. data/node_modules/axe-core/lib/rules/heading-matches.js +15 -0
  449. data/node_modules/axe-core/lib/rules/heading-order.json +13 -0
  450. data/node_modules/axe-core/lib/rules/hidden-content.json +13 -0
  451. data/node_modules/axe-core/lib/rules/html-has-lang.json +12 -0
  452. data/node_modules/axe-core/lib/rules/html-lang-valid.json +12 -0
  453. data/node_modules/axe-core/lib/rules/html-xml-lang-mismatch.json +13 -0
  454. data/node_modules/axe-core/lib/rules/image-alt.json +25 -0
  455. data/node_modules/axe-core/lib/rules/img-redundant-alt.json +12 -0
  456. data/node_modules/axe-core/lib/rules/input-image-alt.json +18 -0
  457. data/node_modules/axe-core/lib/rules/inserted-into-focus-order-matches.js +1 -0
  458. data/node_modules/axe-core/lib/rules/label-content-name-mismatch-matches.js +42 -0
  459. data/node_modules/axe-core/lib/rules/label-content-name-mismatch.json +12 -0
  460. data/node_modules/axe-core/lib/rules/label-matches.js +11 -0
  461. data/node_modules/axe-core/lib/rules/label-title-only.json +13 -0
  462. data/node_modules/axe-core/lib/rules/label.json +26 -0
  463. data/node_modules/axe-core/lib/rules/landmark-banner-is-top-level.json +13 -0
  464. data/node_modules/axe-core/lib/rules/landmark-complementary-is-top-level.json +12 -0
  465. data/node_modules/axe-core/lib/rules/landmark-contentinfo-is-top-level.json +13 -0
  466. data/node_modules/axe-core/lib/rules/landmark-has-body-context.js +8 -0
  467. data/node_modules/axe-core/lib/rules/landmark-main-is-top-level.json +12 -0
  468. data/node_modules/axe-core/lib/rules/landmark-no-duplicate-banner.json +12 -0
  469. data/node_modules/axe-core/lib/rules/landmark-no-duplicate-contentinfo.json +12 -0
  470. data/node_modules/axe-core/lib/rules/landmark-one-main.json +12 -0
  471. data/node_modules/axe-core/lib/rules/layout-table-matches.js +8 -0
  472. data/node_modules/axe-core/lib/rules/layout-table.json +13 -0
  473. data/node_modules/axe-core/lib/rules/link-in-text-block-matches.js +14 -0
  474. data/node_modules/axe-core/lib/rules/link-in-text-block.json +14 -0
  475. data/node_modules/axe-core/lib/rules/link-name.json +26 -0
  476. data/node_modules/axe-core/lib/rules/list.json +13 -0
  477. data/node_modules/axe-core/lib/rules/listitem.json +13 -0
  478. data/node_modules/axe-core/lib/rules/marquee.json +13 -0
  479. data/node_modules/axe-core/lib/rules/meta-refresh.json +13 -0
  480. data/node_modules/axe-core/lib/rules/meta-viewport-large.json +13 -0
  481. data/node_modules/axe-core/lib/rules/meta-viewport.json +13 -0
  482. data/node_modules/axe-core/lib/rules/no-role-matches.js +1 -0
  483. data/node_modules/axe-core/lib/rules/not-html-matches.js +1 -0
  484. data/node_modules/axe-core/lib/rules/object-alt.json +25 -0
  485. data/node_modules/axe-core/lib/rules/p-as-heading-matches.js +17 -0
  486. data/node_modules/axe-core/lib/rules/p-as-heading.json +13 -0
  487. data/node_modules/axe-core/lib/rules/page-has-heading-one.json +12 -0
  488. data/node_modules/axe-core/lib/rules/radiogroup.json +12 -0
  489. data/node_modules/axe-core/lib/rules/region.json +13 -0
  490. data/node_modules/axe-core/lib/rules/role-not-button-matches.js +1 -0
  491. data/node_modules/axe-core/lib/rules/scope-attr-valid.json +12 -0
  492. data/node_modules/axe-core/lib/rules/server-side-image-map.json +18 -0
  493. data/node_modules/axe-core/lib/rules/skip-link-matches.js +1 -0
  494. data/node_modules/axe-core/lib/rules/skip-link.json +13 -0
  495. data/node_modules/axe-core/lib/rules/tabindex.json +12 -0
  496. data/node_modules/axe-core/lib/rules/table-duplicate-name.json +12 -0
  497. data/node_modules/axe-core/lib/rules/table-fake-caption.json +20 -0
  498. data/node_modules/axe-core/lib/rules/td-has-header.json +20 -0
  499. data/node_modules/axe-core/lib/rules/td-headers-attr.json +12 -0
  500. data/node_modules/axe-core/lib/rules/th-has-data-cells.json +13 -0
  501. data/node_modules/axe-core/lib/rules/valid-lang.json +13 -0
  502. data/node_modules/axe-core/lib/rules/video-caption.json +19 -0
  503. data/node_modules/axe-core/lib/rules/video-description.json +19 -0
  504. data/node_modules/axe-core/lib/rules/window-is-top.js +3 -0
  505. data/node_modules/axe-core/lib/rules/xml-lang-mismatch-matches.js +12 -0
  506. data/node_modules/axe-core/locales/de.json +627 -0
  507. data/node_modules/axe-core/locales/fr.json +667 -0
  508. data/node_modules/axe-core/locales/ja.json +728 -0
  509. data/node_modules/axe-core/locales/nl.json +36 -0
  510. data/node_modules/axe-core/package.json +215 -0
  511. data/node_modules/axe-core/sri-history.json +138 -0
  512. data/node_modules/axe-core/typings/axe-core/axe-core-tests.ts +180 -0
  513. metadata +511 -1
@@ -0,0 +1,44 @@
1
+ # Projects that use axe-core
2
+
3
+ Add your project/integration to this file and submit a pull request.
4
+
5
+ ## Deque Projects
6
+
7
+ 1. [WorldSpace Attest](https://www.deque.com/products/worldspace-attest/)
8
+ 1. [WorldSpace Assure](https://www.deque.com/products/worldspace-assure/)
9
+ 1. [WorldSpace Comply](https://www.deque.com/products/worldspace-comply/)
10
+ 1. [aXe Chrome Extension](https://chrome.google.com/webstore/detail/axe/lhdoppojpmngadmnindnejefpokejbdd)
11
+ 1. [aXe Firefox Extension](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/)
12
+ 1. [axe-cli](https://www.npmjs.com/package/axe-cli)
13
+ 1. [axe-webdriverjs](https://www.npmjs.com/package/axe-webdriverjs)
14
+ 1. [grunt-axe-webdriver](https://www.npmjs.com/package/grunt-axe-webdriver)
15
+ 1. [react-axe](https://github.com/dequelabs/react-axe)
16
+ 1. [axe-matchers (Ruby)](https://github.com/dequelabs/axe-matchers)
17
+ 1. [axe-selenium-java](https://github.com/dequelabs/axe-selenium-java)
18
+
19
+ ## Community Projects
20
+
21
+ 1. [Lighthouse](https://github.com/GoogleChrome/lighthouse)
22
+ 1. [Webhint.io](https://webhint.io/)
23
+ 1. [Web Accessibility Checker for Visual Studio](https://visualstudiogallery.msdn.microsoft.com/3aabefab-1681-4fea-8f95-6a62e2f0f1ec)
24
+ 1. [Ace, by DAISY](https://daisy.github.io/ace)
25
+ 1. [axe Selenium Python](https://github.com/mozilla-services/axe-selenium-python)
26
+ 1. [gulp-axe-webdriver](https://github.com/felixzapata/gulp-axe-webdriver)
27
+ 1. [Ghost-Axe](https://www.npmjs.com/package/ghost-axe)
28
+ 1. [ember-a11y-testing](https://www.npmjs.com/package/ember-a11y-testing)
29
+ 1. [Protractor accessibility plugin](https://github.com/angular/protractor-accessibility-plugin)
30
+ 1. [storybook-addon-a11y](https://github.com/storybooks/storybook/tree/master/addons/a11y)
31
+ 1. [Intern](https://github.com/theintern/intern-a11y)
32
+ 1. [Protractor-axe-report Plugin](https://github.com/E1Edatatracker/protractor-axe-report-plugin)
33
+ 1. [Cypress-axe](https://github.com/avanslaars/cypress-axe)
34
+ 1. [Jest-axe](https://github.com/nickcolley/jest-axe)
35
+ 1. [aXe audit runner for CrawlKit](https://github.com/crawlkit/runner-axe)
36
+ 1. [Selenium IDE aXe Extension](https://github.com/bkardell/selenium-ide-axe)
37
+ 1. [Axegrinder](https://github.com/claflamme/axegrinder)
38
+ 1. [Rocket Validator](https://rocketvalidator.com)
39
+ 1. [aXe Reports](https://github.com/louis-reed/axe-reports)
40
+ 1. [aXe WebdriverIO](https://github.com/snagi/axe-webdriverio)
41
+ 1. [aXe-TestCafe](https://github.com/helen-dikareva/axe-testcafe)
42
+ 1. [Web Audit University of Nebraska-Lincoln](https://webaudit.unl.edu/)
43
+ 1. [Vorlon.js Remote Debugger](https://github.com/MicrosoftDX/Vorlonjs)
44
+ 1. [Terra's Webdriver.io Accessibility Service](https://github.com/cerner/terra-toolkit/blob/master/docs/AxeService.md)
@@ -0,0 +1,79 @@
1
+ | Rule ID | Description | Impact | Tags | Enabled by default |
2
+ | :---------------------------------- | :------------------------------------------------------------------------------------------------------------------------- | :----------------- | :--------------------------------------------------------------------------- | :----------------- |
3
+ | accesskeys | Ensures every accesskey attribute value is unique | Serious | best-practice, cat.keyboard | true |
4
+ | area-alt | Ensures <area> elements of image maps have alternate text | Critical | cat.text-alternatives, wcag2a, wcag111, section508, section508.22.a | true |
5
+ | aria-allowed-attr | Ensures ARIA attributes are allowed for an element's role | Critical | cat.aria, wcag2a, wcag412 | true |
6
+ | aria-allowed-role | Ensures role attribute has an appropriate value for the element | Minor | cat.aria, best-practice | true |
7
+ | aria-dpub-role-fallback | Ensures unsupported DPUB roles are only used on elements with implicit fallback roles | Moderate | cat.aria, wcag2a, wcag131 | true |
8
+ | aria-hidden-body | Ensures aria-hidden='true' is not present on the document body. | Critical | cat.aria, wcag2a, wcag412 | true |
9
+ | aria-hidden-focus | Ensures aria-hidden elements do not contain focusable elements | Serious | cat.name-role-value, wcag2a, wcag412 | true |
10
+ | aria-required-attr | Ensures elements with ARIA roles have all required ARIA attributes | Critical | cat.aria, wcag2a, wcag412 | true |
11
+ | aria-required-children | Ensures elements with an ARIA role that require child roles contain them | Critical | cat.aria, wcag2a, wcag131 | true |
12
+ | aria-required-parent | Ensures elements with an ARIA role that require parent roles are contained by them | Critical | cat.aria, wcag2a, wcag131 | true |
13
+ | aria-roles | Ensures all elements with a role attribute use a valid value | Serious, Critical | cat.aria, wcag2a, wcag412 | true |
14
+ | aria-valid-attr-value | Ensures all ARIA attributes have valid values | Critical | cat.aria, wcag2a, wcag412 | true |
15
+ | aria-valid-attr | Ensures attributes that begin with aria- are valid ARIA attributes | Critical | cat.aria, wcag2a, wcag412 | true |
16
+ | audio-caption | Ensures <audio> elements have captions | Critical | cat.time-and-media, wcag2a, wcag121, section508, section508.22.a | false |
17
+ | autocomplete-valid | Ensure the autocomplete attribute is correct and suitable for the form field | Serious | cat.forms, wcag21aa, wcag135 | true |
18
+ | blink | Ensures <blink> elements are not used | Serious | cat.time-and-media, wcag2a, wcag222, section508, section508.22.j | true |
19
+ | button-name | Ensures buttons have discernible text | Serious, Critical | cat.name-role-value, wcag2a, wcag412, section508, section508.22.a | true |
20
+ | bypass | Ensures each page has at least one mechanism for a user to bypass navigation and jump straight to the content | Serious | cat.keyboard, wcag2a, wcag241, section508, section508.22.o | true |
21
+ | checkboxgroup | Ensures related <input type="checkbox"> elements have a group and that the group designation is consistent | Critical | cat.forms, best-practice | true |
22
+ | color-contrast | Ensures the contrast between foreground and background colors meets WCAG 2 AA contrast ratio thresholds | Serious | cat.color, wcag2aa, wcag143 | true |
23
+ | css-orientation-lock | Ensures content is not locked to any specific display orientation, and the content is operable in all display orientations | Serious | cat.structure, wcag134, wcag21aa, experimental | true |
24
+ | definition-list | Ensures <dl> elements are structured correctly | Serious | cat.structure, wcag2a, wcag131 | true |
25
+ | dlitem | Ensures <dt> and <dd> elements are contained by a <dl> | Serious | cat.structure, wcag2a, wcag131 | true |
26
+ | document-title | Ensures each HTML document contains a non-empty <title> element | Serious | cat.text-alternatives, wcag2a, wcag242 | true |
27
+ | duplicate-id-active | Ensures every id attribute value of active elements is unique | Serious | cat.parsing, wcag2a, wcag411 | true |
28
+ | duplicate-id-aria | Ensures every id attribute value used in ARIA and in labels is unique | Critical | cat.parsing, wcag2a, wcag411 | true |
29
+ | duplicate-id | Ensures every id attribute value is unique | Minor | cat.parsing, wcag2a, wcag411 | true |
30
+ | empty-heading | Ensures headings have discernible text | Minor | cat.name-role-value, best-practice | true |
31
+ | focus-order-semantics | Ensures elements in the focus order have an appropriate role | Minor | cat.keyboard, best-practice, experimental | true |
32
+ | form-field-multiple-labels | Ensures form field does not have multiple label elements | Moderate | cat.forms, wcag2a, wcag332 | true |
33
+ | frame-tested | Ensures <iframe> and <frame> elements contain the axe-core script | Critical | cat.structure, review-item, best-practice | true |
34
+ | frame-title-unique | Ensures <iframe> and <frame> elements contain a unique title attribute | Serious | cat.text-alternatives, best-practice | true |
35
+ | frame-title | Ensures <iframe> and <frame> elements contain a non-empty title attribute | Serious | cat.text-alternatives, wcag2a, wcag241, wcag412, section508, section508.22.i | true |
36
+ | heading-order | Ensures the order of headings is semantically correct | Moderate | cat.semantics, best-practice | true |
37
+ | hidden-content | Informs users about hidden content. | Minor | cat.structure, experimental, review-item, best-practice | true |
38
+ | html-has-lang | Ensures every HTML document has a lang attribute | Serious | cat.language, wcag2a, wcag311 | true |
39
+ | html-lang-valid | Ensures the lang attribute of the <html> element has a valid value | Serious | cat.language, wcag2a, wcag311 | true |
40
+ | html-xml-lang-mismatch | Ensure that HTML elements with both valid lang and xml:lang attributes agree on the base language of the page | Moderate | cat.language, wcag2a, wcag311 | true |
41
+ | image-alt | Ensures <img> elements have alternate text or a role of none or presentation | Critical | cat.text-alternatives, wcag2a, wcag111, section508, section508.22.a | true |
42
+ | image-redundant-alt | Ensure button and link text is not repeated as image alternative | Minor | cat.text-alternatives, best-practice | true |
43
+ | input-image-alt | Ensures <input type="image"> elements have alternate text | Critical | cat.text-alternatives, wcag2a, wcag111, section508, section508.22.a | true |
44
+ | label-content-name-mismatch | Ensures that elements labelled through their content must have their visible text as part of their accessible name | Serious | wcag21a, wcag253, experimental | true |
45
+ | label-title-only | Ensures that every form element is not solely labeled using the title or aria-describedby attributes | Serious | cat.forms, best-practice | true |
46
+ | label | Ensures every form element has a label | Minor, Critical | cat.forms, wcag2a, wcag332, wcag131, section508, section508.22.n | true |
47
+ | landmark-banner-is-top-level | Ensures the banner landmark is at top level | Moderate | cat.semantics, best-practice | true |
48
+ | landmark-complementary-is-top-level | Ensures the complementary landmark or aside is at top level | Moderate | cat.semantics, best-practice | true |
49
+ | landmark-contentinfo-is-top-level | Ensures the contentinfo landmark is at top level | Moderate | cat.semantics, best-practice | true |
50
+ | landmark-main-is-top-level | Ensures the main landmark is at top level | Moderate | cat.semantics, best-practice | true |
51
+ | landmark-no-duplicate-banner | Ensures the document has at most one banner landmark | Moderate | cat.semantics, best-practice | true |
52
+ | landmark-no-duplicate-contentinfo | Ensures the document has at most one contentinfo landmark | Moderate | cat.semantics, best-practice | true |
53
+ | landmark-one-main | Ensures the document has only one main landmark and each iframe in the page has at most one main landmark | Moderate | cat.semantics, best-practice | true |
54
+ | layout-table | Ensures presentational <table> elements do not use <th>, <caption> elements or the summary attribute | Serious | cat.semantics, wcag2a, wcag131 | true |
55
+ | link-in-text-block | Links can be distinguished without relying on color | Serious | cat.color, experimental, wcag2a, wcag141 | true |
56
+ | link-name | Ensures links have discernible text | Serious | cat.name-role-value, wcag2a, wcag412, wcag244, section508, section508.22.a | true |
57
+ | list | Ensures that lists are structured correctly | Serious | cat.structure, wcag2a, wcag131 | true |
58
+ | listitem | Ensures <li> elements are used semantically | Serious | cat.structure, wcag2a, wcag131 | true |
59
+ | marquee | Ensures <marquee> elements are not used | Serious | cat.parsing, wcag2a, wcag222 | true |
60
+ | meta-refresh | Ensures <meta http-equiv="refresh"> is not used | Critical | cat.time, wcag2a, wcag2aaa, wcag221, wcag224, wcag325 | true |
61
+ | meta-viewport-large | Ensures <meta name="viewport"> can scale a significant amount | Minor | cat.sensory-and-visual-cues, best-practice | true |
62
+ | meta-viewport | Ensures <meta name="viewport"> does not disable text scaling and zooming | Critical | cat.sensory-and-visual-cues, wcag2aa, wcag144 | true |
63
+ | object-alt | Ensures <object> elements have alternate text | Serious | cat.text-alternatives, wcag2a, wcag111, section508, section508.22.a | true |
64
+ | p-as-heading | Ensure p elements are not used to style headings | Serious | cat.semantics, wcag2a, wcag131, experimental | true |
65
+ | page-has-heading-one | Ensure that the page, or at least one of its frames contains a level-one heading | Moderate | cat.semantics, best-practice | true |
66
+ | radiogroup | Ensures related <input type="radio"> elements have a group and that the group designation is consistent | Critical | cat.forms, best-practice | true |
67
+ | region | Ensures all page content is contained by landmarks | Moderate | cat.keyboard, best-practice | true |
68
+ | scope-attr-valid | Ensures the scope attribute is used correctly on tables | Moderate, Critical | cat.tables, best-practice | true |
69
+ | server-side-image-map | Ensures that server-side image maps are not used | Minor | cat.text-alternatives, wcag2a, wcag211, section508, section508.22.f | true |
70
+ | skip-link | Ensure all skip links have a focusable target | Moderate | cat.keyboard, best-practice | true |
71
+ | tabindex | Ensures tabindex attribute values are not greater than 0 | Serious | cat.keyboard, best-practice | true |
72
+ | table-duplicate-name | Ensure that tables do not have the same summary and caption | Minor | cat.tables, best-practice | true |
73
+ | table-fake-caption | Ensure that tables with a caption use the <caption> element. | Serious | cat.tables, experimental, wcag2a, wcag131, section508, section508.22.g | true |
74
+ | td-has-header | Ensure that each non-empty data cell in a large table has one or more table headers | Critical | cat.tables, experimental, wcag2a, wcag131, section508, section508.22.g | true |
75
+ | td-headers-attr | Ensure that each cell in a table using the headers refers to another cell in that table | Serious | cat.tables, wcag2a, wcag131, section508, section508.22.g | true |
76
+ | th-has-data-cells | Ensure that each table header in a data table refers to data cells | Serious | cat.tables, wcag2a, wcag131, section508, section508.22.g | true |
77
+ | valid-lang | Ensures lang attributes have valid values | Serious | cat.language, wcag2aa, wcag312 | true |
78
+ | video-caption | Ensures <video> elements have captions | Critical | cat.text-alternatives, wcag2a, wcag122, section508, section508.22.a | true |
79
+ | video-description | Ensures <video> elements have audio descriptions | Critical | cat.text-alternatives, wcag2aa, wcag125, section508, section508.22.b | true |
@@ -0,0 +1,95 @@
1
+ # Developing Axe-core Rules
2
+
3
+ Before you start writing axe-core rules, be sure to create a proposal for them in a github issue. Read [Proposing Axe-core rules](./rule-proposal.md) for details.
4
+
5
+ A rule is a JSON Object that defines a test for aXe-core to run. At a high level, think of a rule as doing two things. First it finds all elements that it should test, and after that it runs a number of checks to see if those selected elements pass or fail the rule.
6
+
7
+ ## Rule Select and Matches
8
+
9
+ Each rule has a 'selector' and optionally a 'matches' property. The selector is a CSS selector. Each element matching this selector will be tested by the rule, unless the matches function says otherwise. The `matches` property is a reference to a function that returns a boolean, which indicates if the element should be tested.
10
+
11
+ The last thing that may influence if an element is selected for testing in the rule is it's visibility. By default, hidden elements are ignored by the rule, unless the `excludeHidden` is set to 'false'.
12
+
13
+ ## Using Checks in Rules
14
+
15
+ The actual testing of elements in axe-core is done by checks. A rule has one or more checks which end up generating a result. There are three properties with which to define a rule's checks. Each of them deals differently:
16
+
17
+ - **All**: Takes an array of check names, **all** of which has to return true for the rule to pass.
18
+ - **none**: Takes an array of check names, **none** of which can to return true for the rule to pass.
19
+ - **any**: Takes an array of check names, **at least one** of which has to return true for the rule to pass.
20
+
21
+ ## Rule Properties
22
+
23
+ | Prop. Name | Description |
24
+ | -------------------- | ------------------------------------------------------------------- |
25
+ | id | Unique identifier for the rule |
26
+ | selector | CSS Selector that matches elements to test |
27
+ | matches | Function to further filter the outcome of the selector |
28
+ | excludeHidden | Should hidden elements be excluded |
29
+ | all | Checks that must all return true |
30
+ | any | Checks of which at least one must return true |
31
+ | none | Checks that must all return false |
32
+ | pageLevel | Should the rule only run on the main window |
33
+ | enabled | Does the rule run by default |
34
+ | tags | Grouping for the rule, such as wcag2a, best-practice |
35
+ | metadata.description | Description of what a rule does |
36
+ | metadata.help | Short description of a violation, used in the aXe extension sidebar |
37
+
38
+ ## Check Properties
39
+
40
+ | Prop. Name | Description |
41
+ | ---------------------------- | ---------------------------------------------- |
42
+ | id | Unique identifier for the check |
43
+ | evaluate | Evaluating function, returning a boolean value |
44
+ | options | Configurable value for the check |
45
+ | after | Cleanup function, run after check is done |
46
+ | metadata impact | "minor", "serious", "critical" |
47
+ | metadata.messages.pass | Describes why the check passed |
48
+ | metadata.messages.fail | Describes why the check failed |
49
+ | metadata.messages.incomplete | Describes why the check didn’t complete |
50
+
51
+ Incomplete results occur when axe-core can’t produce a clear pass or fail result,
52
+ giving users the opportunity to review it manually. Incomplete messages can take
53
+ the form of a string, or an object with arbitrary keys matching the data returned
54
+ from the check.
55
+
56
+ A pass message is required, while fail and incomplete are dependent on the check result.
57
+
58
+ ### Incomplete message string
59
+
60
+ As one example, the audio and video caption checks return an incomplete string:
61
+
62
+ ```js
63
+ messages: {
64
+ pass: 'Why the check passed',
65
+ fail: 'Why the check failed',
66
+ incomplete: 'Why the check returned undefined'
67
+ }
68
+ ```
69
+
70
+ ### Incomplete message object with missingData
71
+
72
+ As another example, the color-contrast check returns missingData to aid in
73
+ remediation. Here’s the message format:
74
+
75
+ ```js
76
+ messages: {
77
+ pass: 'Why the check passed',
78
+ fail: 'Why the check failed',
79
+ incomplete: {
80
+ bgImage: 'The background color could not be determined due to a background image',
81
+ default: 'fallback string'
82
+ }
83
+ }
84
+ ```
85
+
86
+ To wire up an incomplete message with a specific reason it returned undefined,
87
+ the check needs matching data. Otherwise, it will fall back to the `default` message.
88
+ Reasons are arbitrary for the check (such as 'bgImage') but they must match the
89
+ data returned:
90
+
91
+ ```js
92
+ this.data({
93
+ missingData: 'bgImage'
94
+ });
95
+ ```
@@ -0,0 +1,106 @@
1
+ # Proposing Axe-core Rules
2
+
3
+ This document outlines the process of proposing a rule. For a technical description on how to build a rule, read [Developing Axe-core Rules](./rule-development.md)
4
+
5
+ Before you start coding a new rule for axe-core, you _must_ create a Github issue to document the rule you want to create. There are many considerations to writing a good rule. It must have no false positives, which is difficult, because there are always many many edge cases to consider. Additionally, a known problem of accessibility testing, is that not all testers hold the same interpretation of the accessibility guidelines. All rules _must_ be consistent with the interpretation of Deque Systems, the developer behind Axe-core.
6
+
7
+ In addition to giving the axe-core development team an opportunity to provide feedback on the proposed rule, the Github Issue will serve as documentation of that rule for the future.
8
+
9
+ ## WCAG interpretation
10
+
11
+ Please read our [principles for deciding on rules](./accessibility-supported.md).
12
+
13
+ ## Rules Format
14
+
15
+ All Github issues that propose a rule must be tagged as _rule_, and must use the following format:
16
+
17
+ ### Intro
18
+
19
+ In one sentence, describe what the rule does.
20
+
21
+ Example: "Ensures ARIA attributes are allowed for an element's role"\
22
+
23
+ #### Rule help
24
+
25
+ In one sentence, describe how to resolve the issue.
26
+
27
+ Example: "Elements must only use allowed ARIA attributes"
28
+
29
+ #### Tags
30
+
31
+ Indicate which tags the rule should use.
32
+
33
+ Example: wcag2a, wcag211, cat.keyboard
34
+
35
+ ### Selector
36
+
37
+ If possible using a CSS selector, otherwise describe in one sentence using plain language what elements the rule selects.
38
+
39
+ Example 1: `input[type=checkbox][name]`
40
+
41
+ Example 2: Select each node that has an attribute starting with `aria-`.
42
+
43
+ ### Checks:
44
+
45
+ Make each check a subheading of `checks`. Give the check name in the heading, and indicate if the check type is `any`, `all` or `none`.
46
+
47
+ In short sentences, using plain language, describe what conditions will lead to the check returning false, true or undefined. Keep the steps simple and short. You don't have to write out all the logic. Preferably not, just give the high level view of what the check does.
48
+
49
+ **Example 1:**
50
+
51
+ `###` aria/allow-attr (any)
52
+
53
+ 1. Look up the element role
54
+ 2. Look up a list of aria attributes allowed for that role
55
+ 3. Return false if the element has aria attributes not in the list
56
+ 4. Otherwise return true
57
+
58
+ **Example 2:**
59
+
60
+ `###` keyboard/focusable-no-name (none)
61
+
62
+ 1. If the element is not in the focus order, return false
63
+ 2. If the element has an accessible name, return false
64
+ 3. Otherwise return true
65
+
66
+ ## Best practices
67
+
68
+ For rule design, consider the following as best practices:
69
+
70
+ 1. Rules should only have one `none` check so that the error message is specific
71
+ 2. Rules should not combine `any` and `none`, these should be broken out into separate rules
72
+ 3. Checks should each only test a single specific case (either a passing technique or a single failing test)
73
+
74
+ ## Template
75
+
76
+ Use this template when creating the issue:
77
+
78
+ ```markdown
79
+ # {{ Rule name }}
80
+
81
+ {{ Rule description }}
82
+
83
+ {{ Rule help }}
84
+
85
+ **Tags:** {{ tag, tag, tag }}
86
+
87
+ ## Selector
88
+
89
+ {{ selector }}
90
+
91
+ ## Checks
92
+
93
+ ### {{ Check name 1 }} ( any / all / none )
94
+
95
+ 1.
96
+
97
+ ### {{ Check name 2, optional }} ( any / all / none )
98
+
99
+ 1.
100
+ ```
101
+
102
+ ## W3C Standardized Rules
103
+
104
+ Deque Systems is one of leading organizations in the development of standardized accessibility conformance testing rules. The above format is an adaptation of the [Accessibility Conformance Testing Rules Format](https://www.w3.org/TR/act-rules-format/).
105
+
106
+ For details on how the above format maps to the ACT Rules format, see [act-rules-format.md](./act-rules-format.md).
@@ -0,0 +1 @@
1
+ return axe.commons.aria.getRoleType(node.getAttribute('role')) === 'abstract';
@@ -0,0 +1,11 @@
1
+ {
2
+ "id": "abstractrole",
3
+ "evaluate": "abstractrole.js",
4
+ "metadata": {
5
+ "impact": "serious",
6
+ "messages": {
7
+ "pass": "Abstract roles are not used",
8
+ "fail": "Abstract roles cannot be directly used"
9
+ }
10
+ }
11
+ }
@@ -0,0 +1,39 @@
1
+ options = options || {};
2
+
3
+ var invalid = [];
4
+
5
+ var attr,
6
+ attrName,
7
+ allowed,
8
+ role = node.getAttribute('role'),
9
+ attrs = node.attributes;
10
+
11
+ if (!role) {
12
+ role = axe.commons.aria.implicitRole(node);
13
+ }
14
+
15
+ allowed = axe.commons.aria.allowedAttr(role);
16
+
17
+ if (Array.isArray(options[role])) {
18
+ allowed = axe.utils.uniqueArray(options[role].concat(allowed));
19
+ }
20
+
21
+ if (role && allowed) {
22
+ for (var i = 0, l = attrs.length; i < l; i++) {
23
+ attr = attrs[i];
24
+ attrName = attr.name;
25
+ if (
26
+ axe.commons.aria.validateAttr(attrName) &&
27
+ !allowed.includes(attrName)
28
+ ) {
29
+ invalid.push(attrName + '="' + attr.nodeValue + '"');
30
+ }
31
+ }
32
+ }
33
+
34
+ if (invalid.length) {
35
+ this.data(invalid);
36
+ return false;
37
+ }
38
+
39
+ return true;
@@ -0,0 +1,11 @@
1
+ {
2
+ "id": "aria-allowed-attr",
3
+ "evaluate": "allowed-attr.js",
4
+ "metadata": {
5
+ "impact": "critical",
6
+ "messages": {
7
+ "pass": "ARIA attributes are used correctly for the defined role",
8
+ "fail": "ARIA attribute{{=it.data && it.data.length > 1 ? 's are' : ' is'}} not allowed:{{~it.data:value}} {{=value}}{{~}}"
9
+ }
10
+ }
11
+ }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Implements allowed roles defined at:
3
+ * https://www.w3.org/TR/html-aria/#docconformance
4
+ * https://www.w3.org/TR/SVG2/struct.html#implicit-aria-semantics
5
+ */
6
+ const { dom } = axe.commons;
7
+ const { allowImplicit = true, ignoredTags = [] } = options || {};
8
+ const tagName = node.nodeName.toUpperCase();
9
+
10
+ // check if the element should be ignored, by an user setting
11
+ if (ignoredTags.map(t => t.toUpperCase()).includes(tagName)) {
12
+ return true;
13
+ }
14
+
15
+ const unallowedRoles = axe.commons.aria.getElementUnallowedRoles(
16
+ node,
17
+ allowImplicit
18
+ );
19
+
20
+ if (unallowedRoles.length) {
21
+ this.data(unallowedRoles);
22
+ if (!dom.isVisible(node, true)) {
23
+ // flag hidden elements for review
24
+ return undefined;
25
+ }
26
+ return false;
27
+ }
28
+ return true;
@@ -0,0 +1,16 @@
1
+ {
2
+ "id": "aria-allowed-role",
3
+ "evaluate": "aria-allowed-role.js",
4
+ "options": {
5
+ "allowImplicit": true,
6
+ "ignoredTags": []
7
+ },
8
+ "metadata": {
9
+ "impact": "minor",
10
+ "messages": {
11
+ "pass": "ARIA role is allowed for given element",
12
+ "fail": "ARIA role{{=it.data && it.data.length > 1 ? 's' : ''}} {{=it.data.join(', ')}} {{=it.data && it.data.length > 1 ? 'are' : ' is'}} not allowed for given element",
13
+ "incomplete": "ARIA role{{=it.data && it.data.length > 1 ? 's' : ''}} {{=it.data.join(', ')}} must be removed when the element is made visible, as {{=it.data && it.data.length > 1 ? 'they are' : 'it is'}} not allowed for the element"
14
+ }
15
+ }
16
+ }