axe-core 4.1.2-canary.ec00dc7 → 4.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +0 -46
- package/CONTRIBUTING.md +57 -112
- package/README.md +50 -59
- package/axe.d.ts +281 -282
- package/axe.js +678 -1285
- package/axe.min.js +2 -2
- package/bower.json +38 -44
- package/doc/API.md +133 -178
- package/doc/check-message-template.md +3 -3
- package/doc/check-options.md +25 -25
- package/doc/developer-guide.md +48 -48
- package/doc/examples/chrome-debugging-protocol/axe-cdp.js +56 -56
- package/doc/examples/chrome-debugging-protocol/package.json +9 -9
- package/doc/examples/html-handlebars.md +52 -52
- package/doc/examples/jasmine/karma.conf.js +15 -15
- package/doc/examples/jasmine/package.json +19 -19
- package/doc/examples/jasmine/spec/a11y.js +29 -29
- package/doc/examples/jest_react/link.js +3 -3
- package/doc/examples/jest_react/link.test.js +15 -15
- package/doc/examples/jest_react/package.json +26 -26
- package/doc/examples/jest_react/test-helpers.js +12 -12
- package/doc/examples/jsdom/package.json +13 -13
- package/doc/examples/mocha/karma.conf.js +15 -15
- package/doc/examples/mocha/package.json +20 -20
- package/doc/examples/phantomjs/axe-phantom.js +36 -36
- package/doc/examples/phantomjs/package.json +17 -17
- package/doc/examples/puppeteer/axe-puppeteer.js +37 -37
- package/doc/examples/puppeteer/package.json +11 -11
- package/doc/examples/qunit/package.json +19 -19
- package/doc/examples/test-examples.js +22 -22
- package/doc/plugins.md +64 -64
- package/doc/projects.md +9 -13
- package/doc/rule-descriptions.md +100 -104
- package/doc/rule-development.md +2 -2
- package/doc/standards-object.md +8 -14
- package/lib/checks/aria/abstractrole-evaluate.js +8 -8
- package/lib/checks/aria/abstractrole.json +12 -12
- package/lib/checks/aria/aria-allowed-attr-evaluate.js +25 -24
- package/lib/checks/aria/aria-allowed-attr.json +12 -12
- package/lib/checks/aria/aria-allowed-role-evaluate.js +21 -21
- package/lib/checks/aria/aria-allowed-role.json +20 -20
- package/lib/checks/aria/aria-errormessage-evaluate.js +30 -38
- package/lib/checks/aria/aria-errormessage.json +16 -16
- package/lib/checks/aria/aria-hidden-body-evaluate.js +1 -1
- package/lib/checks/aria/aria-hidden-body.json +9 -9
- package/lib/checks/aria/aria-required-attr-evaluate.js +34 -34
- package/lib/checks/aria/aria-required-attr.json +12 -12
- package/lib/checks/aria/aria-required-children-evaluate.js +103 -108
- package/lib/checks/aria/aria-required-children.json +30 -30
- package/lib/checks/aria/aria-required-parent-evaluate.js +65 -72
- package/lib/checks/aria/aria-required-parent.json +12 -12
- package/lib/checks/aria/aria-roledescription-evaluate.js +9 -9
- package/lib/checks/aria/aria-roledescription.json +21 -21
- package/lib/checks/aria/aria-unsupported-attr-evaluate.js +20 -17
- package/lib/checks/aria/aria-unsupported-attr.json +9 -9
- package/lib/checks/aria/aria-valid-attr-evaluate.js +20 -20
- package/lib/checks/aria/aria-valid-attr-value-evaluate.js +71 -82
- package/lib/checks/aria/aria-valid-attr-value.json +17 -17
- package/lib/checks/aria/aria-valid-attr.json +13 -13
- package/lib/checks/aria/fallbackrole-evaluate.js +1 -1
- package/lib/checks/aria/fallbackrole.json +9 -9
- package/lib/checks/aria/has-global-aria-attribute-evaluate.js +5 -5
- package/lib/checks/aria/has-global-aria-attribute.json +12 -12
- package/lib/checks/aria/has-widget-role-evaluate.js +6 -6
- package/lib/checks/aria/has-widget-role.json +10 -10
- package/lib/checks/aria/invalidrole-evaluate.js +12 -12
- package/lib/checks/aria/invalidrole.json +12 -12
- package/lib/checks/aria/is-element-focusable-evaluate.js +1 -1
- package/lib/checks/aria/is-element-focusable.json +9 -9
- package/lib/checks/aria/no-implicit-explicit-label-evaluate.js +18 -20
- package/lib/checks/aria/no-implicit-explicit-label.json +9 -9
- package/lib/checks/aria/unsupportedrole-evaluate.js +2 -2
- package/lib/checks/aria/unsupportedrole.json +9 -9
- package/lib/checks/aria/valid-scrollable-semantics-evaluate.js +23 -23
- package/lib/checks/aria/valid-scrollable-semantics.json +10 -10
- package/lib/checks/color/color-contrast-evaluate.js +164 -164
- package/lib/checks/color/color-contrast.json +40 -40
- package/lib/checks/color/link-in-text-block-evaluate.js +70 -70
- package/lib/checks/color/link-in-text-block.json +17 -17
- package/lib/checks/forms/autocomplete-appropriate-evaluate.js +68 -68
- package/lib/checks/forms/autocomplete-appropriate.json +9 -9
- package/lib/checks/forms/autocomplete-valid-evaluate.js +2 -2
- package/lib/checks/forms/autocomplete-valid.json +9 -9
- package/lib/checks/generic/README.md +5 -5
- package/lib/checks/generic/attr-non-space-content-evaluate.js +20 -20
- package/lib/checks/generic/has-descendant-after.js +10 -10
- package/lib/checks/generic/has-descendant-evaluate.js +12 -12
- package/lib/checks/generic/has-text-content-evaluate.js +5 -5
- package/lib/checks/generic/matches-definition-evaluate.js +1 -1
- package/lib/checks/generic/page-no-duplicate-after.js +2 -2
- package/lib/checks/generic/page-no-duplicate-evaluate.js +29 -29
- package/lib/checks/keyboard/accesskeys-after.js +19 -19
- package/lib/checks/keyboard/accesskeys-evaluate.js +5 -5
- package/lib/checks/keyboard/accesskeys.json +10 -10
- package/lib/checks/keyboard/focusable-content-evaluate.js +13 -13
- package/lib/checks/keyboard/focusable-content.json +9 -9
- package/lib/checks/keyboard/focusable-disabled-evaluate.js +30 -30
- package/lib/checks/keyboard/focusable-disabled.json +9 -9
- package/lib/checks/keyboard/focusable-element-evaluate.js +41 -41
- package/lib/checks/keyboard/focusable-element.json +9 -9
- package/lib/checks/keyboard/focusable-modal-open-evaluate.js +11 -11
- package/lib/checks/keyboard/focusable-modal-open.json +9 -9
- package/lib/checks/keyboard/focusable-no-name-evaluate.js +10 -10
- package/lib/checks/keyboard/focusable-no-name.json +10 -10
- package/lib/checks/keyboard/focusable-not-tabbable-evaluate.js +30 -30
- package/lib/checks/keyboard/focusable-not-tabbable.json +9 -9
- package/lib/checks/keyboard/landmark-is-top-level-evaluate.js +17 -22
- package/lib/checks/keyboard/landmark-is-top-level.json +9 -9
- package/lib/checks/keyboard/page-has-heading-one.json +13 -13
- package/lib/checks/keyboard/page-has-main.json +13 -13
- package/lib/checks/keyboard/page-no-duplicate-banner.json +14 -14
- package/lib/checks/keyboard/page-no-duplicate-contentinfo.json +14 -14
- package/lib/checks/keyboard/page-no-duplicate-main.json +13 -13
- package/lib/checks/keyboard/tabindex-evaluate.js +5 -5
- package/lib/checks/keyboard/tabindex.json +9 -9
- package/lib/checks/label/alt-space-value-evaluate.js +3 -3
- package/lib/checks/label/alt-space-value.json +9 -9
- package/lib/checks/label/duplicate-img-label-evaluate.js +12 -12
- package/lib/checks/label/duplicate-img-label.json +12 -12
- package/lib/checks/label/explicit-evaluate.js +20 -25
- package/lib/checks/label/explicit.json +10 -10
- package/lib/checks/label/help-same-as-label-evaluate.js +17 -17
- package/lib/checks/label/help-same-as-label.json +10 -10
- package/lib/checks/label/hidden-explicit-label-evaluate.js +15 -21
- package/lib/checks/label/hidden-explicit-label.json +10 -10
- package/lib/checks/label/implicit-evaluate.js +9 -9
- package/lib/checks/label/implicit.json +10 -10
- package/lib/checks/label/label-content-name-mismatch-evaluate.js +42 -42
- package/lib/checks/label/label-content-name-mismatch.json +13 -13
- package/lib/checks/label/multiple-label-evaluate.js +32 -32
- package/lib/checks/label/multiple-label.json +9 -9
- package/lib/checks/label/title-only-evaluate.js +4 -4
- package/lib/checks/label/title-only.json +9 -9
- package/lib/checks/landmarks/landmark-is-unique-after.js +20 -20
- package/lib/checks/landmarks/landmark-is-unique-evaluate.js +6 -6
- package/lib/checks/landmarks/landmark-is-unique.json +10 -10
- package/lib/checks/language/has-lang-evaluate.js +25 -25
- package/lib/checks/language/has-lang.json +15 -15
- package/lib/checks/language/valid-lang-evaluate.js +25 -25
- package/lib/checks/language/valid-lang.json +12 -12
- package/lib/checks/language/xml-lang-mismatch-evaluate.js +3 -3
- package/lib/checks/language/xml-lang-mismatch.json +9 -9
- package/lib/checks/lists/dlitem-evaluate.js +19 -19
- package/lib/checks/lists/dlitem.json +9 -9
- package/lib/checks/lists/listitem-evaluate.js +17 -17
- package/lib/checks/lists/listitem.json +12 -12
- package/lib/checks/lists/only-dlitems-evaluate.js +44 -44
- package/lib/checks/lists/only-dlitems.json +9 -9
- package/lib/checks/lists/only-listitems-evaluate.js +56 -56
- package/lib/checks/lists/only-listitems.json +12 -12
- package/lib/checks/lists/structured-dlitems-evaluate.js +20 -20
- package/lib/checks/lists/structured-dlitems.json +9 -9
- package/lib/checks/media/caption-evaluate.js +6 -6
- package/lib/checks/media/caption.json +9 -9
- package/lib/checks/media/frame-tested-evaluate.js +20 -20
- package/lib/checks/media/frame-tested.json +13 -13
- package/lib/checks/media/no-autoplay-audio-evaluate.js +81 -81
- package/lib/checks/media/no-autoplay-audio.json +13 -13
- package/lib/checks/mobile/css-orientation-lock-evaluate.js +250 -250
- package/lib/checks/mobile/css-orientation-lock.json +13 -13
- package/lib/checks/mobile/meta-viewport-large.json +13 -13
- package/lib/checks/mobile/meta-viewport-scale-evaluate.js +56 -56
- package/lib/checks/mobile/meta-viewport.json +12 -12
- package/lib/checks/navigation/header-present.json +13 -13
- package/lib/checks/navigation/heading-order-after.js +11 -134
- package/lib/checks/navigation/heading-order-evaluate.js +13 -51
- package/lib/checks/navigation/heading-order.json +10 -10
- package/lib/checks/navigation/identical-links-same-purpose-after.js +86 -86
- package/lib/checks/navigation/identical-links-same-purpose-evaluate.js +23 -23
- package/lib/checks/navigation/identical-links-same-purpose.json +10 -10
- package/lib/checks/navigation/internal-link-present-evaluate.js +4 -4
- package/lib/checks/navigation/internal-link-present.json +9 -9
- package/lib/checks/navigation/landmark.json +12 -12
- package/lib/checks/navigation/meta-refresh-evaluate.js +3 -3
- package/lib/checks/navigation/meta-refresh.json +9 -9
- package/lib/checks/navigation/p-as-heading-evaluate.js +72 -72
- package/lib/checks/navigation/p-as-heading.json +28 -28
- package/lib/checks/navigation/region-evaluate.js +73 -73
- package/lib/checks/navigation/region.json +12 -12
- package/lib/checks/navigation/skip-link-evaluate.js +5 -5
- package/lib/checks/navigation/skip-link.json +10 -10
- package/lib/checks/navigation/unique-frame-title-after.js +8 -8
- package/lib/checks/navigation/unique-frame-title-evaluate.js +3 -3
- package/lib/checks/navigation/unique-frame-title.json +10 -10
- package/lib/checks/parsing/duplicate-id-active.json +10 -10
- package/lib/checks/parsing/duplicate-id-after.js +8 -8
- package/lib/checks/parsing/duplicate-id-aria.json +10 -10
- package/lib/checks/parsing/duplicate-id-evaluate.js +15 -15
- package/lib/checks/parsing/duplicate-id.json +10 -10
- package/lib/checks/shared/aria-label-evaluate.js +1 -1
- package/lib/checks/shared/aria-label.json +9 -9
- package/lib/checks/shared/aria-labelledby-evaluate.js +5 -5
- package/lib/checks/shared/aria-labelledby.json +10 -10
- package/lib/checks/shared/avoid-inline-spacing-evaluate.js +10 -10
- package/lib/checks/shared/avoid-inline-spacing.json +15 -15
- package/lib/checks/shared/button-has-visible-text.json +10 -10
- package/lib/checks/shared/doc-has-title-evaluate.js +2 -2
- package/lib/checks/shared/doc-has-title.json +9 -9
- package/lib/checks/shared/exists-evaluate.js +1 -1
- package/lib/checks/shared/exists.json +9 -9
- package/lib/checks/shared/has-alt-evaluate.js +5 -5
- package/lib/checks/shared/has-alt.json +9 -9
- package/lib/checks/shared/has-visible-text.json +10 -10
- package/lib/checks/shared/is-on-screen-evaluate.js +2 -2
- package/lib/checks/shared/is-on-screen.json +9 -9
- package/lib/checks/shared/non-empty-alt.json +15 -15
- package/lib/checks/shared/non-empty-if-present-evaluate.js +13 -13
- package/lib/checks/shared/non-empty-if-present.json +12 -12
- package/lib/checks/shared/non-empty-placeholder.json +15 -15
- package/lib/checks/shared/non-empty-title.json +15 -15
- package/lib/checks/shared/non-empty-value.json +15 -15
- package/lib/checks/shared/presentational-role-evaluate.js +29 -29
- package/lib/checks/shared/presentational-role.json +14 -14
- package/lib/checks/shared/role-none.json +17 -17
- package/lib/checks/shared/role-presentation.json +17 -17
- package/lib/checks/shared/svg-non-empty-title-evaluate.js +20 -24
- package/lib/checks/shared/svg-non-empty-title.json +13 -13
- package/lib/checks/tables/caption-faked-evaluate.js +8 -8
- package/lib/checks/tables/caption-faked.json +9 -9
- package/lib/checks/tables/html5-scope-evaluate.js +4 -4
- package/lib/checks/tables/html5-scope.json +9 -9
- package/lib/checks/tables/same-caption-summary-evaluate.js +6 -6
- package/lib/checks/tables/same-caption-summary.json +9 -9
- package/lib/checks/tables/scope-value-evaluate.js +2 -2
- package/lib/checks/tables/scope-value.json +12 -12
- package/lib/checks/tables/td-has-header-evaluate.js +21 -21
- package/lib/checks/tables/td-has-header.json +9 -9
- package/lib/checks/tables/td-headers-attr-evaluate.js +48 -48
- package/lib/checks/tables/td-headers-attr.json +10 -10
- package/lib/checks/tables/th-has-data-cells-evaluate.js +64 -64
- package/lib/checks/tables/th-has-data-cells.json +10 -10
- package/lib/checks/visibility/hidden-content-evaluate.js +28 -28
- package/lib/checks/visibility/hidden-content.json +10 -10
- package/lib/commons/aria/allowed-attr.js +12 -12
- package/lib/commons/aria/arialabel-text.js +7 -7
- package/lib/commons/aria/arialabelledby-text.js +41 -41
- package/lib/commons/aria/get-accessible-refs.js +41 -41
- package/lib/commons/aria/get-element-unallowed-roles.js +69 -69
- package/lib/commons/aria/get-explicit-role.js +14 -14
- package/lib/commons/aria/get-owned-virtual.js +14 -14
- package/lib/commons/aria/get-role-type.js +5 -5
- package/lib/commons/aria/get-role.js +89 -89
- package/lib/commons/aria/get-roles-by-type.js +1 -1
- package/lib/commons/aria/get-roles-with-name-from-contents.js +1 -1
- package/lib/commons/aria/implicit-nodes.js +6 -6
- package/lib/commons/aria/implicit-role.js +32 -32
- package/lib/commons/aria/is-accessible-ref.js +1 -1
- package/lib/commons/aria/is-aria-role-allowed-on-element.js +12 -12
- package/lib/commons/aria/is-unsupported-role.js +2 -2
- package/lib/commons/aria/is-valid-role.js +6 -6
- package/lib/commons/aria/label-virtual.js +24 -24
- package/lib/commons/aria/label.js +2 -2
- package/lib/commons/aria/lookup-table.js +2395 -2395
- package/lib/commons/aria/named-from-contents.js +19 -19
- package/lib/commons/aria/required-attr.js +5 -5
- package/lib/commons/aria/required-context.js +5 -5
- package/lib/commons/aria/required-owned.js +5 -5
- package/lib/commons/aria/validate-attr-value.js +40 -44
- package/lib/commons/aria/validate-attr.js +2 -2
- package/lib/commons/color/center-point-of-rect.js +15 -15
- package/lib/commons/color/color.js +224 -224
- package/lib/commons/color/element-has-image.js +14 -14
- package/lib/commons/color/element-is-distinct.js +56 -55
- package/lib/commons/color/filtered-rect-stack.js +32 -32
- package/lib/commons/color/flatten-colors.js +6 -6
- package/lib/commons/color/get-background-color.js +40 -40
- package/lib/commons/color/get-background-stack.js +71 -71
- package/lib/commons/color/get-contrast.js +9 -9
- package/lib/commons/color/get-foreground-color.js +34 -34
- package/lib/commons/color/get-own-background-color.js +7 -7
- package/lib/commons/color/get-rect-stack.js +14 -14
- package/lib/commons/color/get-text-shadow-colors.js +87 -87
- package/lib/commons/color/has-valid-contrast-ratio.js +10 -10
- package/lib/commons/color/incomplete-data.js +37 -37
- package/lib/commons/dom/find-elms-in-context.js +11 -11
- package/lib/commons/dom/find-up-virtual.js +31 -31
- package/lib/commons/dom/find-up.js +1 -1
- package/lib/commons/dom/focus-disabled.js +13 -13
- package/lib/commons/dom/get-composed-parent.js +14 -14
- package/lib/commons/dom/get-element-by-reference.js +18 -18
- package/lib/commons/dom/get-element-coordinates.js +12 -12
- package/lib/commons/dom/get-element-stack.js +10 -10
- package/lib/commons/dom/get-rect-stack.js +427 -427
- package/lib/commons/dom/get-scroll-offset.js +17 -17
- package/lib/commons/dom/get-tabbable-elements.js +9 -9
- package/lib/commons/dom/get-text-element-stack.js +49 -64
- package/lib/commons/dom/get-viewport-size.js +19 -19
- package/lib/commons/dom/has-content-virtual.js +29 -29
- package/lib/commons/dom/has-content.js +2 -2
- package/lib/commons/dom/idrefs.js +15 -15
- package/lib/commons/dom/inserted-into-focus-order.js +6 -6
- package/lib/commons/dom/is-focusable.js +12 -16
- package/lib/commons/dom/is-hidden-with-css.js +47 -47
- package/lib/commons/dom/is-html5.js +5 -5
- package/lib/commons/dom/is-in-text-block.js +74 -74
- package/lib/commons/dom/is-modal-open.js +78 -78
- package/lib/commons/dom/is-natively-focusable.js +22 -22
- package/lib/commons/dom/is-node.js +1 -1
- package/lib/commons/dom/is-offscreen.js +43 -43
- package/lib/commons/dom/is-opaque.js +4 -4
- package/lib/commons/dom/is-skip-link.js +27 -27
- package/lib/commons/dom/is-visible.js +147 -147
- package/lib/commons/dom/is-visual-content.js +33 -33
- package/lib/commons/dom/reduce-to-elements-below-floating.js +18 -18
- package/lib/commons/dom/shadow-elements-from-point.js +29 -29
- package/lib/commons/dom/url-props-from-attribute.js +100 -100
- package/lib/commons/dom/visually-contains.js +77 -77
- package/lib/commons/dom/visually-overlaps.js +29 -29
- package/lib/commons/forms/is-aria-combobox.js +2 -2
- package/lib/commons/forms/is-aria-listbox.js +2 -2
- package/lib/commons/forms/is-aria-range.js +2 -2
- package/lib/commons/forms/is-aria-textbox.js +2 -2
- package/lib/commons/forms/is-disabled.js +20 -20
- package/lib/commons/forms/is-native-select.js +3 -3
- package/lib/commons/forms/is-native-textbox.js +17 -17
- package/lib/commons/index.js +9 -9
- package/lib/commons/matches/attributes.js +4 -4
- package/lib/commons/matches/condition.js +1 -1
- package/lib/commons/matches/explicit-role.js +1 -1
- package/lib/commons/matches/from-definition.js +30 -30
- package/lib/commons/matches/from-function.js +12 -12
- package/lib/commons/matches/from-primative.js +20 -20
- package/lib/commons/matches/implicit-role.js +1 -1
- package/lib/commons/matches/matches.js +1 -1
- package/lib/commons/matches/node-name.js +4 -4
- package/lib/commons/matches/properties.js +4 -4
- package/lib/commons/matches/semantic-role.js +1 -1
- package/lib/commons/standards/get-aria-roles-by-type.js +3 -3
- package/lib/commons/standards/get-aria-roles-supporting-name-from-content.js +8 -8
- package/lib/commons/standards/get-element-spec.js +42 -42
- package/lib/commons/standards/get-elements-by-content-type.js +15 -15
- package/lib/commons/standards/get-global-aria-attrs.js +8 -8
- package/lib/commons/standards/implicit-html-roles.js +140 -140
- package/lib/commons/table/get-all-cells.js +16 -16
- package/lib/commons/table/get-cell-position.js +15 -15
- package/lib/commons/table/get-headers.js +65 -72
- package/lib/commons/table/get-scope.js +42 -42
- package/lib/commons/table/is-column-header.js +1 -1
- package/lib/commons/table/is-data-cell.js +10 -10
- package/lib/commons/table/is-data-table.js +176 -176
- package/lib/commons/table/is-header.js +8 -8
- package/lib/commons/table/is-row-header.js +1 -1
- package/lib/commons/table/to-grid.js +20 -31
- package/lib/commons/table/traverse.js +55 -55
- package/lib/commons/text/accessible-text-virtual.js +90 -90
- package/lib/commons/text/accessible-text.js +2 -2
- package/lib/commons/text/form-control-value.js +112 -113
- package/lib/commons/text/has-unicode.js +17 -17
- package/lib/commons/text/index.js +4 -4
- package/lib/commons/text/is-human-interpretable.js +34 -34
- package/lib/commons/text/is-icon-ligature.js +194 -194
- package/lib/commons/text/is-valid-autocomplete.js +104 -104
- package/lib/commons/text/label-text.js +39 -39
- package/lib/commons/text/label-virtual.js +26 -26
- package/lib/commons/text/label.js +2 -2
- package/lib/commons/text/native-element-type.js +97 -97
- package/lib/commons/text/native-text-alternative.js +19 -19
- package/lib/commons/text/native-text-methods.js +113 -113
- package/lib/commons/text/remove-unicode.js +15 -15
- package/lib/commons/text/sanitize.js +8 -8
- package/lib/commons/text/subtree-text.js +89 -47
- package/lib/commons/text/title-text.js +14 -14
- package/lib/commons/text/unicode.js +56 -56
- package/lib/commons/text/unsupported.js +1 -1
- package/lib/commons/text/visible-text-nodes.js +12 -12
- package/lib/commons/text/visible-virtual.js +21 -21
- package/lib/commons/text/visible.js +2 -2
- package/lib/core/base/audit.js +613 -613
- package/lib/core/base/cache.js +22 -22
- package/lib/core/base/check-result.js +20 -20
- package/lib/core/base/check.js +132 -132
- package/lib/core/base/context.js +175 -179
- package/lib/core/base/metadata-function-map.js +167 -179
- package/lib/core/base/rule-result.js +25 -25
- package/lib/core/base/rule.js +473 -475
- package/lib/core/base/virtual-node/abstract-virtual-node.js +33 -37
- package/lib/core/base/virtual-node/serial-virtual-node.js +76 -85
- package/lib/core/base/virtual-node/virtual-node.js +151 -177
- package/lib/core/constants.js +50 -50
- package/lib/core/core.js +7 -11
- package/lib/core/imports/index.js +14 -14
- package/lib/core/index.js +21 -19
- package/lib/core/log.js +4 -4
- package/lib/core/public/cleanup.js +43 -41
- package/lib/core/public/configure.js +112 -112
- package/lib/core/public/get-rules.js +19 -19
- package/lib/core/public/load.js +49 -47
- package/lib/core/public/plugins.js +24 -22
- package/lib/core/public/reporter.js +12 -12
- package/lib/core/public/reset.js +6 -6
- package/lib/core/public/run-rules.js +76 -61
- package/lib/core/public/run-virtual-rule.js +42 -47
- package/lib/core/public/run.js +154 -154
- package/lib/core/reporters/helpers/failure-summary.js +22 -22
- package/lib/core/reporters/helpers/get-environment-data.js +29 -29
- package/lib/core/reporters/helpers/incomplete-fallback-msg.js +3 -3
- package/lib/core/reporters/helpers/index.js +8 -8
- package/lib/core/reporters/helpers/process-aggregate.js +69 -69
- package/lib/core/reporters/na.js +16 -16
- package/lib/core/reporters/no-passes.js +12 -12
- package/lib/core/reporters/raw-env.js +9 -9
- package/lib/core/reporters/raw.js +24 -24
- package/lib/core/reporters/v1.js +23 -23
- package/lib/core/reporters/v2.js +13 -13
- package/lib/core/utils/aggregate-checks.js +63 -63
- package/lib/core/utils/aggregate-node-results.js +44 -44
- package/lib/core/utils/aggregate-result.js +24 -24
- package/lib/core/utils/aggregate.js +6 -6
- package/lib/core/utils/are-styles-set.js +14 -14
- package/lib/core/utils/assert.js +3 -3
- package/lib/core/utils/check-helper.js +23 -23
- package/lib/core/utils/clone.js +18 -18
- package/lib/core/utils/closest.js +12 -12
- package/lib/core/utils/collect-results-from-frames.js +45 -63
- package/lib/core/utils/contains.js +29 -29
- package/lib/core/utils/css-parser.js +0 -1
- package/lib/core/utils/deep-merge.js +18 -18
- package/lib/core/utils/dq-element.js +88 -88
- package/lib/core/utils/element-matches.js +29 -29
- package/lib/core/utils/escape-selector.js +63 -63
- package/lib/core/utils/extend-meta-data.js +11 -11
- package/lib/core/utils/finalize-result.js +13 -15
- package/lib/core/utils/find-by.js +3 -3
- package/lib/core/utils/get-all-checks.js +5 -5
- package/lib/core/utils/get-ancestry.js +16 -16
- package/lib/core/utils/get-base-lang.js +7 -7
- package/lib/core/utils/get-check-message.js +9 -9
- package/lib/core/utils/get-check-option.js +26 -26
- package/lib/core/utils/get-flattened-tree.js +88 -88
- package/lib/core/utils/get-friendly-uri-end.js +87 -87
- package/lib/core/utils/get-node-attributes.js +9 -10
- package/lib/core/utils/get-node-from-tree.js +2 -2
- package/lib/core/utils/get-root-node.js +6 -6
- package/lib/core/utils/get-scroll-state.js +26 -26
- package/lib/core/utils/get-scroll.js +26 -26
- package/lib/core/utils/get-selector.js +256 -256
- package/lib/core/utils/get-shadow-selector.js +19 -19
- package/lib/core/utils/get-stylesheet-factory.js +32 -32
- package/lib/core/utils/get-xpath.js +65 -65
- package/lib/core/utils/index.js +3 -6
- package/lib/core/utils/inject-style.js +24 -24
- package/lib/core/utils/is-hidden.js +41 -41
- package/lib/core/utils/is-html-element.js +122 -122
- package/lib/core/utils/is-node-in-context.js +24 -24
- package/lib/core/utils/is-shadow-root.js +28 -28
- package/lib/core/utils/is-xhtml.js +4 -4
- package/lib/core/utils/matches.js +170 -176
- package/lib/core/utils/memoize.js +7 -7
- package/lib/core/utils/merge-results.js +91 -91
- package/lib/core/utils/node-sorter.js +11 -11
- package/lib/core/utils/parse-crossorigin-stylesheet.js +41 -41
- package/lib/core/utils/parse-sameorigin-stylesheet.js +70 -70
- package/lib/core/utils/parse-stylesheet.js +41 -41
- package/lib/core/utils/performance-timer.js +112 -112
- package/lib/core/utils/pollyfills.js +263 -263
- package/lib/core/utils/preload-cssom.js +134 -134
- package/lib/core/utils/preload-media.js +42 -42
- package/lib/core/utils/preload.js +110 -110
- package/lib/core/utils/process-message.js +43 -45
- package/lib/core/utils/publish-metadata.js +68 -68
- package/lib/core/utils/query-selector-all-filter.js +77 -79
- package/lib/core/utils/query-selector-all.js +1 -1
- package/lib/core/utils/queue.js +113 -113
- package/lib/core/utils/respondable.js +218 -119
- package/lib/core/utils/rule-should-run.js +53 -53
- package/lib/core/utils/select.js +54 -54
- package/lib/core/utils/send-command-to-frame.js +43 -43
- package/lib/core/utils/set-scroll-state.js +7 -7
- package/lib/core/utils/to-array.js +1 -1
- package/lib/core/utils/token-list.js +4 -4
- package/lib/core/utils/unique-array.js +3 -3
- package/lib/core/utils/uuid.js +161 -170
- package/lib/core/utils/valid-input-type.js +25 -25
- package/lib/core/utils/valid-langs.js +30 -30
- package/lib/misc/any-failure-summary.json +4 -4
- package/lib/misc/incomplete-fallback.json +1 -1
- package/lib/misc/none-failure-summary.json +4 -4
- package/lib/rules/accesskeys.json +11 -11
- package/lib/rules/area-alt.json +20 -20
- package/lib/rules/aria-allowed-attr-matches.js +13 -11
- package/lib/rules/aria-allowed-attr.json +10 -10
- package/lib/rules/aria-allowed-role-matches.js +6 -6
- package/lib/rules/aria-allowed-role.json +12 -12
- package/lib/rules/aria-command-name.json +16 -16
- package/lib/rules/aria-dialog-name.json +11 -11
- package/lib/rules/aria-has-attr-matches.js +10 -10
- package/lib/rules/aria-hidden-body.json +12 -12
- package/lib/rules/aria-hidden-focus-matches.js +8 -8
- package/lib/rules/aria-hidden-focus.json +16 -16
- package/lib/rules/aria-input-field-name.json +11 -11
- package/lib/rules/aria-meter-name.json +11 -11
- package/lib/rules/aria-progressbar-name.json +11 -11
- package/lib/rules/aria-required-attr.json +10 -10
- package/lib/rules/aria-required-children.json +10 -11
- package/lib/rules/aria-required-parent.json +10 -11
- package/lib/rules/aria-roledescription.json +10 -10
- package/lib/rules/aria-roles.json +11 -11
- package/lib/rules/aria-toggle-field-name.json +16 -16
- package/lib/rules/aria-tooltip-name.json +16 -16
- package/lib/rules/aria-treeitem-name.json +16 -16
- package/lib/rules/aria-valid-attr-value.json +10 -10
- package/lib/rules/aria-valid-attr.json +10 -10
- package/lib/rules/audio-caption.json +18 -18
- package/lib/rules/autocomplete-matches.js +50 -50
- package/lib/rules/autocomplete-valid.json +10 -10
- package/lib/rules/avoid-inline-spacing.json +10 -10
- package/lib/rules/blink.json +17 -17
- package/lib/rules/button-name.json +24 -24
- package/lib/rules/bypass-matches.js +7 -7
- package/lib/rules/bypass.json +18 -19
- package/lib/rules/color-contrast-matches.js +137 -145
- package/lib/rules/color-contrast.json +11 -11
- package/lib/rules/css-orientation-lock.json +11 -11
- package/lib/rules/data-table-large-matches.js +10 -10
- package/lib/rules/data-table-matches.js +1 -1
- package/lib/rules/definition-list.json +11 -11
- package/lib/rules/dlitem.json +11 -11
- package/lib/rules/document-title.json +11 -11
- package/lib/rules/duplicate-id-active-matches.js +6 -6
- package/lib/rules/duplicate-id-active.json +12 -12
- package/lib/rules/duplicate-id-aria-matches.js +1 -1
- package/lib/rules/duplicate-id-aria.json +12 -12
- package/lib/rules/duplicate-id-misc-matches.js +8 -8
- package/lib/rules/duplicate-id.json +12 -12
- package/lib/rules/empty-heading.json +17 -17
- package/lib/rules/focus-order-semantics.json +11 -11
- package/lib/rules/form-field-multiple-labels.json +11 -11
- package/lib/rules/frame-tested.json +10 -10
- package/lib/rules/frame-title-has-text-matches.js +2 -2
- package/lib/rules/frame-title-unique.json +11 -11
- package/lib/rules/frame-title.json +22 -22
- package/lib/rules/heading-matches.js +14 -14
- package/lib/rules/heading-order.json +11 -11
- package/lib/rules/hidden-content.json +11 -11
- package/lib/rules/html-has-lang.json +11 -11
- package/lib/rules/html-lang-valid.json +10 -10
- package/lib/rules/html-namespace-matches.js +1 -1
- package/lib/rules/html-xml-lang-mismatch.json +11 -11
- package/lib/rules/identical-links-same-purpose-matches.js +9 -9
- package/lib/rules/identical-links-same-purpose.json +12 -12
- package/lib/rules/image-alt.json +24 -24
- package/lib/rules/img-redundant-alt.json +10 -10
- package/lib/rules/input-button-name.json +24 -24
- package/lib/rules/input-image-alt.json +18 -18
- package/lib/rules/inserted-into-focus-order-matches.js +1 -1
- package/lib/rules/is-initiator-matches.js +1 -1
- package/lib/rules/label-content-name-mismatch-matches.js +38 -38
- package/lib/rules/label-content-name-mismatch.json +10 -10
- package/lib/rules/label-matches.js +10 -10
- package/lib/rules/label-title-only.json +11 -11
- package/lib/rules/label.json +27 -27
- package/lib/rules/landmark-banner-is-top-level.json +11 -11
- package/lib/rules/landmark-complementary-is-top-level.json +10 -10
- package/lib/rules/landmark-contentinfo-is-top-level.json +11 -11
- package/lib/rules/landmark-has-body-context-matches.js +6 -6
- package/lib/rules/landmark-main-is-top-level.json +10 -10
- package/lib/rules/landmark-no-duplicate-banner.json +10 -10
- package/lib/rules/landmark-no-duplicate-contentinfo.json +10 -10
- package/lib/rules/landmark-no-duplicate-main.json +10 -10
- package/lib/rules/landmark-one-main.json +10 -10
- package/lib/rules/landmark-unique-matches.js +36 -36
- package/lib/rules/landmark-unique.json +11 -11
- package/lib/rules/layout-table-matches.js +2 -1
- package/lib/rules/link-in-text-block-matches.js +12 -12
- package/lib/rules/link-in-text-block.json +12 -12
- package/lib/rules/link-name.json +23 -23
- package/lib/rules/list.json +11 -11
- package/lib/rules/listitem.json +11 -11
- package/lib/rules/marquee.json +11 -11
- package/lib/rules/meta-refresh.json +18 -18
- package/lib/rules/meta-viewport-large.json +11 -11
- package/lib/rules/meta-viewport.json +11 -11
- package/lib/rules/no-autoplay-audio-matches.js +16 -16
- package/lib/rules/no-autoplay-audio.json +13 -13
- package/lib/rules/no-empty-role-matches.js +7 -7
- package/lib/rules/no-explicit-name-required-matches.js +9 -9
- package/lib/rules/no-naming-method-matches.js +12 -12
- package/lib/rules/no-role-matches.js +1 -1
- package/lib/rules/not-html-matches.js +2 -2
- package/lib/rules/object-alt.json +22 -22
- package/lib/rules/p-as-heading-matches.js +14 -14
- package/lib/rules/p-as-heading.json +11 -11
- package/lib/rules/page-has-heading-one.json +10 -10
- package/lib/rules/presentation-role-conflict.json +10 -10
- package/lib/rules/region.json +10 -10
- package/lib/rules/role-img-alt.json +18 -18
- package/lib/rules/scope-attr-valid.json +10 -10
- package/lib/rules/scrollable-region-focusable-matches.js +59 -59
- package/lib/rules/scrollable-region-focusable.json +10 -10
- package/lib/rules/select-name.json +25 -25
- package/lib/rules/server-side-image-map.json +16 -16
- package/lib/rules/skip-link-matches.js +1 -1
- package/lib/rules/skip-link.json +11 -11
- package/lib/rules/svg-img-alt.json +23 -23
- package/lib/rules/svg-namespace-matches.js +10 -10
- package/lib/rules/tabindex.json +10 -10
- package/lib/rules/table-duplicate-name.json +10 -10
- package/lib/rules/table-fake-caption.json +18 -18
- package/lib/rules/td-has-header.json +18 -18
- package/lib/rules/td-headers-attr.json +10 -10
- package/lib/rules/th-has-data-cells.json +11 -11
- package/lib/rules/valid-lang.json +11 -11
- package/lib/rules/video-caption.json +17 -17
- package/lib/rules/window-is-top-matches.js +3 -3
- package/lib/rules/xml-lang-mismatch-matches.js +6 -6
- package/lib/standards/aria-attrs.js +195 -204
- package/lib/standards/aria-roles.js +781 -812
- package/lib/standards/css-colors.js +148 -148
- package/lib/standards/dpub-roles.js +213 -214
- package/lib/standards/html-elms.js +912 -914
- package/lib/standards/index.js +16 -18
- package/locales/de.json +572 -909
- package/package.json +151 -174
- package/sri-history.json +1 -5
- package/typings/axe-core/axe-core-tests.ts +144 -144
- package/.eslintrc.js +0 -111
- package/lib/checks/aria/aria-prohibited-attr-evaluate.js +0 -67
- package/lib/checks/aria/aria-prohibited-attr.json +0 -12
- package/lib/checks/keyboard/frame-focusable-content.json +0 -12
- package/lib/checks/keyboard/no-focusable-content-evaluate.js +0 -35
- package/lib/checks/keyboard/no-focusable-content.json +0 -12
- package/lib/core/public/setup.js +0 -20
- package/lib/core/public/teardown.js +0 -21
- package/lib/core/utils/filter-html-attrs.js +0 -75
- package/lib/core/utils/get-rule.js +0 -17
- package/lib/core/utils/respondable/assert-window.js +0 -21
- package/lib/core/utils/respondable/callback-store.js +0 -36
- package/lib/core/utils/respondable/message-id.js +0 -22
- package/lib/core/utils/respondable/message-parser.js +0 -109
- package/lib/core/utils/respondable/post.js +0 -32
- package/lib/rules/aria-required-children-matches.js +0 -8
- package/lib/rules/aria-required-parent-matches.js +0 -8
- package/lib/rules/aria-text.json +0 -12
- package/lib/rules/empty-table-header.json +0 -13
- package/lib/rules/frame-focusable-content-matches.js +0 -9
- package/lib/rules/frame-focusable-content.json +0 -13
- package/lib/rules/nested-interactive-matches.js +0 -13
- package/lib/rules/nested-interactive.json +0 -12
- package/lib/standards/graphics-roles.js +0 -22
- package/locales/pl.json +0 -911
package/CHANGELOG.md
CHANGED
|
@@ -2,52 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
-
### [4.1.2-canary.ec00dc7](https://github.com/dequelabs/axe-core/compare/v4.1.2...v4.1.2-canary.ec00dc7) (2021-03-05)
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
### Features
|
|
9
|
-
|
|
10
|
-
* **aria-allowed-attr:** add ARIA 1.2 prohibited attrs check ([#2764](https://github.com/dequelabs/axe-core/issues/2764)) ([4a77e88](https://github.com/dequelabs/axe-core/commit/4a77e881302f7db2750fa36a573fc26d123f7388))
|
|
11
|
-
* **empty-table-header:** new rule to flag empty table headers ([#2811](https://github.com/dequelabs/axe-core/issues/2811)) ([813ee7e](https://github.com/dequelabs/axe-core/commit/813ee7efdf77a55a1c09a3b8836007917ead91b5))
|
|
12
|
-
* **frame-focusable-content:** new rule to test iframes with tabindex=-1 do not have focusable content ([#2785](https://github.com/dequelabs/axe-core/issues/2785)) ([aeb044c](https://github.com/dequelabs/axe-core/commit/aeb044c26908b44490bad160add8c3e6327ce759))
|
|
13
|
-
* **locale:** missing translations for DE ([#2704](https://github.com/dequelabs/axe-core/issues/2704)) ([f312994](https://github.com/dequelabs/axe-core/commit/f312994a63bd239b42cf3177af9d43fc190b1d3c))
|
|
14
|
-
* **locale:** Polish translation ([#2677](https://github.com/dequelabs/axe-core/issues/2677)) ([c46979f](https://github.com/dequelabs/axe-core/commit/c46979ff93a8c1bd5d9d73f1b4d3edcab046582b))
|
|
15
|
-
* **nested-interactive:** new rule to flag nested interactive elements ([#2691](https://github.com/dequelabs/axe-core/issues/2691)) ([13a7cf1](https://github.com/dequelabs/axe-core/commit/13a7cf12ad7f3f895a4c41c50b65bf71be12ea47))
|
|
16
|
-
* **role-text:** add role-text rule ([#2702](https://github.com/dequelabs/axe-core/issues/2702)) ([7c05162](https://github.com/dequelabs/axe-core/commit/7c05162a3856c0f19514c9a87ca1c15aa5485b45))
|
|
17
|
-
* **setup/teardown:** add functions to setup and teardown axe-core internal data, deprecate axe._tree ([#2738](https://github.com/dequelabs/axe-core/issues/2738)) ([9d19f24](https://github.com/dequelabs/axe-core/commit/9d19f24f86f2028753ce944beeda9866b0274e7b))
|
|
18
|
-
* **standards:** add graphics roles ([#2761](https://github.com/dequelabs/axe-core/issues/2761)) ([22032cc](https://github.com/dequelabs/axe-core/commit/22032cc3051e74ad8c12c27039e9fb0a9f07e9d1))
|
|
19
|
-
* **standards/aria-roles:** add presentational children property ([#2689](https://github.com/dequelabs/axe-core/issues/2689)) ([78c239c](https://github.com/dequelabs/axe-core/commit/78c239cd6e3960e85cf900bc0fe511e3846c1c96))
|
|
20
|
-
* **utils.getRule:** add function to get rule by id ([#2724](https://github.com/dequelabs/axe-core/issues/2724)) ([9d0af53](https://github.com/dequelabs/axe-core/commit/9d0af53192450f442d073c13313ff1d865f68935))
|
|
21
|
-
* **utils/matches:** support selectors level 4 :not and :is ([#2742](https://github.com/dequelabs/axe-core/issues/2742)) ([21d9b0e](https://github.com/dequelabs/axe-core/commit/21d9b0ea4348d353dc85cacfb3fcace5eac6e4ca))
|
|
22
|
-
* **virtual-node:** add attrNames property which returns list of attribute names ([#2741](https://github.com/dequelabs/axe-core/issues/2741)) ([1d864b4](https://github.com/dequelabs/axe-core/commit/1d864b4600fd88b06c8b5776bf891cf9bc402b60))
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
### Bug Fixes
|
|
26
|
-
|
|
27
|
-
* **aria-allowed-attr:** error when generic elements use aria-label and aria-labelledy ([#2766](https://github.com/dequelabs/axe-core/issues/2766)) ([64379e1](https://github.com/dequelabs/axe-core/commit/64379e1732fac6ccb0f9f2abfb8c36e22cbba9ef))
|
|
28
|
-
* **aria-required-children:** allow group and rowgroup roles ([#2661](https://github.com/dequelabs/axe-core/issues/2661)) ([5a264e4](https://github.com/dequelabs/axe-core/commit/5a264e48e800bb9a783b2597e723ec9529d6d798))
|
|
29
|
-
* **aria-required-children:** only match for roles that require children ([#2703](https://github.com/dequelabs/axe-core/issues/2703)) ([95de169](https://github.com/dequelabs/axe-core/commit/95de1698596ab5138d553836c90c422566d0527d))
|
|
30
|
-
* **aria-required-parent:** only match for roles that require parents ([#2707](https://github.com/dequelabs/axe-core/issues/2707)) ([ce8281e](https://github.com/dequelabs/axe-core/commit/ce8281e6d45c6888d238ea33c2d39f4c67e8b267))
|
|
31
|
-
* **aria-valid-attr-value:** pass for aria-errormessage when aria-invalid is not set or false ([#2721](https://github.com/dequelabs/axe-core/issues/2721)) ([93a765c](https://github.com/dequelabs/axe-core/commit/93a765c372b29a0764872f50f044bfbabed68207))
|
|
32
|
-
* **aria-valid-attr-value:** report when aria-labelledby ref is not in DOM ([#2723](https://github.com/dequelabs/axe-core/issues/2723)) ([116eb06](https://github.com/dequelabs/axe-core/commit/116eb06101ea49a02dbd3e86d2f91ac51e8fe9a9))
|
|
33
|
-
* **aria-valid-attr-value:** return false when int type attribute uses invalid values ([#2710](https://github.com/dequelabs/axe-core/issues/2710)) ([ce9917e](https://github.com/dequelabs/axe-core/commit/ce9917e9dad91f526e9f0da99dcc347ff759e3bd))
|
|
34
|
-
* **bypass:** mark as needs review rather than failure ([#2818](https://github.com/dequelabs/axe-core/issues/2818)) ([bb41b3e](https://github.com/dequelabs/axe-core/commit/bb41b3e89a22a69c5cb6fbd07e808291687343e5))
|
|
35
|
-
* **color-contrast:** account for text client rects that start outside the parent container ([#2682](https://github.com/dequelabs/axe-core/issues/2682)) ([a4e4a34](https://github.com/dequelabs/axe-core/commit/a4e4a344cea70308d0a59a04411f6da88b80b00b))
|
|
36
|
-
* **color-contrast-matches:** do not pass empty string to getElementById ([#2739](https://github.com/dequelabs/axe-core/issues/2739)) ([0b0fec2](https://github.com/dequelabs/axe-core/commit/0b0fec285d7df8675c8f5ecc42519f3734d70f72))
|
|
37
|
-
* **frame-title:** update rule description to be more descriptive ([#2735](https://github.com/dequelabs/axe-core/issues/2735)) ([159e25b](https://github.com/dequelabs/axe-core/commit/159e25b45eb22498e7ab20d31f353b182b2cd1d7))
|
|
38
|
-
* do not allow postMessage with axe version of x.y.z ([#2790](https://github.com/dequelabs/axe-core/issues/2790)) ([5acda82](https://github.com/dequelabs/axe-core/commit/5acda82fbb61d07f5036169008a08e2e1be3d155))
|
|
39
|
-
* **heading-order:** allow partial context to pass ([#2622](https://github.com/dequelabs/axe-core/issues/2622)) ([f8baee6](https://github.com/dequelabs/axe-core/commit/f8baee68fa5220d54399a347322c6c8ac4f26cb9))
|
|
40
|
-
* add noHtml to axe.configure ([#2789](https://github.com/dequelabs/axe-core/issues/2789)) ([5c8dec8](https://github.com/dequelabs/axe-core/commit/5c8dec83a790aba273f8f921007dc7f0a0904851))
|
|
41
|
-
* avoid 'undefined' showing in check messages ([#2779](https://github.com/dequelabs/axe-core/issues/2779)) ([3beb0b1](https://github.com/dequelabs/axe-core/commit/3beb0b1c7a4bcf599d4c10207a429e9ec38df698))
|
|
42
|
-
* **landmark-complementary-is-top-level:** allow aside inside main ([#2740](https://github.com/dequelabs/axe-core/issues/2740)) ([9388c96](https://github.com/dequelabs/axe-core/commit/9388c9657fdfd80b9a76961d95a2cde939413665))
|
|
43
|
-
* **metadata:** consistenct use of 'must' and 'should' ([#2770](https://github.com/dequelabs/axe-core/issues/2770)) ([603b612](https://github.com/dequelabs/axe-core/commit/603b612dfeb861b5fc08cf9605fed886c1d71107))
|
|
44
|
-
* **region:** allow role=alertdialog as region ([#2660](https://github.com/dequelabs/axe-core/issues/2660)) ([b928df7](https://github.com/dequelabs/axe-core/commit/b928df7f81bc1ed79946b472f5e71dea324a611c))
|
|
45
|
-
* **respondable:** Avoid message duplication with messageId ([#2816](https://github.com/dequelabs/axe-core/issues/2816)) ([4bd0acf](https://github.com/dequelabs/axe-core/commit/4bd0acf379fba2ef17679cacb70776e77e5f5e79))
|
|
46
|
-
* **select-name:** fix typo in accessible name help ([#2676](https://github.com/dequelabs/axe-core/issues/2676)) ([6b916b9](https://github.com/dequelabs/axe-core/commit/6b916b908f38c465e1b319b1b8f50c1a7c9df698))
|
|
47
|
-
* **to-grid/get-headers:** work with rowspan=0 ([#2722](https://github.com/dequelabs/axe-core/issues/2722)) ([508190b](https://github.com/dequelabs/axe-core/commit/508190b8e20873bc98bd0efb39d37bcb1cbcd92a))
|
|
48
|
-
* **types:** Add noHtml option ([#2810](https://github.com/dequelabs/axe-core/issues/2810)) ([c03c826](https://github.com/dequelabs/axe-core/commit/c03c82635c6e4228b94438d00f7ff8723303918c))
|
|
49
|
-
* **utils:** remove attributes from source string ([#2803](https://github.com/dequelabs/axe-core/issues/2803)) ([8e8c4fa](https://github.com/dequelabs/axe-core/commit/8e8c4faddbe95f979f0c03d1d44ccd148218379b))
|
|
50
|
-
|
|
51
5
|
### [4.1.2](https://github.com/dequelabs/axe-core/compare/v4.1.1...v4.1.2) (2021-02-08)
|
|
52
6
|
|
|
53
7
|
### Bug Fixes
|
package/CONTRIBUTING.md
CHANGED
|
@@ -11,28 +11,33 @@ Submitting code to the project? Please review and follow our
|
|
|
11
11
|
|
|
12
12
|
### Code Quality
|
|
13
13
|
|
|
14
|
-
Although we do not have official code style guidelines, we can and will request you to make changes
|
|
14
|
+
Although we do not have official code style guidelines, we can and will request you to make changes
|
|
15
|
+
if we think that your code is sloppy. You can take clues from the existing code base to see what we
|
|
16
|
+
consider to be reasonable code quality. Please be prepared to make changes that we ask of you even
|
|
17
|
+
if you might not agree with the request(s).
|
|
15
18
|
|
|
16
19
|
Please respect the coding style of the files you are changing and adhere to that.
|
|
17
20
|
|
|
18
|
-
The files in this project are formatted by [Prettier](https://prettier.io/)
|
|
21
|
+
The JavaScript files in this project are formatted by [Prettier](https://prettier.io/). Additionally, we prefer:
|
|
19
22
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
+
1. Tabs over spaces
|
|
24
|
+
2. Single quotes for string literals
|
|
25
|
+
3. Function definitions like `function functionName(arguments) {`
|
|
26
|
+
4. Variable function definitions like `Class.prototype.functionName = function (arguments) {`
|
|
27
|
+
5. Use of 'use strict'
|
|
28
|
+
6. Variables declared at the top of functions
|
|
23
29
|
|
|
24
30
|
### Shadow DOM
|
|
25
31
|
|
|
26
|
-
For any proposed changes to rules, checks, commons, or other APIs to be accepted
|
|
32
|
+
For any proposed changes to rules, checks, commons, or other APIs to be accepted
|
|
33
|
+
in axe-core, your code must support open Shadow DOM. See [API.md](./doc/API.md) and the
|
|
34
|
+
[developer guide](./doc/developer-guide.md) for documentation on the available methods
|
|
35
|
+
and test utilities. You can also look at existing tests for examples using our APIs.
|
|
27
36
|
|
|
28
37
|
### Testing
|
|
29
38
|
|
|
30
39
|
We expect all code to be 100% covered by tests. We don't have or want code coverage metrics but we will review tests and suggest changes when we think the test(s) do(es) not adequately exercise the code/code changes.
|
|
31
40
|
|
|
32
|
-
Tests should be added to the `test` directory using the same file path and name of the source file the test is for. For example, the source file `lib/commons/text/sanitize.js` should have a test file at `test/commons/text/sanitize.js`.
|
|
33
|
-
|
|
34
|
-
Axe uses Karma / Mocha / Chai as its testing framework.
|
|
35
|
-
|
|
36
41
|
### Documentation and Comments
|
|
37
42
|
|
|
38
43
|
Functions should contain a preceding comment block with [jsdoc](http://usejsdoc.org/) style documentation of the function. For example:
|
|
@@ -55,29 +60,31 @@ Classes should contain a jsdoc comment block for each attribute. For example:
|
|
|
55
60
|
* @param {Object} check CheckResult specification
|
|
56
61
|
*/
|
|
57
62
|
function CheckResult(check) {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
63
|
+
'use strict';
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* ID of the check. Unique in the context of a rule.
|
|
67
|
+
* @type {String}
|
|
68
|
+
*/
|
|
69
|
+
this.id = check.id;
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Any data passed by Check (by calling `this.data()`)
|
|
73
|
+
* @type {Mixed}
|
|
74
|
+
*/
|
|
75
|
+
this.data = null;
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Any node that is related to the Check, specified by calling `this.relatedNodes([HTMLElement...])` inside the Check
|
|
79
|
+
* @type {Array}
|
|
80
|
+
*/
|
|
81
|
+
this.relatedNodes = [];
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* The return value of the Check's evaluate function
|
|
85
|
+
* @type {Mixed}
|
|
86
|
+
*/
|
|
87
|
+
this.result = null;
|
|
81
88
|
}
|
|
82
89
|
```
|
|
83
90
|
|
|
@@ -91,96 +98,34 @@ Once the basic infrastructure is installed, from the repository root, do the fol
|
|
|
91
98
|
npm install
|
|
92
99
|
```
|
|
93
100
|
|
|
94
|
-
|
|
101
|
+
To run tests:
|
|
95
102
|
|
|
96
103
|
```console
|
|
97
|
-
|
|
104
|
+
grunt test
|
|
98
105
|
```
|
|
99
106
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
In order to run axe tests, `axe.js` must be built using `npm run build`. To run the unit tests:
|
|
107
|
+
To build the package:
|
|
103
108
|
|
|
104
109
|
```console
|
|
105
|
-
|
|
110
|
+
grunt build
|
|
106
111
|
```
|
|
107
112
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
```console
|
|
111
|
-
npm run develop
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
This will also rerun any tests that have been changed, and any changes to the axe source files will trigger a rerun of that files tests.
|
|
115
|
-
|
|
116
|
-
To run axe integration tests:
|
|
117
|
-
|
|
118
|
-
```console
|
|
119
|
-
npm run test:integration
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
Lastly, there are a few other tests that get run during the continuous integration process:
|
|
123
|
-
|
|
124
|
-
```console
|
|
125
|
-
# run the tests from `doc/examples/*` using the current local build of `axe.js`
|
|
126
|
-
npm run test:examples
|
|
127
|
-
|
|
128
|
-
# run the tests from `test/node`
|
|
129
|
-
npm run test:node
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
### Running and debugging specific unit tests
|
|
133
|
-
|
|
134
|
-
If you want to run a specific set of unit tests instead of all the unit tests, you can use one of the following commands:
|
|
135
|
-
|
|
136
|
-
```console
|
|
137
|
-
# run just the tests from `test/core`
|
|
138
|
-
npm run test:unit:core
|
|
139
|
-
|
|
140
|
-
# run just the tests from `test/commons`
|
|
141
|
-
npm run test:unit:commons
|
|
142
|
-
|
|
143
|
-
# run just the tests from `test/rule-matches`
|
|
144
|
-
npm run test:unit:rule-matches
|
|
145
|
-
|
|
146
|
-
# run just the tests from `test/checks`
|
|
147
|
-
npm run test:unit:checks
|
|
148
|
-
|
|
149
|
-
# run just the tests from `test/integration/rules`
|
|
150
|
-
npm run test:unit:integration
|
|
151
|
-
|
|
152
|
-
# run just the tests from `test/integration/api`
|
|
153
|
-
npm run test:unit:api
|
|
154
|
-
|
|
155
|
-
# run just the tests from `test/integration/virtual-rules`
|
|
156
|
-
npm run test:unit:virtual-rules
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
If you need to debug the unit tests in a browser, you can run:
|
|
113
|
+
## Using axe with TypeScript
|
|
160
114
|
|
|
161
|
-
|
|
162
|
-
npm run test:debug
|
|
163
|
-
```
|
|
115
|
+
### Axe Development
|
|
164
116
|
|
|
165
|
-
|
|
117
|
+
The TypeScript definition file for axe-core is distributed with this module and can be found in [axe.d.ts](./axe.d.ts). It currently supports TypeScript 2.0+.
|
|
166
118
|
|
|
167
|
-
|
|
119
|
+
To maintain axe support for TypeScript you must first install it (globally recommended):
|
|
168
120
|
|
|
169
121
|
```console
|
|
170
|
-
|
|
171
|
-
npm run test:debug -- testDirs=core,commons
|
|
122
|
+
sudo npm -g install typescript
|
|
172
123
|
```
|
|
173
124
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
### Axe Development
|
|
177
|
-
|
|
178
|
-
The TypeScript definition file for axe-core is distributed with this module and can be found in [axe.d.ts](./axe.d.ts). It currently supports TypeScript 2.0+.
|
|
179
|
-
|
|
180
|
-
You can run TypeScript definition tests using the following command:
|
|
125
|
+
Once that's installed, you can run TypeScript definition tests (with the optional `--noImplicitAny` flag):
|
|
181
126
|
|
|
182
127
|
```console
|
|
183
|
-
|
|
128
|
+
tsc --noImplicitAny typings/axe-core/axe-core-tests.ts
|
|
184
129
|
```
|
|
185
130
|
|
|
186
131
|
## Including axe's type definition in tests
|
|
@@ -191,12 +136,12 @@ Installing axe to run accessibility tests in your TypeScript project should be a
|
|
|
191
136
|
import * as axe from 'axe-core';
|
|
192
137
|
|
|
193
138
|
describe('Module', () => {
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
139
|
+
it('should have no accessibility violations', done => {
|
|
140
|
+
axe.run(compiledFixture).then(results => {
|
|
141
|
+
expect(results.violations.length).toBe(0);
|
|
142
|
+
done();
|
|
143
|
+
}, done);
|
|
144
|
+
});
|
|
200
145
|
});
|
|
201
146
|
```
|
|
202
147
|
|
package/README.md
CHANGED
|
@@ -5,20 +5,30 @@
|
|
|
5
5
|
[](https://www.npmjs.com/package/axe-core)
|
|
6
6
|
[](https://github.com/dequelabs/axe-core/commits/develop)
|
|
7
7
|
[](https://github.com/dequelabs/axe-core/graphs/contributors)
|
|
8
|
-
[](https://accessibility.deque.com/axe-community)
|
|
9
|
-
[](http://packagequality.com/#?package=axe-core)
|
|
8
|
+
[](https://accessibility.deque.com/axe-community)[](http://packagequality.com/#?package=axe-core)
|
|
10
9
|
|
|
11
10
|
Axe is an accessibility testing engine for websites and other HTML-based user interfaces. It's fast, secure, lightweight, and was built to seamlessly integrate with any existing test environment so you can automate accessibility testing alongside your regular functional testing.
|
|
12
11
|
|
|
13
12
|
[Sign up for axe news](https://hubs.ly/H0fsN0b0) to get the latest on axe features, future releases, and events.
|
|
14
13
|
|
|
15
|
-
##
|
|
14
|
+
## Philosophy
|
|
15
|
+
|
|
16
|
+
The web can only become an accessible, inclusive space if developers are empowered to take responsibility for accessibility testing and accessible coding practices.
|
|
17
|
+
|
|
18
|
+
Automated accessibility testing is a huge timesaver, it doesn't require special expertise, and it allows teams to focus expert resources on the accessibility issues that really need them. Unfortunately, most accessibility tools are meant to be run on sites and applications that have reached the end of the development process and often don't give clear or consistent results, causing frustration and delays just when you thought your product was ready to ship.
|
|
16
19
|
|
|
17
|
-
Axe
|
|
20
|
+
Axe was built to reflect how web development actually works. It works with all modern browsers, tools, and testing environments a dev team might use. With axe, accessibility testing can be performed as part of your unit testing, integration testing, browser testing, and any other functional testing your team already performs on a day-to-day basis. Building accessibility testing into the early development process saves time, resources, and all kinds of frustration.
|
|
18
21
|
|
|
19
|
-
|
|
22
|
+
## About axe - our Manifesto
|
|
20
23
|
|
|
21
|
-
|
|
24
|
+
- Axe is open source.
|
|
25
|
+
- It returns zero false positives (bugs notwithstanding).
|
|
26
|
+
- It's designed to work on all modern browsers and with whatever tools, frameworks, libraries and environments you use today.
|
|
27
|
+
- It's actively supported by [Deque Systems](https://www.deque.com), a major accessibility vendor.
|
|
28
|
+
- It integrates with your existing functional/acceptance automated tests.
|
|
29
|
+
- It automatically determines which rules to run based on the evaluation context.
|
|
30
|
+
- Axe supports in-memory fixtures, static fixtures, integration tests and iframes of infinite depth.
|
|
31
|
+
- Axe is highly configurable.
|
|
22
32
|
|
|
23
33
|
## Getting started
|
|
24
34
|
|
|
@@ -38,36 +48,17 @@ Now insert calls at each point in your tests where a new piece of UI becomes vis
|
|
|
38
48
|
|
|
39
49
|
```js
|
|
40
50
|
axe
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
51
|
+
.run()
|
|
52
|
+
.then(results => {
|
|
53
|
+
if (results.violations.length) {
|
|
54
|
+
throw new Error('Accessibility issues found');
|
|
55
|
+
}
|
|
56
|
+
})
|
|
57
|
+
.catch(err => {
|
|
58
|
+
console.error('Something bad happened:', err.message);
|
|
59
|
+
});
|
|
50
60
|
```
|
|
51
61
|
|
|
52
|
-
## Philosophy
|
|
53
|
-
|
|
54
|
-
The web can only become an accessible, inclusive space if developers are empowered to take responsibility for accessibility testing and accessible coding practices.
|
|
55
|
-
|
|
56
|
-
Automated accessibility testing is a huge timesaver, it doesn't require special expertise, and it allows teams to focus expert resources on the accessibility issues that really need them. Unfortunately, most accessibility tools are meant to be run on sites and applications that have reached the end of the development process and often don't give clear or consistent results, causing frustration and delays just when you thought your product was ready to ship.
|
|
57
|
-
|
|
58
|
-
Axe was built to reflect how web development actually works. It works with all modern browsers, tools, and testing environments a dev team might use. With axe, accessibility testing can be performed as part of your unit testing, integration testing, browser testing, and any other functional testing your team already performs on a day-to-day basis. Building accessibility testing into the early development process saves time, resources, and all kinds of frustration.
|
|
59
|
-
|
|
60
|
-
## About axe - our Manifesto
|
|
61
|
-
|
|
62
|
-
- Axe is open source.
|
|
63
|
-
- It returns zero false positives (bugs notwithstanding).
|
|
64
|
-
- It's designed to work on all modern browsers and with whatever tools, frameworks, libraries and environments you use today.
|
|
65
|
-
- It's actively supported by [Deque Systems](https://www.deque.com), a major accessibility vendor.
|
|
66
|
-
- It integrates with your existing functional/acceptance automated tests.
|
|
67
|
-
- It automatically determines which rules to run based on the evaluation context.
|
|
68
|
-
- Axe supports in-memory fixtures, static fixtures, integration tests and iframes of infinite depth.
|
|
69
|
-
- Axe is highly configurable.
|
|
70
|
-
|
|
71
62
|
## Supported Browsers
|
|
72
63
|
|
|
73
64
|
The [axe-core API](doc/API.md) fully supports the following browsers:
|
|
@@ -76,7 +67,7 @@ The [axe-core API](doc/API.md) fully supports the following browsers:
|
|
|
76
67
|
- Google Chrome v42 and above
|
|
77
68
|
- Mozilla Firefox v38 and above
|
|
78
69
|
- Apple Safari v7 and above
|
|
79
|
-
- Internet Explorer
|
|
70
|
+
- Internet Explorer v9, 10, 11
|
|
80
71
|
|
|
81
72
|
Support means that we will fix bugs and attempt to test each browser regularly. Only Firefox, Chrome, and Internet Explorer 11 are currently tested on every pull request.
|
|
82
73
|
|
|
@@ -84,6 +75,10 @@ There is limited support for JSDOM. We will attempt to make all rules compatible
|
|
|
84
75
|
|
|
85
76
|
We can only support environments where features are either natively supported or polyfilled correctly. We do not support the deprecated v0 Shadow DOM implementation.
|
|
86
77
|
|
|
78
|
+
## The Accessibility Rules
|
|
79
|
+
|
|
80
|
+
The complete list of rules run by axe-core can be found in [doc/rule-descriptions.md](./doc/rule-descriptions.md).
|
|
81
|
+
|
|
87
82
|
## Contents of the API Package
|
|
88
83
|
|
|
89
84
|
The [axe-core API](doc/API.md) package consists of:
|
|
@@ -97,10 +92,6 @@ Axe can be built using your local language. To do so, a localization file must b
|
|
|
97
92
|
|
|
98
93
|
`grunt build --lang=nl`
|
|
99
94
|
|
|
100
|
-
or equivalently:
|
|
101
|
-
|
|
102
|
-
`npm run build -- --lang=nl`
|
|
103
|
-
|
|
104
95
|
This will create a new build for axe, called `axe.<lang>.js` and `axe.<lang>.min.js`. If you want to build localized versions, simply pass in `--all-lang` instead.
|
|
105
96
|
|
|
106
97
|
To create a new translation for axe, start by running `grunt translate --lang=<langcode>`. This will create a json file fin the `./locales` directory, with the default English text in it for you to translate. We welcome any localization for axe-core. For details on how to contribute, see the Contributing section below. For details on the message syntax, see [Check Message Template](/docs/check-message-template.md).
|
|
@@ -111,26 +102,26 @@ Additionally, locale can be applied at runtime by passing a `locale` object to `
|
|
|
111
102
|
|
|
112
103
|
```js
|
|
113
104
|
axe.configure({
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
105
|
+
locale: {
|
|
106
|
+
lang: 'de',
|
|
107
|
+
rules: {
|
|
108
|
+
accesskeys: {
|
|
109
|
+
help: 'Der Wert des accesskey-Attributes muss einzigartig sein.'
|
|
110
|
+
}
|
|
111
|
+
// ...
|
|
112
|
+
},
|
|
113
|
+
checks: {
|
|
114
|
+
abstractrole: {
|
|
115
|
+
fail: 'Abstrakte ARIA-Rollen dürfen nicht direkt verwendet werden.'
|
|
116
|
+
},
|
|
117
|
+
'aria-errormessage': {
|
|
118
|
+
// Note: doT (https://github.com/olado/dot) templates are supported here.
|
|
119
|
+
fail:
|
|
120
|
+
'Der Wert der aria-errormessage ${data.values}` muss eine Technik verwenden, um die Message anzukündigen (z. B., aria-live, aria-describedby, role=alert, etc.).'
|
|
121
|
+
}
|
|
122
|
+
// ...
|
|
123
|
+
}
|
|
124
|
+
}
|
|
134
125
|
});
|
|
135
126
|
```
|
|
136
127
|
|