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.
- checksums.yaml +4 -4
- data/lib/govuk_publishing_components/version.rb +1 -1
- data/node_modules/axe-core/CHANGELOG.md +741 -0
- data/node_modules/axe-core/CONTRIBUTING.md +187 -0
- data/node_modules/axe-core/LICENSE +362 -0
- data/node_modules/axe-core/README.md +147 -0
- data/node_modules/axe-core/axe.d.ts +216 -0
- data/node_modules/axe-core/axe.js +15298 -0
- data/node_modules/axe-core/axe.min.js +12 -0
- data/node_modules/axe-core/bower.json +40 -0
- data/node_modules/axe-core/doc/API.md +798 -0
- data/node_modules/axe-core/doc/accessibility-supported.md +33 -0
- data/node_modules/axe-core/doc/act-rules-format.md +37 -0
- data/node_modules/axe-core/doc/aria-supported.md +23 -0
- data/node_modules/axe-core/doc/axelogo2018.png +0 -0
- data/node_modules/axe-core/doc/code-submission-guidelines.md +178 -0
- data/node_modules/axe-core/doc/developer-guide.md +500 -0
- data/node_modules/axe-core/doc/examples/chrome-debugging-protocol/README.md +13 -0
- data/node_modules/axe-core/doc/examples/chrome-debugging-protocol/axe-cdp.js +81 -0
- data/node_modules/axe-core/doc/examples/chrome-debugging-protocol/package.json +8 -0
- data/node_modules/axe-core/doc/examples/html-handlebars.md +164 -0
- data/node_modules/axe-core/doc/examples/jasmine/README.md +37 -0
- data/node_modules/axe-core/doc/examples/jasmine/package.json +20 -0
- data/node_modules/axe-core/doc/examples/jasmine/spec/a11y.js +36 -0
- data/node_modules/axe-core/doc/examples/jest_react/README.md +41 -0
- data/node_modules/axe-core/doc/examples/jest_react/link.js +7 -0
- data/node_modules/axe-core/doc/examples/jest_react/link.test.js +24 -0
- data/node_modules/axe-core/doc/examples/jest_react/package.json +28 -0
- data/node_modules/axe-core/doc/examples/jest_react/test-helpers.js +21 -0
- data/node_modules/axe-core/doc/examples/mocha/README.md +37 -0
- data/node_modules/axe-core/doc/examples/mocha/package.json +21 -0
- data/node_modules/axe-core/doc/examples/phantomjs/README.md +17 -0
- data/node_modules/axe-core/doc/examples/phantomjs/axe-phantom.js +51 -0
- data/node_modules/axe-core/doc/examples/phantomjs/package.json +19 -0
- data/node_modules/axe-core/doc/examples/puppeteer/README.md +12 -0
- data/node_modules/axe-core/doc/examples/puppeteer/axe-puppeteer.js +60 -0
- data/node_modules/axe-core/doc/examples/puppeteer/package.json +10 -0
- data/node_modules/axe-core/doc/examples/qunit/README.md +37 -0
- data/node_modules/axe-core/doc/examples/qunit/package.json +21 -0
- data/node_modules/axe-core/doc/plugins.md +123 -0
- data/node_modules/axe-core/doc/projects.md +44 -0
- data/node_modules/axe-core/doc/rule-descriptions.md +79 -0
- data/node_modules/axe-core/doc/rule-development.md +95 -0
- data/node_modules/axe-core/doc/rule-proposal.md +106 -0
- data/node_modules/axe-core/lib/checks/aria/abstractrole.js +1 -0
- data/node_modules/axe-core/lib/checks/aria/abstractrole.json +11 -0
- data/node_modules/axe-core/lib/checks/aria/allowed-attr.js +39 -0
- data/node_modules/axe-core/lib/checks/aria/allowed-attr.json +11 -0
- data/node_modules/axe-core/lib/checks/aria/aria-allowed-role.js +28 -0
- data/node_modules/axe-core/lib/checks/aria/aria-allowed-role.json +16 -0
- data/node_modules/axe-core/lib/checks/aria/aria-hidden-body.js +1 -0
- data/node_modules/axe-core/lib/checks/aria/aria-hidden-body.json +11 -0
- data/node_modules/axe-core/lib/checks/aria/errormessage.js +33 -0
- data/node_modules/axe-core/lib/checks/aria/errormessage.json +11 -0
- data/node_modules/axe-core/lib/checks/aria/has-widget-role.js +6 -0
- data/node_modules/axe-core/lib/checks/aria/has-widget-role.json +12 -0
- data/node_modules/axe-core/lib/checks/aria/implicit-role-fallback.js +6 -0
- data/node_modules/axe-core/lib/checks/aria/implicit-role-fallback.json +11 -0
- data/node_modules/axe-core/lib/checks/aria/invalidrole.js +3 -0
- data/node_modules/axe-core/lib/checks/aria/invalidrole.json +11 -0
- data/node_modules/axe-core/lib/checks/aria/required-attr.js +28 -0
- data/node_modules/axe-core/lib/checks/aria/required-attr.json +11 -0
- data/node_modules/axe-core/lib/checks/aria/required-children.js +117 -0
- data/node_modules/axe-core/lib/checks/aria/required-children.json +15 -0
- data/node_modules/axe-core/lib/checks/aria/required-parent.js +87 -0
- data/node_modules/axe-core/lib/checks/aria/required-parent.json +11 -0
- data/node_modules/axe-core/lib/checks/aria/unsupportedattr.js +39 -0
- data/node_modules/axe-core/lib/checks/aria/unsupportedattr.json +11 -0
- data/node_modules/axe-core/lib/checks/aria/unsupportedrole.js +1 -0
- data/node_modules/axe-core/lib/checks/aria/unsupportedrole.json +11 -0
- data/node_modules/axe-core/lib/checks/aria/valid-attr-value.js +32 -0
- data/node_modules/axe-core/lib/checks/aria/valid-attr-value.json +12 -0
- data/node_modules/axe-core/lib/checks/aria/valid-attr.js +25 -0
- data/node_modules/axe-core/lib/checks/aria/valid-attr.json +12 -0
- data/node_modules/axe-core/lib/checks/aria/valid-scrollable-semantics.js +62 -0
- data/node_modules/axe-core/lib/checks/aria/valid-scrollable-semantics.json +12 -0
- data/node_modules/axe-core/lib/checks/color/color-contrast.js +70 -0
- data/node_modules/axe-core/lib/checks/color/color-contrast.json +24 -0
- data/node_modules/axe-core/lib/checks/color/link-in-text-block.js +85 -0
- data/node_modules/axe-core/lib/checks/color/link-in-text-block.json +19 -0
- data/node_modules/axe-core/lib/checks/forms/autocomplete-appropriate.js +67 -0
- data/node_modules/axe-core/lib/checks/forms/autocomplete-appropriate.json +11 -0
- data/node_modules/axe-core/lib/checks/forms/autocomplete-valid.js +2 -0
- data/node_modules/axe-core/lib/checks/forms/autocomplete-valid.json +11 -0
- data/node_modules/axe-core/lib/checks/forms/fieldset-after.js +25 -0
- data/node_modules/axe-core/lib/checks/forms/fieldset.js +109 -0
- data/node_modules/axe-core/lib/checks/forms/fieldset.json +12 -0
- data/node_modules/axe-core/lib/checks/forms/group-labelledby-after.js +16 -0
- data/node_modules/axe-core/lib/checks/forms/group-labelledby.js +66 -0
- data/node_modules/axe-core/lib/checks/forms/group-labelledby.json +12 -0
- data/node_modules/axe-core/lib/checks/keyboard/accesskeys-after.js +19 -0
- data/node_modules/axe-core/lib/checks/keyboard/accesskeys.js +5 -0
- data/node_modules/axe-core/lib/checks/keyboard/accesskeys.json +12 -0
- data/node_modules/axe-core/lib/checks/keyboard/focusable-disabled.js +25 -0
- data/node_modules/axe-core/lib/checks/keyboard/focusable-disabled.json +11 -0
- data/node_modules/axe-core/lib/checks/keyboard/focusable-no-name.js +6 -0
- data/node_modules/axe-core/lib/checks/keyboard/focusable-no-name.json +11 -0
- data/node_modules/axe-core/lib/checks/keyboard/focusable-not-tabbable.js +25 -0
- data/node_modules/axe-core/lib/checks/keyboard/focusable-not-tabbable.json +11 -0
- data/node_modules/axe-core/lib/checks/keyboard/landmark-is-top-level.js +18 -0
- data/node_modules/axe-core/lib/checks/keyboard/landmark-is-top-level.json +11 -0
- data/node_modules/axe-core/lib/checks/keyboard/page-has-elm-after.js +11 -0
- data/node_modules/axe-core/lib/checks/keyboard/page-has-elm.js +9 -0
- data/node_modules/axe-core/lib/checks/keyboard/page-has-heading-one.json +15 -0
- data/node_modules/axe-core/lib/checks/keyboard/page-has-main.json +15 -0
- data/node_modules/axe-core/lib/checks/keyboard/page-no-duplicate-banner.json +15 -0
- data/node_modules/axe-core/lib/checks/keyboard/page-no-duplicate-contentinfo.json +15 -0
- data/node_modules/axe-core/lib/checks/keyboard/page-no-duplicate-main.json +14 -0
- data/node_modules/axe-core/lib/checks/keyboard/page-no-duplicate.js +22 -0
- data/node_modules/axe-core/lib/checks/keyboard/tabindex.js +1 -0
- data/node_modules/axe-core/lib/checks/keyboard/tabindex.json +11 -0
- data/node_modules/axe-core/lib/checks/label/alt-space-value.js +2 -0
- data/node_modules/axe-core/lib/checks/label/alt-space-value.json +11 -0
- data/node_modules/axe-core/lib/checks/label/duplicate-img-label.js +19 -0
- data/node_modules/axe-core/lib/checks/label/duplicate-img-label.json +11 -0
- data/node_modules/axe-core/lib/checks/label/explicit.js +15 -0
- data/node_modules/axe-core/lib/checks/label/explicit.json +11 -0
- data/node_modules/axe-core/lib/checks/label/help-same-as-label.js +23 -0
- data/node_modules/axe-core/lib/checks/label/help-same-as-label.json +12 -0
- data/node_modules/axe-core/lib/checks/label/hidden-explicit-label.js +12 -0
- data/node_modules/axe-core/lib/checks/label/hidden-explicit-label.json +11 -0
- data/node_modules/axe-core/lib/checks/label/implicit.js +7 -0
- data/node_modules/axe-core/lib/checks/label/implicit.json +11 -0
- data/node_modules/axe-core/lib/checks/label/label-content-name-mismatch.js +49 -0
- data/node_modules/axe-core/lib/checks/label/label-content-name-mismatch.json +11 -0
- data/node_modules/axe-core/lib/checks/label/multiple-label.js +29 -0
- data/node_modules/axe-core/lib/checks/label/multiple-label.json +11 -0
- data/node_modules/axe-core/lib/checks/label/title-only.js +5 -0
- data/node_modules/axe-core/lib/checks/label/title-only.json +11 -0
- data/node_modules/axe-core/lib/checks/language/has-lang.js +5 -0
- data/node_modules/axe-core/lib/checks/language/has-lang.json +11 -0
- data/node_modules/axe-core/lib/checks/language/valid-lang.js +26 -0
- data/node_modules/axe-core/lib/checks/language/valid-lang.json +11 -0
- data/node_modules/axe-core/lib/checks/language/xml-lang-mismatch.js +5 -0
- data/node_modules/axe-core/lib/checks/language/xml-lang-mismatch.json +11 -0
- data/node_modules/axe-core/lib/checks/lists/dlitem.js +23 -0
- data/node_modules/axe-core/lib/checks/lists/dlitem.json +11 -0
- data/node_modules/axe-core/lib/checks/lists/listitem.js +18 -0
- data/node_modules/axe-core/lib/checks/lists/listitem.json +11 -0
- data/node_modules/axe-core/lib/checks/lists/only-dlitems.js +42 -0
- data/node_modules/axe-core/lib/checks/lists/only-dlitems.json +11 -0
- data/node_modules/axe-core/lib/checks/lists/only-listitems.js +68 -0
- data/node_modules/axe-core/lib/checks/lists/only-listitems.json +11 -0
- data/node_modules/axe-core/lib/checks/lists/structured-dlitems.js +22 -0
- data/node_modules/axe-core/lib/checks/lists/structured-dlitems.json +11 -0
- data/node_modules/axe-core/lib/checks/media/caption.js +8 -0
- data/node_modules/axe-core/lib/checks/media/caption.json +11 -0
- data/node_modules/axe-core/lib/checks/media/description.js +8 -0
- data/node_modules/axe-core/lib/checks/media/description.json +11 -0
- data/node_modules/axe-core/lib/checks/media/frame-tested.js +28 -0
- data/node_modules/axe-core/lib/checks/media/frame-tested.json +15 -0
- data/node_modules/axe-core/lib/checks/mobile/css-orientation-lock.js +132 -0
- data/node_modules/axe-core/lib/checks/mobile/css-orientation-lock.json +12 -0
- data/node_modules/axe-core/lib/checks/mobile/meta-viewport-large.json +15 -0
- data/node_modules/axe-core/lib/checks/mobile/meta-viewport-scale.js +38 -0
- data/node_modules/axe-core/lib/checks/mobile/meta-viewport.json +14 -0
- data/node_modules/axe-core/lib/checks/navigation/header-present.js +4 -0
- data/node_modules/axe-core/lib/checks/navigation/header-present.json +11 -0
- data/node_modules/axe-core/lib/checks/navigation/heading-order-after.js +14 -0
- data/node_modules/axe-core/lib/checks/navigation/heading-order.js +15 -0
- data/node_modules/axe-core/lib/checks/navigation/heading-order.json +12 -0
- data/node_modules/axe-core/lib/checks/navigation/internal-link-present.js +4 -0
- data/node_modules/axe-core/lib/checks/navigation/internal-link-present.json +11 -0
- data/node_modules/axe-core/lib/checks/navigation/landmark.js +3 -0
- data/node_modules/axe-core/lib/checks/navigation/landmark.json +11 -0
- data/node_modules/axe-core/lib/checks/navigation/meta-refresh.js +4 -0
- data/node_modules/axe-core/lib/checks/navigation/meta-refresh.json +11 -0
- data/node_modules/axe-core/lib/checks/navigation/p-as-heading.js +93 -0
- data/node_modules/axe-core/lib/checks/navigation/p-as-heading.json +30 -0
- data/node_modules/axe-core/lib/checks/navigation/region-after.js +1 -0
- data/node_modules/axe-core/lib/checks/navigation/region.js +85 -0
- data/node_modules/axe-core/lib/checks/navigation/region.json +12 -0
- data/node_modules/axe-core/lib/checks/navigation/skip-link.js +5 -0
- data/node_modules/axe-core/lib/checks/navigation/skip-link.json +12 -0
- data/node_modules/axe-core/lib/checks/navigation/unique-frame-title-after.js +9 -0
- data/node_modules/axe-core/lib/checks/navigation/unique-frame-title.js +6 -0
- data/node_modules/axe-core/lib/checks/navigation/unique-frame-title.json +12 -0
- data/node_modules/axe-core/lib/checks/parsing/duplicate-id-active.json +12 -0
- data/node_modules/axe-core/lib/checks/parsing/duplicate-id-after.js +8 -0
- data/node_modules/axe-core/lib/checks/parsing/duplicate-id-aria.json +12 -0
- data/node_modules/axe-core/lib/checks/parsing/duplicate-id.js +17 -0
- data/node_modules/axe-core/lib/checks/parsing/duplicate-id.json +12 -0
- data/node_modules/axe-core/lib/checks/shared/aria-label.js +2 -0
- data/node_modules/axe-core/lib/checks/shared/aria-label.json +11 -0
- data/node_modules/axe-core/lib/checks/shared/aria-labelledby.js +2 -0
- data/node_modules/axe-core/lib/checks/shared/aria-labelledby.json +11 -0
- data/node_modules/axe-core/lib/checks/shared/button-has-visible-text.js +12 -0
- data/node_modules/axe-core/lib/checks/shared/button-has-visible-text.json +11 -0
- data/node_modules/axe-core/lib/checks/shared/doc-has-title.js +2 -0
- data/node_modules/axe-core/lib/checks/shared/doc-has-title.json +11 -0
- data/node_modules/axe-core/lib/checks/shared/exists.js +1 -0
- data/node_modules/axe-core/lib/checks/shared/exists.json +11 -0
- data/node_modules/axe-core/lib/checks/shared/has-alt.js +4 -0
- data/node_modules/axe-core/lib/checks/shared/has-alt.json +11 -0
- data/node_modules/axe-core/lib/checks/shared/has-visible-text.js +1 -0
- data/node_modules/axe-core/lib/checks/shared/has-visible-text.json +11 -0
- data/node_modules/axe-core/lib/checks/shared/is-on-screen.js +4 -0
- data/node_modules/axe-core/lib/checks/shared/is-on-screen.json +11 -0
- data/node_modules/axe-core/lib/checks/shared/non-empty-alt.js +2 -0
- data/node_modules/axe-core/lib/checks/shared/non-empty-alt.json +11 -0
- data/node_modules/axe-core/lib/checks/shared/non-empty-if-present.js +11 -0
- data/node_modules/axe-core/lib/checks/shared/non-empty-if-present.json +11 -0
- data/node_modules/axe-core/lib/checks/shared/non-empty-title.js +2 -0
- data/node_modules/axe-core/lib/checks/shared/non-empty-title.json +11 -0
- data/node_modules/axe-core/lib/checks/shared/non-empty-value.js +2 -0
- data/node_modules/axe-core/lib/checks/shared/non-empty-value.json +11 -0
- data/node_modules/axe-core/lib/checks/shared/role-none.js +1 -0
- data/node_modules/axe-core/lib/checks/shared/role-none.json +11 -0
- data/node_modules/axe-core/lib/checks/shared/role-presentation.js +1 -0
- data/node_modules/axe-core/lib/checks/shared/role-presentation.json +11 -0
- data/node_modules/axe-core/lib/checks/tables/caption-faked.js +10 -0
- data/node_modules/axe-core/lib/checks/tables/caption-faked.json +11 -0
- data/node_modules/axe-core/lib/checks/tables/has-caption.js +1 -0
- data/node_modules/axe-core/lib/checks/tables/has-caption.json +11 -0
- data/node_modules/axe-core/lib/checks/tables/has-summary.js +1 -0
- data/node_modules/axe-core/lib/checks/tables/has-summary.json +11 -0
- data/node_modules/axe-core/lib/checks/tables/has-th.js +31 -0
- data/node_modules/axe-core/lib/checks/tables/has-th.json +11 -0
- data/node_modules/axe-core/lib/checks/tables/headers-visible-text.js +30 -0
- data/node_modules/axe-core/lib/checks/tables/html5-scope.js +5 -0
- data/node_modules/axe-core/lib/checks/tables/html5-scope.json +11 -0
- data/node_modules/axe-core/lib/checks/tables/same-caption-summary.js +7 -0
- data/node_modules/axe-core/lib/checks/tables/same-caption-summary.json +11 -0
- data/node_modules/axe-core/lib/checks/tables/scope-value.js +5 -0
- data/node_modules/axe-core/lib/checks/tables/scope-value.json +11 -0
- data/node_modules/axe-core/lib/checks/tables/td-has-header.js +29 -0
- data/node_modules/axe-core/lib/checks/tables/td-has-header.json +11 -0
- data/node_modules/axe-core/lib/checks/tables/td-headers-attr.js +62 -0
- data/node_modules/axe-core/lib/checks/tables/td-headers-attr.json +11 -0
- data/node_modules/axe-core/lib/checks/tables/th-has-data-cells.js +76 -0
- data/node_modules/axe-core/lib/checks/tables/th-has-data-cells.json +12 -0
- data/node_modules/axe-core/lib/checks/tables/th-single-row-column.js +39 -0
- data/node_modules/axe-core/lib/checks/visibility/hidden-content.js +21 -0
- data/node_modules/axe-core/lib/checks/visibility/hidden-content.json +12 -0
- data/node_modules/axe-core/lib/commons/aria/arialabel-text.js +15 -0
- data/node_modules/axe-core/lib/commons/aria/arialabelledby-text.js +52 -0
- data/node_modules/axe-core/lib/commons/aria/attributes.js +45 -0
- data/node_modules/axe-core/lib/commons/aria/get-element-unallowed-roles.js +92 -0
- data/node_modules/axe-core/lib/commons/aria/get-owned-virtual.js +24 -0
- data/node_modules/axe-core/lib/commons/aria/get-role.js +44 -0
- data/node_modules/axe-core/lib/commons/aria/index.js +2417 -0
- data/node_modules/axe-core/lib/commons/aria/is-accessible-ref.js +55 -0
- data/node_modules/axe-core/lib/commons/aria/is-aria-role-allowed-on-element.js +41 -0
- data/node_modules/axe-core/lib/commons/aria/is-unsupported-role.js +14 -0
- data/node_modules/axe-core/lib/commons/aria/label-virtual.js +54 -0
- data/node_modules/axe-core/lib/commons/aria/named-from-contents.js +39 -0
- data/node_modules/axe-core/lib/commons/aria/roles.js +208 -0
- data/node_modules/axe-core/lib/commons/aria/validate-attr-value.js +63 -0
- data/node_modules/axe-core/lib/commons/color/contrast.js +172 -0
- data/node_modules/axe-core/lib/commons/color/element-is-distinct.js +88 -0
- data/node_modules/axe-core/lib/commons/color/get-background-color.js +411 -0
- data/node_modules/axe-core/lib/commons/color/get-foreground-color.js +32 -0
- data/node_modules/axe-core/lib/commons/color/incomplete-data.js +50 -0
- data/node_modules/axe-core/lib/commons/color/index.js +8 -0
- data/node_modules/axe-core/lib/commons/dom/elements-below-floating.js +39 -0
- data/node_modules/axe-core/lib/commons/dom/find-elms-in-context.js +28 -0
- data/node_modules/axe-core/lib/commons/dom/find-up.js +63 -0
- data/node_modules/axe-core/lib/commons/dom/get-composed-parent.js +25 -0
- data/node_modules/axe-core/lib/commons/dom/get-element-by-reference.js +34 -0
- data/node_modules/axe-core/lib/commons/dom/get-element-coordinates.js +38 -0
- data/node_modules/axe-core/lib/commons/dom/get-root-node.js +12 -0
- data/node_modules/axe-core/lib/commons/dom/get-scroll-offset.js +34 -0
- data/node_modules/axe-core/lib/commons/dom/get-tabbable-elements.js +24 -0
- data/node_modules/axe-core/lib/commons/dom/get-viewport-size.js +37 -0
- data/node_modules/axe-core/lib/commons/dom/has-content-virtual.js +73 -0
- data/node_modules/axe-core/lib/commons/dom/idrefs.js +36 -0
- data/node_modules/axe-core/lib/commons/dom/index.js +9 -0
- data/node_modules/axe-core/lib/commons/dom/is-focusable.js +90 -0
- data/node_modules/axe-core/lib/commons/dom/is-hidden-with-css.js +60 -0
- data/node_modules/axe-core/lib/commons/dom/is-html5.js +17 -0
- data/node_modules/axe-core/lib/commons/dom/is-in-text-block.js +95 -0
- data/node_modules/axe-core/lib/commons/dom/is-node.js +13 -0
- data/node_modules/axe-core/lib/commons/dom/is-offscreen.js +62 -0
- data/node_modules/axe-core/lib/commons/dom/is-visible.js +77 -0
- data/node_modules/axe-core/lib/commons/dom/is-visual-content.js +50 -0
- data/node_modules/axe-core/lib/commons/dom/shadow-elements-from-point.js +41 -0
- data/node_modules/axe-core/lib/commons/dom/visually-contains.js +62 -0
- data/node_modules/axe-core/lib/commons/dom/visually-overlaps.js +47 -0
- data/node_modules/axe-core/lib/commons/index.js +11 -0
- data/node_modules/axe-core/lib/commons/intro.stub +1 -0
- data/node_modules/axe-core/lib/commons/matches/attributes.js +23 -0
- data/node_modules/axe-core/lib/commons/matches/condition.js +19 -0
- data/node_modules/axe-core/lib/commons/matches/from-definition.js +47 -0
- data/node_modules/axe-core/lib/commons/matches/from-function.js +38 -0
- data/node_modules/axe-core/lib/commons/matches/from-primative.js +30 -0
- data/node_modules/axe-core/lib/commons/matches/index.js +37 -0
- data/node_modules/axe-core/lib/commons/matches/node-name.js +34 -0
- data/node_modules/axe-core/lib/commons/matches/properties.js +25 -0
- data/node_modules/axe-core/lib/commons/outro.stub +2 -0
- data/node_modules/axe-core/lib/commons/table/get-all-cells.js +28 -0
- data/node_modules/axe-core/lib/commons/table/get-cell-position.js +28 -0
- data/node_modules/axe-core/lib/commons/table/get-headers.js +29 -0
- data/node_modules/axe-core/lib/commons/table/get-scope.js +54 -0
- data/node_modules/axe-core/lib/commons/table/index.js +9 -0
- data/node_modules/axe-core/lib/commons/table/is-column-header.js +13 -0
- data/node_modules/axe-core/lib/commons/table/is-data-cell.js +22 -0
- data/node_modules/axe-core/lib/commons/table/is-data-table.js +190 -0
- data/node_modules/axe-core/lib/commons/table/is-header.js +22 -0
- data/node_modules/axe-core/lib/commons/table/is-row-header.js +13 -0
- data/node_modules/axe-core/lib/commons/table/to-grid.js +38 -0
- data/node_modules/axe-core/lib/commons/table/traverse.js +78 -0
- data/node_modules/axe-core/lib/commons/text/accessible-text-virtual.js +152 -0
- data/node_modules/axe-core/lib/commons/text/form-control-value.js +204 -0
- data/node_modules/axe-core/lib/commons/text/index.js +8 -0
- data/node_modules/axe-core/lib/commons/text/is-human-interpretable.js +51 -0
- data/node_modules/axe-core/lib/commons/text/is-valid-autocomplete.js +118 -0
- data/node_modules/axe-core/lib/commons/text/label-text.js +58 -0
- data/node_modules/axe-core/lib/commons/text/label-virtual.js +53 -0
- data/node_modules/axe-core/lib/commons/text/native-element-types.js +100 -0
- data/node_modules/axe-core/lib/commons/text/native-text-alternative.js +50 -0
- data/node_modules/axe-core/lib/commons/text/native-text-methods.js +122 -0
- data/node_modules/axe-core/lib/commons/text/sanitize.js +18 -0
- data/node_modules/axe-core/lib/commons/text/subtree-text.js +89 -0
- data/node_modules/axe-core/lib/commons/text/title-text.js +33 -0
- data/node_modules/axe-core/lib/commons/text/unicode.js +117 -0
- data/node_modules/axe-core/lib/commons/text/unsupported.js +5 -0
- data/node_modules/axe-core/lib/commons/text/visible-virtual.js +46 -0
- data/node_modules/axe-core/lib/commons/utils/index.js +10 -0
- data/node_modules/axe-core/lib/core/base/audit.js +684 -0
- data/node_modules/axe-core/lib/core/base/check-result.js +33 -0
- data/node_modules/axe-core/lib/core/base/check.js +123 -0
- data/node_modules/axe-core/lib/core/base/context.js +273 -0
- data/node_modules/axe-core/lib/core/base/rule-result.js +39 -0
- data/node_modules/axe-core/lib/core/base/rule.js +383 -0
- data/node_modules/axe-core/lib/core/constants.js +68 -0
- data/node_modules/axe-core/lib/core/imports/index.js +26 -0
- data/node_modules/axe-core/lib/core/index.js +45 -0
- data/node_modules/axe-core/lib/core/log.js +12 -0
- data/node_modules/axe-core/lib/core/public/cleanup-plugins.js +53 -0
- data/node_modules/axe-core/lib/core/public/configure.js +57 -0
- data/node_modules/axe-core/lib/core/public/get-rules.js +29 -0
- data/node_modules/axe-core/lib/core/public/load.js +66 -0
- data/node_modules/axe-core/lib/core/public/plugins.js +47 -0
- data/node_modules/axe-core/lib/core/public/reporter.js +24 -0
- data/node_modules/axe-core/lib/core/public/reset.js +12 -0
- data/node_modules/axe-core/lib/core/public/run-rules.js +94 -0
- data/node_modules/axe-core/lib/core/public/run.js +148 -0
- data/node_modules/axe-core/lib/core/reporters/helpers/failure-summary.js +35 -0
- data/node_modules/axe-core/lib/core/reporters/helpers/get-environment-data.js +39 -0
- data/node_modules/axe-core/lib/core/reporters/helpers/incomplete-fallback-msg.js +11 -0
- data/node_modules/axe-core/lib/core/reporters/helpers/index.js +3 -0
- data/node_modules/axe-core/lib/core/reporters/helpers/process-aggregate.js +102 -0
- data/node_modules/axe-core/lib/core/reporters/na.js +20 -0
- data/node_modules/axe-core/lib/core/reporters/no-passes.js +18 -0
- data/node_modules/axe-core/lib/core/reporters/raw.js +8 -0
- data/node_modules/axe-core/lib/core/reporters/v1.js +26 -0
- data/node_modules/axe-core/lib/core/reporters/v2.js +22 -0
- data/node_modules/axe-core/lib/core/utils/aggregate.js +19 -0
- data/node_modules/axe-core/lib/core/utils/aggregateChecks.js +85 -0
- data/node_modules/axe-core/lib/core/utils/aggregateNodeResults.js +61 -0
- data/node_modules/axe-core/lib/core/utils/aggregateResult.js +37 -0
- data/node_modules/axe-core/lib/core/utils/are-styles-set.js +24 -0
- data/node_modules/axe-core/lib/core/utils/check-helper.js +38 -0
- data/node_modules/axe-core/lib/core/utils/clone.js +27 -0
- data/node_modules/axe-core/lib/core/utils/collect-results-from-frames.js +127 -0
- data/node_modules/axe-core/lib/core/utils/contains.js +30 -0
- data/node_modules/axe-core/lib/core/utils/css-parser.js +5 -0
- data/node_modules/axe-core/lib/core/utils/dq-element.js +97 -0
- data/node_modules/axe-core/lib/core/utils/element-matches.js +39 -0
- data/node_modules/axe-core/lib/core/utils/escape-selector.js +79 -0
- data/node_modules/axe-core/lib/core/utils/extend-meta-data.js +17 -0
- data/node_modules/axe-core/lib/core/utils/finalize-result.js +11 -0
- data/node_modules/axe-core/lib/core/utils/find-by.js +14 -0
- data/node_modules/axe-core/lib/core/utils/flattened-tree.js +170 -0
- data/node_modules/axe-core/lib/core/utils/get-all-checks.js +12 -0
- data/node_modules/axe-core/lib/core/utils/get-base-lang.js +16 -0
- data/node_modules/axe-core/lib/core/utils/get-check-option.js +40 -0
- data/node_modules/axe-core/lib/core/utils/get-friendly-uri-end.js +144 -0
- data/node_modules/axe-core/lib/core/utils/get-root-node.js +17 -0
- data/node_modules/axe-core/lib/core/utils/get-selector.js +406 -0
- data/node_modules/axe-core/lib/core/utils/get-xpath.js +84 -0
- data/node_modules/axe-core/lib/core/utils/index.js +10 -0
- data/node_modules/axe-core/lib/core/utils/inject-style.js +38 -0
- data/node_modules/axe-core/lib/core/utils/is-hidden.js +40 -0
- data/node_modules/axe-core/lib/core/utils/is-html-element.js +135 -0
- data/node_modules/axe-core/lib/core/utils/is-shadow-root.js +40 -0
- data/node_modules/axe-core/lib/core/utils/is-xhtml.js +14 -0
- data/node_modules/axe-core/lib/core/utils/merge-results.js +116 -0
- data/node_modules/axe-core/lib/core/utils/node-sorter.js +21 -0
- data/node_modules/axe-core/lib/core/utils/performance-timer.js +121 -0
- data/node_modules/axe-core/lib/core/utils/pollyfills.js +299 -0
- data/node_modules/axe-core/lib/core/utils/preload-cssom.js +456 -0
- data/node_modules/axe-core/lib/core/utils/preload.js +109 -0
- data/node_modules/axe-core/lib/core/utils/publish-metadata.js +93 -0
- data/node_modules/axe-core/lib/core/utils/qsa.js +322 -0
- data/node_modules/axe-core/lib/core/utils/queue.js +138 -0
- data/node_modules/axe-core/lib/core/utils/respondable.js +243 -0
- data/node_modules/axe-core/lib/core/utils/rule-should-run.js +83 -0
- data/node_modules/axe-core/lib/core/utils/scroll-state.js +70 -0
- data/node_modules/axe-core/lib/core/utils/select.js +146 -0
- data/node_modules/axe-core/lib/core/utils/to-array.js +21 -0
- data/node_modules/axe-core/lib/core/utils/token-list.js +15 -0
- data/node_modules/axe-core/lib/core/utils/uuid.js +242 -0
- data/node_modules/axe-core/lib/core/utils/valid-input-type.js +35 -0
- data/node_modules/axe-core/lib/core/utils/valid-langs.js +8152 -0
- data/node_modules/axe-core/lib/intro.stub +15 -0
- data/node_modules/axe-core/lib/misc/any-failure-summary.json +6 -0
- data/node_modules/axe-core/lib/misc/incomplete-fallback.json +3 -0
- data/node_modules/axe-core/lib/misc/none-failure-summary.json +6 -0
- data/node_modules/axe-core/lib/outro.stub +2 -0
- data/node_modules/axe-core/lib/rules/accesskeys.json +13 -0
- data/node_modules/axe-core/lib/rules/area-alt.json +19 -0
- data/node_modules/axe-core/lib/rules/aria-allowed-attr-matches.js +11 -0
- data/node_modules/axe-core/lib/rules/aria-allowed-attr.json +12 -0
- data/node_modules/axe-core/lib/rules/aria-allowed-role-matches.js +7 -0
- data/node_modules/axe-core/lib/rules/aria-allowed-role.json +14 -0
- data/node_modules/axe-core/lib/rules/aria-dpub-role-fallback-matches.js +10 -0
- data/node_modules/axe-core/lib/rules/aria-dpub-role-fallback.json +13 -0
- data/node_modules/axe-core/lib/rules/aria-has-attr-matches.js +11 -0
- data/node_modules/axe-core/lib/rules/aria-hidden-body.json +13 -0
- data/node_modules/axe-core/lib/rules/aria-hidden-focus-matches.js +18 -0
- data/node_modules/axe-core/lib/rules/aria-hidden-focus.json +14 -0
- data/node_modules/axe-core/lib/rules/aria-required-attr.json +12 -0
- data/node_modules/axe-core/lib/rules/aria-required-children.json +12 -0
- data/node_modules/axe-core/lib/rules/aria-required-parent.json +12 -0
- data/node_modules/axe-core/lib/rules/aria-roles.json +12 -0
- data/node_modules/axe-core/lib/rules/aria-valid-attr-value.json +12 -0
- data/node_modules/axe-core/lib/rules/aria-valid-attr.json +12 -0
- data/node_modules/axe-core/lib/rules/audio-caption.json +20 -0
- data/node_modules/axe-core/lib/rules/autocomplete-matches.js +45 -0
- data/node_modules/axe-core/lib/rules/autocomplete-valid.json +12 -0
- data/node_modules/axe-core/lib/rules/blink.json +19 -0
- data/node_modules/axe-core/lib/rules/button-name.json +27 -0
- data/node_modules/axe-core/lib/rules/bypass-matches.js +1 -0
- data/node_modules/axe-core/lib/rules/bypass.json +20 -0
- data/node_modules/axe-core/lib/rules/checkboxgroup.json +12 -0
- data/node_modules/axe-core/lib/rules/color-contrast-matches.js +120 -0
- data/node_modules/axe-core/lib/rules/color-contrast.json +16 -0
- data/node_modules/axe-core/lib/rules/css-orientation-lock.json +13 -0
- data/node_modules/axe-core/lib/rules/data-table-large-matches.js +11 -0
- data/node_modules/axe-core/lib/rules/data-table-matches.js +1 -0
- data/node_modules/axe-core/lib/rules/definition-list.json +13 -0
- data/node_modules/axe-core/lib/rules/dlitem.json +13 -0
- data/node_modules/axe-core/lib/rules/document-title.json +13 -0
- data/node_modules/axe-core/lib/rules/duplicate-id-active-matches.js +8 -0
- data/node_modules/axe-core/lib/rules/duplicate-id-active.json +14 -0
- data/node_modules/axe-core/lib/rules/duplicate-id-aria-matches.js +1 -0
- data/node_modules/axe-core/lib/rules/duplicate-id-aria.json +14 -0
- data/node_modules/axe-core/lib/rules/duplicate-id-misc-matches.js +11 -0
- data/node_modules/axe-core/lib/rules/duplicate-id.json +14 -0
- data/node_modules/axe-core/lib/rules/empty-heading.json +13 -0
- data/node_modules/axe-core/lib/rules/focus-order-semantics.json +13 -0
- data/node_modules/axe-core/lib/rules/form-field-multiple-labels.json +13 -0
- data/node_modules/axe-core/lib/rules/frame-tested.json +12 -0
- data/node_modules/axe-core/lib/rules/frame-title-has-text.js +2 -0
- data/node_modules/axe-core/lib/rules/frame-title-unique.json +13 -0
- data/node_modules/axe-core/lib/rules/frame-title.json +25 -0
- data/node_modules/axe-core/lib/rules/heading-matches.js +15 -0
- data/node_modules/axe-core/lib/rules/heading-order.json +13 -0
- data/node_modules/axe-core/lib/rules/hidden-content.json +13 -0
- data/node_modules/axe-core/lib/rules/html-has-lang.json +12 -0
- data/node_modules/axe-core/lib/rules/html-lang-valid.json +12 -0
- data/node_modules/axe-core/lib/rules/html-xml-lang-mismatch.json +13 -0
- data/node_modules/axe-core/lib/rules/image-alt.json +25 -0
- data/node_modules/axe-core/lib/rules/img-redundant-alt.json +12 -0
- data/node_modules/axe-core/lib/rules/input-image-alt.json +18 -0
- data/node_modules/axe-core/lib/rules/inserted-into-focus-order-matches.js +1 -0
- data/node_modules/axe-core/lib/rules/label-content-name-mismatch-matches.js +42 -0
- data/node_modules/axe-core/lib/rules/label-content-name-mismatch.json +12 -0
- data/node_modules/axe-core/lib/rules/label-matches.js +11 -0
- data/node_modules/axe-core/lib/rules/label-title-only.json +13 -0
- data/node_modules/axe-core/lib/rules/label.json +26 -0
- data/node_modules/axe-core/lib/rules/landmark-banner-is-top-level.json +13 -0
- data/node_modules/axe-core/lib/rules/landmark-complementary-is-top-level.json +12 -0
- data/node_modules/axe-core/lib/rules/landmark-contentinfo-is-top-level.json +13 -0
- data/node_modules/axe-core/lib/rules/landmark-has-body-context.js +8 -0
- data/node_modules/axe-core/lib/rules/landmark-main-is-top-level.json +12 -0
- data/node_modules/axe-core/lib/rules/landmark-no-duplicate-banner.json +12 -0
- data/node_modules/axe-core/lib/rules/landmark-no-duplicate-contentinfo.json +12 -0
- data/node_modules/axe-core/lib/rules/landmark-one-main.json +12 -0
- data/node_modules/axe-core/lib/rules/layout-table-matches.js +8 -0
- data/node_modules/axe-core/lib/rules/layout-table.json +13 -0
- data/node_modules/axe-core/lib/rules/link-in-text-block-matches.js +14 -0
- data/node_modules/axe-core/lib/rules/link-in-text-block.json +14 -0
- data/node_modules/axe-core/lib/rules/link-name.json +26 -0
- data/node_modules/axe-core/lib/rules/list.json +13 -0
- data/node_modules/axe-core/lib/rules/listitem.json +13 -0
- data/node_modules/axe-core/lib/rules/marquee.json +13 -0
- data/node_modules/axe-core/lib/rules/meta-refresh.json +13 -0
- data/node_modules/axe-core/lib/rules/meta-viewport-large.json +13 -0
- data/node_modules/axe-core/lib/rules/meta-viewport.json +13 -0
- data/node_modules/axe-core/lib/rules/no-role-matches.js +1 -0
- data/node_modules/axe-core/lib/rules/not-html-matches.js +1 -0
- data/node_modules/axe-core/lib/rules/object-alt.json +25 -0
- data/node_modules/axe-core/lib/rules/p-as-heading-matches.js +17 -0
- data/node_modules/axe-core/lib/rules/p-as-heading.json +13 -0
- data/node_modules/axe-core/lib/rules/page-has-heading-one.json +12 -0
- data/node_modules/axe-core/lib/rules/radiogroup.json +12 -0
- data/node_modules/axe-core/lib/rules/region.json +13 -0
- data/node_modules/axe-core/lib/rules/role-not-button-matches.js +1 -0
- data/node_modules/axe-core/lib/rules/scope-attr-valid.json +12 -0
- data/node_modules/axe-core/lib/rules/server-side-image-map.json +18 -0
- data/node_modules/axe-core/lib/rules/skip-link-matches.js +1 -0
- data/node_modules/axe-core/lib/rules/skip-link.json +13 -0
- data/node_modules/axe-core/lib/rules/tabindex.json +12 -0
- data/node_modules/axe-core/lib/rules/table-duplicate-name.json +12 -0
- data/node_modules/axe-core/lib/rules/table-fake-caption.json +20 -0
- data/node_modules/axe-core/lib/rules/td-has-header.json +20 -0
- data/node_modules/axe-core/lib/rules/td-headers-attr.json +12 -0
- data/node_modules/axe-core/lib/rules/th-has-data-cells.json +13 -0
- data/node_modules/axe-core/lib/rules/valid-lang.json +13 -0
- data/node_modules/axe-core/lib/rules/video-caption.json +19 -0
- data/node_modules/axe-core/lib/rules/video-description.json +19 -0
- data/node_modules/axe-core/lib/rules/window-is-top.js +3 -0
- data/node_modules/axe-core/lib/rules/xml-lang-mismatch-matches.js +12 -0
- data/node_modules/axe-core/locales/de.json +627 -0
- data/node_modules/axe-core/locales/fr.json +667 -0
- data/node_modules/axe-core/locales/ja.json +728 -0
- data/node_modules/axe-core/locales/nl.json +36 -0
- data/node_modules/axe-core/package.json +215 -0
- data/node_modules/axe-core/sri-history.json +138 -0
- data/node_modules/axe-core/typings/axe-core/axe-core-tests.ts +180 -0
- 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,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
|
+
}
|