govuk_publishing_components 18.1.0 → 18.1.1

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 (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,13 @@
1
+ {
2
+ "id": "marquee",
3
+ "selector": "marquee",
4
+ "excludeHidden": false,
5
+ "tags": ["cat.parsing", "wcag2a", "wcag222"],
6
+ "metadata": {
7
+ "description": "Ensures <marquee> elements are not used",
8
+ "help": "<marquee> elements are deprecated and must not be used"
9
+ },
10
+ "all": [],
11
+ "any": [],
12
+ "none": ["is-on-screen"]
13
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "id": "meta-refresh",
3
+ "selector": "meta[http-equiv=\"refresh\"]",
4
+ "excludeHidden": false,
5
+ "tags": ["cat.time", "wcag2a", "wcag2aaa", "wcag221", "wcag224", "wcag325"],
6
+ "metadata": {
7
+ "description": "Ensures <meta http-equiv=\"refresh\"> is not used",
8
+ "help": "Timed refresh must not exist"
9
+ },
10
+ "all": [],
11
+ "any": ["meta-refresh"],
12
+ "none": []
13
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "id": "meta-viewport-large",
3
+ "selector": "meta[name=\"viewport\"]",
4
+ "excludeHidden": false,
5
+ "tags": ["cat.sensory-and-visual-cues", "best-practice"],
6
+ "metadata": {
7
+ "description": "Ensures <meta name=\"viewport\"> can scale a significant amount",
8
+ "help": "Users should be able to zoom and scale the text up to 500%"
9
+ },
10
+ "all": [],
11
+ "any": ["meta-viewport-large"],
12
+ "none": []
13
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "id": "meta-viewport",
3
+ "selector": "meta[name=\"viewport\"]",
4
+ "excludeHidden": false,
5
+ "tags": ["cat.sensory-and-visual-cues", "wcag2aa", "wcag144"],
6
+ "metadata": {
7
+ "description": "Ensures <meta name=\"viewport\"> does not disable text scaling and zooming",
8
+ "help": "Zooming and scaling must not be disabled"
9
+ },
10
+ "all": [],
11
+ "any": ["meta-viewport"],
12
+ "none": []
13
+ }
@@ -0,0 +1 @@
1
+ return !node.getAttribute('role');
@@ -0,0 +1 @@
1
+ return node.nodeName.toLowerCase() !== 'html';
@@ -0,0 +1,25 @@
1
+ {
2
+ "id": "object-alt",
3
+ "selector": "object",
4
+ "tags": [
5
+ "cat.text-alternatives",
6
+ "wcag2a",
7
+ "wcag111",
8
+ "section508",
9
+ "section508.22.a"
10
+ ],
11
+ "metadata": {
12
+ "description": "Ensures <object> elements have alternate text",
13
+ "help": "<object> elements must have alternate text"
14
+ },
15
+ "all": [],
16
+ "any": [
17
+ "has-visible-text",
18
+ "aria-label",
19
+ "aria-labelledby",
20
+ "non-empty-title",
21
+ "role-presentation",
22
+ "role-none"
23
+ ],
24
+ "none": []
25
+ }
@@ -0,0 +1,17 @@
1
+ const children = Array.from(node.parentNode.childNodes);
2
+ const nodeText = node.textContent.trim();
3
+ const isSentence = /[.!?:;](?![.!?:;])/g;
4
+
5
+ // Check that there is text, and it is not more than a single sentence
6
+ if (nodeText.length === 0 || (nodeText.match(isSentence) || []).length >= 2) {
7
+ return false;
8
+ }
9
+
10
+ // Grab sibling p element following the current node
11
+ const siblingsAfter = children
12
+ .slice(children.indexOf(node) + 1)
13
+ .filter(
14
+ elm => elm.nodeName.toUpperCase() === 'P' && elm.textContent.trim() !== ''
15
+ );
16
+
17
+ return siblingsAfter.length !== 0;
@@ -0,0 +1,13 @@
1
+ {
2
+ "id": "p-as-heading",
3
+ "selector": "p",
4
+ "matches": "p-as-heading-matches.js",
5
+ "tags": ["cat.semantics", "wcag2a", "wcag131", "experimental"],
6
+ "metadata": {
7
+ "description": "Ensure p elements are not used to style headings",
8
+ "help": "Bold, italic text and font-size are not used to style p elements as a heading"
9
+ },
10
+ "all": ["p-as-heading"],
11
+ "any": [],
12
+ "none": []
13
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "id": "page-has-heading-one",
3
+ "selector": "html",
4
+ "tags": ["cat.semantics", "best-practice"],
5
+ "metadata": {
6
+ "description": "Ensure that the page, or at least one of its frames contains a level-one heading",
7
+ "help": "Page must contain a level-one heading"
8
+ },
9
+ "all": ["page-has-heading-one"],
10
+ "any": [],
11
+ "none": []
12
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "id": "radiogroup",
3
+ "selector": "input[type=radio][name]",
4
+ "tags": ["cat.forms", "best-practice"],
5
+ "metadata": {
6
+ "description": "Ensures related <input type=\"radio\"> elements have a group and that the group designation is consistent",
7
+ "help": "Radio inputs with the same name attribute value must be part of a group"
8
+ },
9
+ "all": [],
10
+ "any": ["group-labelledby", "fieldset"],
11
+ "none": []
12
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "id": "region",
3
+ "selector": "html",
4
+ "pageLevel": true,
5
+ "tags": ["cat.keyboard", "best-practice"],
6
+ "metadata": {
7
+ "description": "Ensures all page content is contained by landmarks",
8
+ "help": "All page content must be contained by landmarks"
9
+ },
10
+ "all": [],
11
+ "any": ["region"],
12
+ "none": []
13
+ }
@@ -0,0 +1 @@
1
+ return node.getAttribute('role') !== 'button';
@@ -0,0 +1,12 @@
1
+ {
2
+ "id": "scope-attr-valid",
3
+ "selector": "td[scope], th[scope]",
4
+ "tags": ["cat.tables", "best-practice"],
5
+ "metadata": {
6
+ "description": "Ensures the scope attribute is used correctly on tables",
7
+ "help": "scope attribute should be used correctly"
8
+ },
9
+ "all": ["html5-scope", "scope-value"],
10
+ "any": [],
11
+ "none": []
12
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "id": "server-side-image-map",
3
+ "selector": "img[ismap]",
4
+ "tags": [
5
+ "cat.text-alternatives",
6
+ "wcag2a",
7
+ "wcag211",
8
+ "section508",
9
+ "section508.22.f"
10
+ ],
11
+ "metadata": {
12
+ "description": "Ensures that server-side image maps are not used",
13
+ "help": "Server-side image maps must not be used"
14
+ },
15
+ "all": [],
16
+ "any": [],
17
+ "none": ["exists"]
18
+ }
@@ -0,0 +1 @@
1
+ return /^#[^/!]/.test(node.getAttribute('href'));
@@ -0,0 +1,13 @@
1
+ {
2
+ "id": "skip-link",
3
+ "selector": "a[href]",
4
+ "matches": "skip-link-matches.js",
5
+ "tags": ["cat.keyboard", "best-practice"],
6
+ "metadata": {
7
+ "description": "Ensure all skip links have a focusable target",
8
+ "help": "The skip-link target should exist and be focusable"
9
+ },
10
+ "all": [],
11
+ "any": ["skip-link"],
12
+ "none": []
13
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "id": "tabindex",
3
+ "selector": "[tabindex]",
4
+ "tags": ["cat.keyboard", "best-practice"],
5
+ "metadata": {
6
+ "description": "Ensures tabindex attribute values are not greater than 0",
7
+ "help": "Elements should not have tabindex greater than zero"
8
+ },
9
+ "all": [],
10
+ "any": ["tabindex"],
11
+ "none": []
12
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "id": "table-duplicate-name",
3
+ "selector": "table",
4
+ "tags": ["cat.tables", "best-practice"],
5
+ "metadata": {
6
+ "description": "Ensure that tables do not have the same summary and caption",
7
+ "help": "The <caption> element should not contain the same text as the summary attribute"
8
+ },
9
+ "all": [],
10
+ "any": [],
11
+ "none": ["same-caption-summary"]
12
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "id": "table-fake-caption",
3
+ "selector": "table",
4
+ "matches": "data-table-matches.js",
5
+ "tags": [
6
+ "cat.tables",
7
+ "experimental",
8
+ "wcag2a",
9
+ "wcag131",
10
+ "section508",
11
+ "section508.22.g"
12
+ ],
13
+ "metadata": {
14
+ "description": "Ensure that tables with a caption use the <caption> element.",
15
+ "help": "Data or header cells should not be used to give caption to a data table."
16
+ },
17
+ "all": ["caption-faked"],
18
+ "any": [],
19
+ "none": []
20
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "id": "td-has-header",
3
+ "selector": "table",
4
+ "matches": "data-table-large-matches.js",
5
+ "tags": [
6
+ "cat.tables",
7
+ "experimental",
8
+ "wcag2a",
9
+ "wcag131",
10
+ "section508",
11
+ "section508.22.g"
12
+ ],
13
+ "metadata": {
14
+ "description": "Ensure that each non-empty data cell in a large table has one or more table headers",
15
+ "help": "All non-empty td element in table larger than 3 by 3 must have an associated table header"
16
+ },
17
+ "all": ["td-has-header"],
18
+ "any": [],
19
+ "none": []
20
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "id": "td-headers-attr",
3
+ "selector": "table",
4
+ "tags": ["cat.tables", "wcag2a", "wcag131", "section508", "section508.22.g"],
5
+ "metadata": {
6
+ "description": "Ensure that each cell in a table using the headers refers to another cell in that table",
7
+ "help": "All cells in a table element that use the headers attribute must only refer to other cells of that same table"
8
+ },
9
+ "all": ["td-headers-attr"],
10
+ "any": [],
11
+ "none": []
12
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "id": "th-has-data-cells",
3
+ "selector": "table",
4
+ "matches": "data-table-matches.js",
5
+ "tags": ["cat.tables", "wcag2a", "wcag131", "section508", "section508.22.g"],
6
+ "metadata": {
7
+ "description": "Ensure that each table header in a data table refers to data cells",
8
+ "help": "All th elements and elements with role=columnheader/rowheader must have data cells they describe"
9
+ },
10
+ "all": ["th-has-data-cells"],
11
+ "any": [],
12
+ "none": []
13
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "id": "valid-lang",
3
+ "selector": "[lang], [xml\\:lang]",
4
+ "matches": "not-html-matches.js",
5
+ "tags": ["cat.language", "wcag2aa", "wcag312"],
6
+ "metadata": {
7
+ "description": "Ensures lang attributes have valid values",
8
+ "help": "lang attribute must have a valid value"
9
+ },
10
+ "all": [],
11
+ "any": [],
12
+ "none": ["valid-lang"]
13
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "id": "video-caption",
3
+ "selector": "video",
4
+ "excludeHidden": false,
5
+ "tags": [
6
+ "cat.text-alternatives",
7
+ "wcag2a",
8
+ "wcag122",
9
+ "section508",
10
+ "section508.22.a"
11
+ ],
12
+ "metadata": {
13
+ "description": "Ensures <video> elements have captions",
14
+ "help": "<video> elements must have captions"
15
+ },
16
+ "all": [],
17
+ "any": [],
18
+ "none": ["caption"]
19
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "id": "video-description",
3
+ "selector": "video",
4
+ "excludeHidden": false,
5
+ "tags": [
6
+ "cat.text-alternatives",
7
+ "wcag2aa",
8
+ "wcag125",
9
+ "section508",
10
+ "section508.22.b"
11
+ ],
12
+ "metadata": {
13
+ "description": "Ensures <video> elements have audio descriptions",
14
+ "help": "<video> elements must have an audio description track"
15
+ },
16
+ "all": [],
17
+ "any": [],
18
+ "none": ["description"]
19
+ }
@@ -0,0 +1,3 @@
1
+ return (
2
+ node.ownerDocument.defaultView.self === node.ownerDocument.defaultView.top
3
+ );
@@ -0,0 +1,12 @@
1
+ // using -> "selector": "html[lang][xml\\:lang]" to narrow down html with lang and xml:lang attributes
2
+
3
+ // get primary base language for each of the attributes
4
+ const { getBaseLang } = axe.utils;
5
+ const primaryLangValue = getBaseLang(node.getAttribute('lang'));
6
+ const primaryXmlLangValue = getBaseLang(node.getAttribute('xml:lang'));
7
+
8
+ // ensure that the value specified is valid lang for both `lang` and `xml:lang`
9
+ return (
10
+ axe.utils.validLangs().includes(primaryLangValue) &&
11
+ axe.utils.validLangs().includes(primaryXmlLangValue)
12
+ );
@@ -0,0 +1,627 @@
1
+ {
2
+ "lang": "de",
3
+ "rules": {
4
+ "accesskeys": {
5
+ "description": "",
6
+ "help": "Der Wert des accesskey-Attributes muss einzigartig sein."
7
+ },
8
+ "area-alt": {
9
+ "description": "",
10
+ "help": "Aktive <area>-Elemente müssen einen Alternativtext besitzen."
11
+ },
12
+ "aria-allowed-attr": {
13
+ "description": "",
14
+ "help": "Elemente dürfen nur erlaubte ARIA-Attribute verwenden."
15
+ },
16
+ "aria-dpub-role-fallback": {
17
+ "description": "",
18
+ "help": "Nicht unterstützte DPUB ARIA-Rollen sollten in Elementen mit impliziten Fallback-Rollen verwendet werden."
19
+ },
20
+ "aria-hidden-body": {
21
+ "description": "",
22
+ "help": "Aria-hidden='true' darf nicht für den <body> des Dokumentes verwendet werden."
23
+ },
24
+ "aria-required-attr": {
25
+ "description": "",
26
+ "help": "Erforderliche ARIA-Attribute müssen bereitgestellt werden."
27
+ },
28
+ "aria-required-children": {
29
+ "description": "",
30
+ "help": "Bestimmte ARIA-Rollen müssen spezifische, untergeordnete Kind-Rollen enthalten."
31
+ },
32
+ "aria-required-parent": {
33
+ "description": "",
34
+ "help": "Bestimmte ARIA-Rollen müssen in spezifischen, übergeordneten Eltern-Rollen enthalten sein."
35
+ },
36
+ "aria-roles": {
37
+ "description": "",
38
+ "help": "Verwendete ARIA-Rollen müssen gültigen Werten entsprechen."
39
+ },
40
+ "aria-valid-attr-value": {
41
+ "description": "",
42
+ "help": "Verwendete ARIA-Attribute müssen gültigen Werten entsprechen."
43
+ },
44
+ "aria-valid-attr": {
45
+ "description": "",
46
+ "help": "Verwendete ARIA-Attribute müssen gültigen Namen entsprechen."
47
+ },
48
+ "audio-caption": {
49
+ "description": "",
50
+ "help": "<audio>-Elemente müssen eine Untertitelung (captions track) besitzen."
51
+ },
52
+ "blink": {
53
+ "description": "",
54
+ "help": "<blink>-Elemente sind veraltet und dürfen nicht verwendet werden."
55
+ },
56
+ "button-name": {
57
+ "description": "",
58
+ "help": "Schaltflächen müssen wahrnehmbaren Text enthalten."
59
+ },
60
+ "bypass": {
61
+ "description": "",
62
+ "help": "Die Seite muss Wege bereitstellen, um mehrfache Blöcke zu übergehen."
63
+ },
64
+ "checkboxgroup": {
65
+ "description": "",
66
+ "help": "Checkbox-Eingaben mit demselben name-Attributwert müssen Teil einer Gruppe sein."
67
+ },
68
+ "color-contrast": {
69
+ "description": "",
70
+ "help": "Elemente müssen einen ausreichenden Farbkontrast haben."
71
+ },
72
+ "definition-list": {
73
+ "description": "",
74
+ "help": "<dl>-Elemente dürfen unmittelbar nur korrekt verschachtelte <dt>- und <dd>-Gruppen, <script>- oder <template>-Elemente enthalten."
75
+ },
76
+ "dlitem": {
77
+ "description": "",
78
+ "help": "<dt>- und <dd>-Elemente müssen in einem <dl>-Element enthalten sein."
79
+ },
80
+ "document-title": {
81
+ "description": "Stellt sicher, dass jedes HTML-Dokument einen nicht leeres <title>-Element besitzt.",
82
+ "help": "Dokumente müssen ein <title>-Element besitzen, um die Navigation zu erleichtern."
83
+ },
84
+ "duplicate-id": {
85
+ "description": "",
86
+ "help": "Der Wert des id-Attributes muss einzigartig sein."
87
+ },
88
+ "empty-heading": {
89
+ "description": "",
90
+ "help": "Überschriften dürfen nicht leer sein."
91
+ },
92
+ "focus-order-semantics": {
93
+ "description": "",
94
+ "help": "Elemente in der Fokusreihenfolge benötigen eine Rolle, die für interaktive Elemente geeignet ist."
95
+ },
96
+ "frame-tested": {
97
+ "description": "",
98
+ "help": "Frames müssen mit axe-core getestet werden."
99
+ },
100
+ "frame-title-unique": {
101
+ "description": "",
102
+ "help": "Frames müssen ein einzigartiges title-Attribut besitzen."
103
+ },
104
+ "frame-title": {
105
+ "description": "",
106
+ "help": "Frames müssen ein title-Attribut besitzen."
107
+ },
108
+ "heading-order": {
109
+ "description": "",
110
+ "help": "Überschriftsebenen sollten nur um eins steigen."
111
+ },
112
+ "hidden-content": {
113
+ "description": "",
114
+ "help": "Versteckter Inhalt auf der Seite konnte nicht analysiert werden."
115
+ },
116
+ "html-has-lang": {
117
+ "description": "",
118
+ "help": "Das <html>-Element muss ein lang-Attribut besitzen."
119
+ },
120
+ "html-lang-valid": {
121
+ "description": "",
122
+ "help": "Das <html>-Element muss einen gültigen Attributwert für das lang-Attribut besitzen."
123
+ },
124
+ "image-alt": {
125
+ "description": "",
126
+ "help": "Abbildungen müssen einen Alternativtext besitzen."
127
+ },
128
+ "image-redundant-alt": {
129
+ "description": "",
130
+ "help": "Der Text von Schaltflächen oder Links sollte in der Abbildungsalternative nicht wiederholt werden."
131
+ },
132
+ "input-image-alt": {
133
+ "description": "",
134
+ "help": "Bild-Schaltflächen müssen einen Alternativtext besitzen."
135
+ },
136
+ "label-title-only": {
137
+ "description": "",
138
+ "help": "Formularelemente sollten eine sichtbare Beschriftung haben."
139
+ },
140
+ "label": {
141
+ "description": "",
142
+ "help": "Formularelemente müssen eine Beschriftung haben."
143
+ },
144
+ "landmark-banner-is-top-level": {
145
+ "description": "",
146
+ "help": "Banner landmark muss sich auf der obersten Ebene befinden."
147
+ },
148
+ "landmark-contentinfo-is-top-level": {
149
+ "description": "",
150
+ "help": "Contentinfo landmark muss sich auf der obersten Ebene befinden."
151
+ },
152
+ "landmark-main-is-top-level": {
153
+ "description": "",
154
+ "help": "Main landmark ist nicht auf der obersten Ebene."
155
+ },
156
+ "landmark-no-duplicate-banner": {
157
+ "description": "",
158
+ "help": "Das Dokument sollte höchstens eine banner landmark enthalten."
159
+ },
160
+ "landmark-no-duplicate-contentinfo": {
161
+ "description": "",
162
+ "help": "Das Dokument sollte höchstens eine contentinfo landmark enthalten."
163
+ },
164
+ "landmark-one-main": {
165
+ "description": "",
166
+ "help": "Seite muss eine main landmark enthalten."
167
+ },
168
+ "layout-table": {
169
+ "description": "",
170
+ "help": "Layouttabellen dürfen keine Datentabellenelemente verwenden."
171
+ },
172
+ "link-in-text-block": {
173
+ "description": "",
174
+ "help": "Links müssen vom umgebenden Text auf eine Weise unterschieden werden können, die nicht allein auf Farbe beruht."
175
+ },
176
+ "link-name": {
177
+ "description": "",
178
+ "help": "Links müssen wahrnehmbaren Text enthalten."
179
+ },
180
+ "list": {
181
+ "description": "",
182
+ "help": "<ul>- und <ol>-Elemente dürfen unmittelbar nur <li>-, <script>- oder <template>-Elemente enthalten."
183
+ },
184
+ "listitem": {
185
+ "description": "",
186
+ "help": "<li>-Elemente müssen in einem <ul>- oder <ol>-Element enthalten sein."
187
+ },
188
+ "marquee": {
189
+ "description": "",
190
+ "help": "<marquee>-Elemente sind veraltet und dürfen nicht verwendet werden."
191
+ },
192
+ "meta-refresh": {
193
+ "description": "",
194
+ "help": "Eine zeitgesteuerte Aktualisierung (refresh) sollte nicht verwendet werden."
195
+ },
196
+ "meta-viewport-large": {
197
+ "description": "",
198
+ "help": "Benutzer sollten in der Lage sein, den Text um bis zu 500% vergrößern und skalieren zu können."
199
+ },
200
+ "meta-viewport": {
201
+ "description": "",
202
+ "help": "Zoomen und Skalieren darf nicht deaktiviert werden."
203
+ },
204
+ "object-alt": {
205
+ "description": "",
206
+ "help": "<object>-Elemente müssen einen Alternativtext besitzen."
207
+ },
208
+ "p-as-heading": {
209
+ "description": "",
210
+ "help": "Die Schriftschnitte bold und italic sowie die Schriftgröße dürfen nicht verwendet werden, um <p>-Elemente wie Überschriften zu formatieren."
211
+ },
212
+ "page-has-heading-one": {
213
+ "description": "",
214
+ "help": "Die Seite muss eine Überschrift erster Ebene enthalten."
215
+ },
216
+ "radiogroup": {
217
+ "description": "",
218
+ "help": "Radio-Eingaben mit demselben name-Attributwert müssen Teil einer Gruppe sein."
219
+ },
220
+ "region": {
221
+ "description": "",
222
+ "help": "Inhalte sollten in einer landmark region enthalten sein."
223
+ },
224
+ "scope-attr-valid": {
225
+ "description": "",
226
+ "help": "Das scope-Attribut sollte korrekt verwendet werden."
227
+ },
228
+ "server-side-image-map": {
229
+ "description": "",
230
+ "help": "Serverseitige Imagemaps dürfen nicht verwendet werden."
231
+ },
232
+ "skip-link": {
233
+ "description": "",
234
+ "help": "Das Ziel eines Sprunglinks sollte existieren und fokussierbar sein."
235
+ },
236
+ "tabindex": {
237
+ "description": "",
238
+ "help": "Elemenete sollten keinen tabindex besitzen, der größer als null ist."
239
+ },
240
+ "table-duplicate-name": {
241
+ "description": "",
242
+ "help": "Das <caption>-Element sollte nicht den gleichen Text wie das summary-Attribut enthalten."
243
+ },
244
+ "table-fake-caption": {
245
+ "description": "",
246
+ "help": "Daten- oder Kopfzellen sollten nicht verwendet werden, um einer Datentabelle eine Überschrift zu geben."
247
+ },
248
+ "td-has-header": {
249
+ "description": "",
250
+ "help": "In Tabellen, die größer als 3 mal 3 sind, müssen alle nicht leeren <td>-Elemente einen zugehörigen Tabellenkopf haben."
251
+ },
252
+ "td-headers-attr": {
253
+ "description": "",
254
+ "help": "Innerhalb eines <table>-Elementes dürfen sich Zellen, die das header-Attribut verwenden, nur auf andere Zellen derselben Tabelle beziehen."
255
+ },
256
+ "th-has-data-cells": {
257
+ "description": "",
258
+ "help": "Alle <th>-Elemente sowie Elemente mit role=columnheader/rowheader müssen Datenzellen haben, die sie beschreiben."
259
+ },
260
+ "valid-lang": {
261
+ "description": "",
262
+ "help": "Das lang-Attribut muss einen gültigen Wert haben."
263
+ },
264
+ "video-caption": {
265
+ "description": "",
266
+ "help": "<video>-Elemente müssen Untertitel besitzen."
267
+ },
268
+ "video-description": {
269
+ "description": "",
270
+ "help": "<video>-Elemente müssen eine Audiodeskription besitzen."
271
+ }
272
+ },
273
+ "checks": {
274
+ "abstractrole": {
275
+ "pass": "",
276
+ "fail": "Abstrakte ARIA-Rollen dürfen nicht direkt verwendet werden."
277
+ },
278
+ "aria-allowed-attr": {
279
+ "pass": "",
280
+ "fail": "Die folgenden ARIA-Attribute sind (für die ARIA-Rolle des Elementes) nicht erlaubt:{{~it.data:value}} {{=value}}{{~}}."
281
+ },
282
+ "aria-hidden-body": {
283
+ "pass": "",
284
+ "fail": "Das <body>-Element des Dokumentes darf nicht das Attribut aria-hidden=\"true\" besitzen."
285
+ },
286
+ "aria-errormessage": {
287
+ "pass": "",
288
+ "fail": "Der Wert der aria-errormessage {{~it.data:value}} `{{=value}}{{~}}` muss eine Technik verwenden, um die Message anzukündigen (z. B., aria-live, aria-describedby, role=alert, etc.)."
289
+ },
290
+ "has-widget-role": {
291
+ "pass": "",
292
+ "fail": "Das Element besitzt keine widget-Rolle."
293
+ },
294
+ "implicit-role-fallback": {
295
+ "pass": "",
296
+ "fail": "Die implizite ARIA-Rolle des Elementes ist keine gute Alternative für die (nicht unterstützte) Rolle."
297
+ },
298
+ "invalidrole": {
299
+ "pass": "",
300
+ "fail": "Die Rolle des Elementes ist keine valide ARIA-Rolle."
301
+ },
302
+ "aria-required-attr": {
303
+ "pass": "",
304
+ "fail": "Die folgenden erforderlichen ARIA-Attribute sind nicht vorhanden:{{~it.data:value}} {{=value}}{{~}}."
305
+ },
306
+ "aria-required-children": {
307
+ "pass": "",
308
+ "fail": "Die folgenden erforderlichen untergeordneten ARIA-Rollen (ARIA-Kind-Rollen) sind nicht vorhanden:{{~it.data:value}} {{=value}}{{~}}."
309
+ },
310
+ "aria-required-parent": {
311
+ "pass": "",
312
+ "fail": "Die folgenden erforderlichen übergeordneten ARIA-Rollen (ARIA-Eltern-Rollen) sind nicht vorhanden:{{~it.data:value}} {{=value}}{{~}}."
313
+ },
314
+ "aria-valid-attr-value": {
315
+ "pass": "",
316
+ "fail": "Folgende ARIA-Attributwerte sind nicht valide:{{~it.data:value}} {{=value}}{{~}}."
317
+ },
318
+ "aria-valid-attr": {
319
+ "pass": "",
320
+ "fail": "Folgende ARIA-Attributnamen sind nicht valide:{{~it.data:value}} {{=value}}{{~}}"
321
+ },
322
+ "valid-scrollable-semantics": {
323
+ "pass": "",
324
+ "fail": "Das Element hat eine ungültige Semantik für ein Element in der Fokusreihenfolge."
325
+ },
326
+ "color-contrast": {
327
+ "pass": "",
328
+ "fail": "Das Element hat einen unzureichenden Kontrast von {{=it.data.contrastRatio}} (Vordergrundfarbe: {{=it.data.fgColor}}, Hintergrundfarbe: {{=it.data.bgColor}}, Schriftgröße: {{=it.data.fontSize}}, Schriftstärke: {{=it.data.fontWeight}}).",
329
+ "incomplete": {
330
+ "bgImage": "Die Hintergrundfarbe des Elementes konnte aufgrund eines Hintergrundbildes nicht bestimmt werden.",
331
+ "bgGradient": "Die Hintergrundfarbe des Elementes konnte aufgrund eines Hintergrundfarbverlaufes nicht bestimmt werden.",
332
+ "imgNode": "Die Hintergrundfarbe des Elementes konnte nicht bestimmt werden, da das Element einen Image Node enthält.",
333
+ "bgOverlap": "Die Hintergrundfarbe des Elementes konnte nicht bestimmt werden, da es von einem anderen Element überlagert wird.",
334
+ "fgAlpha": "Die Vordergrundfarbe des Elementes konnte aufgrund der Alpha-Transparenz nicht ermittelt werden.",
335
+ "elmPartiallyObscured": "",
336
+ "equalRatio": "",
337
+ "default": "Das Kontrastverhältnis konnte nicht ermittelt werden."
338
+ }
339
+ },
340
+ "link-in-text-block": {
341
+ "pass": "",
342
+ "fail": "Links können (abgesehen von einer farblichen Kennzeichnung) nicht vom umgebenden Text unterschieden werden.",
343
+ "incomplete": {
344
+ "bgContrast": "Das Kontrastverhältnis des Elements konnte nicht bestimmt werden. Suchen Sie nach einem bestimmten Hover/Fokus-Stil.",
345
+ "bgImage": "Das Kontrastverhältnis des Elements konnte aufgrund eines Hintergrundbildes nicht bestimmt werden.",
346
+ "bgGradient": "Das Kontrastverhältnis des Elements konnte aufgrund eines Hintergrundfarbverlaufes nicht bestimmt werden.",
347
+ "imgNode": "Das Kontrastverhältnis des Elements konnte nicht bestimmt werden, da das Element einen Image Node enthält.",
348
+ "bgOverlap": "Das Kontrastverhältnis des Elements konnte aufgrund einer Überlagerung nicht bestimmt werden.",
349
+ "default": "Das Kontrastverhältnis konnte nicht ermittelt werden."
350
+ }
351
+ },
352
+ "fieldset": {
353
+ "pass": "",
354
+ "fail": "{{var code = it.data && it.data.failureCode;}}{{? code === 'no-legend'}}Das Fieldset besitzt kein <legend>-Element als erstes Kindelement{{?? code === 'empty-legend'}}Das <legend>-Element enthält keinen Text, der für Screenreader sichtbar ist{{?? code === 'mixed-inputs'}}Das Fieldset besitzt unerlaubte Inputs{{?? code === 'no-group-label'}}Die ARIA-Gruppe besitzt kein aria-label- oder aria-labelledby-Attribut{{?? code === 'group-mixed-inputs'}}Die ARIA-Gruppe besitzt unerlaubte Inputs{{??}}Das Element besitzt kein(e) fieldset oder ARIA-Gruppe {{?}}"
355
+ },
356
+ "group-labelledby": {
357
+ "pass": "",
358
+ "fail": "Die Elemente mit dem name-Attribut \"{{=it.data.name}}\" referenzieren mit aria-labelledby nicht alle dasselbe Element."
359
+ },
360
+ "accesskeys": {
361
+ "pass": "",
362
+ "fail": "Das Dokument enthält mehrere Elemente mit demselben accesskey-Attribut."
363
+ },
364
+ "focusable-no-name": {
365
+ "pass": "",
366
+ "fail": "Das Element befindet sich in der Tabreihenfolge und enthält keinen erreichbaren Text."
367
+ },
368
+ "landmark-is-top-level": {
369
+ "pass": "",
370
+ "fail": "Die {{=it.data.role }} landmark befindet sich innerhalb einer anderen landmark."
371
+ },
372
+ "page-has-heading-one": {
373
+ "pass": "",
374
+ "fail": "Die Seite muss eine Überschrift erster Ebene besitzen."
375
+ },
376
+ "page-has-main": {
377
+ "pass": "",
378
+ "fail": "Die Seite muss eine main landmark besitzen."
379
+ },
380
+ "page-no-duplicate-banner": {
381
+ "pass": "",
382
+ "fail": "Das Dokument besitzt mehr als eine banner landmark."
383
+ },
384
+ "page-no-duplicate-contentinfo": {
385
+ "pass": "",
386
+ "fail": "Das Dokument besitzt mehr als eine contentinfo landmark."
387
+ },
388
+ "page-no-duplicate-main": {
389
+ "pass": "",
390
+ "fail": "Das Dokument besitzt mehr als eine main landmark."
391
+ },
392
+ "tabindex": {
393
+ "pass": "",
394
+ "fail": "Das Element besitzt einen tabindex-Attributwert größer als 0."
395
+ },
396
+ "duplicate-img-label": {
397
+ "pass": "",
398
+ "fail": "Das Element besitzt ein <img>-Element mit Alternativtext, der vorhandenen Text wiederholt."
399
+ },
400
+ "explicit-label": {
401
+ "pass": "",
402
+ "fail": "Das <form>-Element besitzt kein explizites <label>."
403
+ },
404
+ "help-same-as-label": {
405
+ "pass": "",
406
+ "fail": "Der Hilfstext (angegeben durch ein title- oder aria-describedby-Attribut) wiederholt den Label-Text."
407
+ },
408
+ "implicit-label": {
409
+ "pass": "",
410
+ "fail": "Das <form>-Element besitzt kein implizites <label>."
411
+ },
412
+ "multiple-label": {
413
+ "pass": "",
414
+ "fail": "Das <form>-Element besitzt mehrere <label>-Elemente."
415
+ },
416
+ "title-only": {
417
+ "pass": "",
418
+ "fail": "Das <form>-Element ist lediglich durch ein title-Attribut beschriftet."
419
+ },
420
+ "has-lang": {
421
+ "pass": "",
422
+ "fail": "Das <html>-Element besitzt kein lang-Attribut."
423
+ },
424
+ "valid-lang": {
425
+ "pass": "",
426
+ "fail": "Der Wert des lang-Attributes ist nicht valide."
427
+ },
428
+ "dlitem": {
429
+ "pass": "",
430
+ "fail": "Der Definitionslisteneintrag besitzt kein <dl>-Elternelement."
431
+ },
432
+ "listitem": {
433
+ "pass": "",
434
+ "fail": "Der Listeneintrag besitzt kein <ul>-, <ol>- oder role=\"list\" Elternelement."
435
+ },
436
+ "only-dlitems": {
437
+ "pass": "",
438
+ "fail": "Das <dl>-Element enthält unerlaubte Kindelemente."
439
+ },
440
+ "only-listitems": {
441
+ "pass": "",
442
+ "fail": "Das Listen-Element enthält unerlaubte Kindelemente."
443
+ },
444
+ "structured-dlitems": {
445
+ "pass": "",
446
+ "fail": "Das Definitionslisten-Element enthält nicht mindestens ein <dt>-Element, gefolgt von mindestens einem <dd>-Element (wenn es nicht leer ist)."
447
+ },
448
+ "caption": {
449
+ "pass": "",
450
+ "fail": "Das Multimedia-Element enthält keine Untertitelung (captions track) zur Beschreibung der Audio-Inhalte.",
451
+ "incomplete": "Für das Element konnte keine Untertitelung (captions track) gefunden werden."
452
+ },
453
+ "description": {
454
+ "pass": "",
455
+ "fail": "Das Multimedia-Element enthält keine Deskriptionsspur zur Beschreibung der visuellen Inhalte.",
456
+ "incomplete": "Für das Element konnte keine Audio-Deskriptionsspur gefunden werden."
457
+ },
458
+ "frame-tested": {
459
+ "pass": "",
460
+ "fail": "Das iFrame konnte nicht mit axe-core getestet werden.",
461
+ "incomplete": "Das iFrame muss noch mit axe-core getestet werden."
462
+ },
463
+ "meta-viewport-large": {
464
+ "pass": "",
465
+ "fail": "Die viewport-Einstellungen im <meta>-Tag schränken das Zoomen auf mobilen Geräten ein."
466
+ },
467
+ "meta-viewport": {
468
+ "pass": "",
469
+ "fail": "Die viewport-Einstellungen im <meta>-Tag blockieren das Zoomen auf mobilen Geräten."
470
+ },
471
+ "header-present": {
472
+ "pass": "",
473
+ "fail": "Die Seite besitzt keinen header."
474
+ },
475
+ "heading-order": {
476
+ "pass": "",
477
+ "fail": "Die Überschriftenstruktur ist nicht valide."
478
+ },
479
+ "internal-link-present": {
480
+ "pass": "",
481
+ "fail": "Kein gültiger Skip-Link gefunden."
482
+ },
483
+ "landmark": {
484
+ "pass": "",
485
+ "fail": "Die Seite besitzt keine landmark region."
486
+ },
487
+ "meta-refresh": {
488
+ "pass": "",
489
+ "fail": "Das <meta>-Tag erzwingt eine zeitgesteuerte Aktualisierung der Seite."
490
+ },
491
+ "p-as-heading": {
492
+ "pass": "",
493
+ "fail": "Anstelle eines Überschriftenelementes wird lediglich ein durch Formatierungen hervorgehobenes <p>-Element verwendet."
494
+ },
495
+ "region": {
496
+ "pass": "",
497
+ "fail": "Der Inhalt befindet sich nicht in einer ARIA landmark."
498
+ },
499
+ "skip-link": {
500
+ "pass": "",
501
+ "fail": "Es existiert kein Ziel für den Sprunglink."
502
+ },
503
+ "unique-frame-title": {
504
+ "pass": "",
505
+ "fail": "Das title-Attribut des Elementes ist nicht einmalig."
506
+ },
507
+ "aria-label": {
508
+ "pass": "",
509
+ "fail": "Es existiert kein aria-label-Attribut oder das Attribut ist leer."
510
+ },
511
+ "aria-labelledby": {
512
+ "pass": "",
513
+ "fail": "Das aria-labelledby-Attribut existiert nicht oder referenziert ein Element, das nicht existiert, nicht sichtbar oder leer ist."
514
+ },
515
+ "button-has-visible-text": {
516
+ "pass": "",
517
+ "fail": "Das Element besitzt keinen Text, der für Screenreader sichtbar ist."
518
+ },
519
+ "doc-has-title": {
520
+ "pass": "Test",
521
+ "fail": "Das Dokument besitzt kein <title>-Element oder das <title>-Element ist leer."
522
+ },
523
+ "duplicate-id": {
524
+ "pass": "",
525
+ "fail": "Das Dokument besitzt mehrere Elemente mit demselben id-Attributwert: {{=it.data}}."
526
+ },
527
+ "exists": {
528
+ "pass": "",
529
+ "fail": "Das Element existiert."
530
+ },
531
+ "has-alt": {
532
+ "pass": "",
533
+ "fail": "Das Element besitzt kein alt-Attribut."
534
+ },
535
+ "has-visible-text": {
536
+ "pass": "",
537
+ "fail": "Das Element besitzt keinen Text, der für Screenreader sichtbar ist."
538
+ },
539
+ "is-on-screen": {
540
+ "pass": "",
541
+ "fail": "Das Element ist sichtbar."
542
+ },
543
+ "non-empty-alt": {
544
+ "pass": "",
545
+ "fail": "Das Element besitzt kein alt-Attribut oder das alt-Attribut ist leer."
546
+ },
547
+ "non-empty-if-present": {
548
+ "pass": "",
549
+ "fail": "Das Element besitzt ein value-Attribut und das value-Attribut ist leer."
550
+ },
551
+ "non-empty-title": {
552
+ "pass": "",
553
+ "fail": "Das Element besitzt kein title-Attribut oder das title-Attribut ist leer."
554
+ },
555
+ "non-empty-value": {
556
+ "pass": "",
557
+ "fail": "Das Element besitzt kein value-Attribut oder das value-Attribut ist leer."
558
+ },
559
+ "role-none": {
560
+ "pass": "",
561
+ "fail": "Die Standard-Semantik des Elementes ist nicht mit role=\"none\" überschrieben."
562
+ },
563
+ "role-presentation": {
564
+ "pass": "",
565
+ "fail": "Die Standard-Semantik des Elementes ist nicht mit role=\"presentation\" überschrieben."
566
+ },
567
+ "caption-faked": {
568
+ "pass": "",
569
+ "fail": "Die erste Zeile der Tabelle sollte eine Tabellenüberschrift anstelle einer Tabellenzelle sein."
570
+ },
571
+ "has-caption": {
572
+ "pass": "",
573
+ "fail": "Die Layout-Tabelle besitzt ein <caption>-Element."
574
+ },
575
+ "has-summary": {
576
+ "pass": "",
577
+ "fail": "Die Layout-Tabelle besitzt ein summary-Attribut."
578
+ },
579
+ "has-th": {
580
+ "pass": "",
581
+ "fail": "Die Layout-Tabelle besitzt ein oder mehrere <th>-Elemente."
582
+ },
583
+ "html5-scope": {
584
+ "pass": "",
585
+ "fail": "In HTML5 dürfen scope-Attribute lediglich für Tabellenkopfzellen <th> verwendet werden."
586
+ },
587
+ "same-caption-summary": {
588
+ "pass": "",
589
+ "fail": "Die Inhalte des summary-Attributes und des <caption>-Elementes sind identisch."
590
+ },
591
+ "scope-value": {
592
+ "pass": "",
593
+ "fail": "Das <td>-Element besitzt ein scope-Attribut. In HTML5 dürfen scope-Attribute jedoch lediglich für Tabellenkopfzellen <th> verwendet werden."
594
+ },
595
+ "td-has-header": {
596
+ "pass": "",
597
+ "fail": "Nicht alle (nicht-leeren) Datenzellen haben eine Tabellenkopfzelle."
598
+ },
599
+ "td-headers-attr": {
600
+ "pass": "",
601
+ "fail": "Das headers-Attribut wird nicht ausschließlich dafür verwendet, um auf andere Zellen in der Tabelle zu verweisen."
602
+ },
603
+ "th-has-data-cells": {
604
+ "pass": "",
605
+ "fail": "Nicht alle Tabellenkopfzellen beziehen sich auf Datenzellen. ",
606
+ "incomplete": "Datenzellen der Tabelle fehlen oder sind leer."
607
+ },
608
+ "hidden-content": {
609
+ "pass": "",
610
+ "fail": "Beim Analysieren der Inhalte auf dieser Seite sind Probleme aufgetreten.",
611
+ "incomplete": "Auf der Seite befinden sich versteckte Inhalte, die nicht analysiert werden konnten. Um den Inhalt analysieren zu können, müssen Sie die Anzeige auslösen."
612
+ }
613
+ },
614
+ "failureSummaries": {
615
+ "any": {
616
+ "failureMessage": "Korrigiere mindestens einen der folgenden Punkte:{{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
617
+ },
618
+ "none": {
619
+ "failureMessage": "Korrigiere alle der folgenden Punkte:{{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
620
+ }
621
+ },
622
+ "incompleteFallbackMessage": {
623
+ "undefined": {
624
+ "failureMessage": ""
625
+ }
626
+ }
627
+ }