@sa11y/preset-rules
Advanced tools
Comparing version 5.0.0 to 5.0.1
@@ -15,2 +15,3 @@ "use strict"; | ||
...new Map(Object.entries({ | ||
'color-contrast-enhanced': { priority: 'P3', wcagSC: '1.4.6', wcagLevel: 'AAA' }, | ||
'css-orientation-lock': { priority: 'P3', wcagSC: '1.3.4', wcagLevel: 'AA' }, | ||
@@ -24,2 +25,3 @@ 'focus-order-semantics': { priority: 'P3', wcagSC: '', wcagLevel: '' }, | ||
'link-in-text-block': { priority: 'P1', wcagSC: '1.4.1', wcagLevel: 'A' }, | ||
'meta-refresh-no-exceptions': { priority: 'P3', wcagSC: '', wcagLevel: '' }, | ||
'no-autoplay-audio': { priority: 'P1', wcagSC: '1.4.2', wcagLevel: 'A' }, | ||
@@ -31,2 +33,3 @@ 'p-as-heading': { priority: 'P2', wcagSC: '1.3.1', wcagLevel: 'A' }, | ||
'table-fake-caption': { priority: 'P3', wcagSC: '', wcagLevel: '' }, | ||
'target-size': { priority: 'P3', wcagSC: '2.5.5', wcagLevel: 'AAA' }, | ||
'td-has-header': { priority: 'P1', wcagSC: '1.3.1', wcagLevel: 'A' }, | ||
@@ -33,0 +36,0 @@ })), |
{ | ||
"name": "@sa11y/preset-rules", | ||
"version": "5.0.0", | ||
"version": "5.0.1", | ||
"description": "Accessibility preset rule configs for axe", | ||
@@ -24,7 +24,7 @@ "license": "BSD-3-Clause", | ||
"dependencies": { | ||
"@sa11y/common": "5.0.0" | ||
"@sa11y/common": "5.0.1" | ||
}, | ||
"devDependencies": { | ||
"@jest/globals": "28.1.3", | ||
"axe-core": "4.3.3", | ||
"axe-core": "4.7.0", | ||
"markdown-table-ts": "1.0.3" | ||
@@ -36,5 +36,5 @@ }, | ||
"engines": { | ||
"node": "^14 || ^16" | ||
"node": "^16" | ||
}, | ||
"gitHead": "53d478df849731168ec0963c6f76fcbd42ee8cd7" | ||
"gitHead": "bafb41ce5ac1176601092e82bf0f96be9459728a" | ||
} |
214
README.md
@@ -28,108 +28,112 @@ # `@sa11y/preset-rules` | ||
- Below is the set of rules from [axe rule descriptions](https://github.com/dequelabs/axe-core/blob/develop/doc/rule-descriptions.md) and their current mapping to the `base` and `extended` rulesets in `@sa11y/preset-rules`. | ||
- `base` contains WCAG 2.1 AA rules available in axe-core. | ||
- `extended` contains WCAG AAA rules, experimental rules and non-WCAG best-practice rules. | ||
- `full` ruleset consists of all rules that are enabled by default in axe. | ||
- The default ruleset used by the sa11y APIs is `base`. | ||
- This can be overridden using the `SA11Y_RULESET` environment variable. | ||
- The `SA11Y_RULESET_PRIORITY` environment variable can be used to select rules of specified priority in a ruleset. | ||
- Below is the set of rules from [axe rule descriptions](https://github.com/dequelabs/axe-core/blob/develop/doc/rule-descriptions.md) and their current mapping to the `base` and `extended` rulesets in `@sa11y/preset-rules`. | ||
- `base` contains WCAG 2.1 AA rules available in axe-core. | ||
- `extended` contains WCAG AAA rules, experimental rules and non-WCAG best-practice rules. | ||
- `full` ruleset consists of all rules that are enabled by default in axe. | ||
- The default ruleset used by the sa11y APIs is `base`. | ||
- This can be overridden using the `SA11Y_RULESET` process environment variable. | ||
- The `SA11Y_RULESET_PRIORITY` process environment variable can be used to select rules of specified priority in a ruleset. | ||
### Rules | ||
| Rule ID | Description | WCAG SC | WCAG Level | Priority | In Base ruleset | In Extended ruleset | | ||
| -------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ---------- | -------- | --------------- | ------------------- | | ||
| [accesskeys](https://dequeuniversity.com/rules/axe/4.3/accesskeys) | Ensures every accesskey attribute value is unique | 4.1.1 | A | P3 | ✅ | ✅ | | ||
| [area-alt](https://dequeuniversity.com/rules/axe/4.3/area-alt) | Ensures <area> elements of image maps have alternate text | 1.1.1 | A | P1 | ✅ | ✅ | | ||
| [aria-allowed-attr](https://dequeuniversity.com/rules/axe/4.3/aria-allowed-attr) | Ensures ARIA attributes are allowed for an element's role | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [aria-allowed-role](https://dequeuniversity.com/rules/axe/4.3/aria-allowed-role) | Ensures role attribute has an appropriate value for the element | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [aria-command-name](https://dequeuniversity.com/rules/axe/4.3/aria-command-name) | Ensures every ARIA button, link and menuitem has an accessible name | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [aria-dialog-name](https://dequeuniversity.com/rules/axe/4.3/aria-dialog-name) | Ensures every ARIA dialog and alertdialog node has an accessible name | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [aria-hidden-body](https://dequeuniversity.com/rules/axe/4.3/aria-hidden-body) | Ensures aria-hidden='true' is not present on the document body. | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [aria-hidden-focus](https://dequeuniversity.com/rules/axe/4.3/aria-hidden-focus) | Ensures aria-hidden elements do not contain focusable elements | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [aria-input-field-name](https://dequeuniversity.com/rules/axe/4.3/aria-input-field-name) | Ensures every ARIA input field has an accessible name | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [aria-meter-name](https://dequeuniversity.com/rules/axe/4.3/aria-meter-name) | Ensures every ARIA meter node has an accessible name | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [aria-progressbar-name](https://dequeuniversity.com/rules/axe/4.3/aria-progressbar-name) | Ensures every ARIA progressbar node has an accessible name | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [aria-required-attr](https://dequeuniversity.com/rules/axe/4.3/aria-required-attr) | Ensures elements with ARIA roles have all required ARIA attributes | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [aria-required-children](https://dequeuniversity.com/rules/axe/4.3/aria-required-children) | Ensures elements with an ARIA role that require child roles contain them | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [aria-required-parent](https://dequeuniversity.com/rules/axe/4.3/aria-required-parent) | Ensures elements with an ARIA role that require parent roles are contained by them | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [aria-roledescription](https://dequeuniversity.com/rules/axe/4.3/aria-roledescription) | Ensure aria-roledescription is only used on elements with an implicit or explicit role | 4.1.2 | A | P3 | ✅ | ✅ | | ||
| [aria-roles](https://dequeuniversity.com/rules/axe/4.3/aria-roles) | Ensures all elements with a role attribute use a valid value | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [aria-text](https://dequeuniversity.com/rules/axe/4.3/aria-text) | Ensures "role=text" is used on elements with no focusable descendants | 4.1.1 | A | P3 | ✅ | ✅ | | ||
| [aria-toggle-field-name](https://dequeuniversity.com/rules/axe/4.3/aria-toggle-field-name) | Ensures every ARIA toggle field has an accessible name | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [aria-tooltip-name](https://dequeuniversity.com/rules/axe/4.3/aria-tooltip-name) | Ensures every ARIA tooltip node has an accessible name | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [aria-treeitem-name](https://dequeuniversity.com/rules/axe/4.3/aria-treeitem-name) | Ensures every ARIA treeitem node has an accessible name | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [aria-valid-attr](https://dequeuniversity.com/rules/axe/4.3/aria-valid-attr) | Ensures attributes that begin with aria- are valid ARIA attributes | 4.1.2 | A | P3 | ✅ | ✅ | | ||
| [aria-valid-attr-value](https://dequeuniversity.com/rules/axe/4.3/aria-valid-attr-value) | Ensures all ARIA attributes have valid values | 4.1.2 | A | P3 | ✅ | ✅ | | ||
| [audio-caption](https://dequeuniversity.com/rules/axe/4.3/audio-caption) | Ensures <audio> elements have captions | 1.2.2 | A | P1 | ✅ | ✅ | | ||
| [autocomplete-valid](https://dequeuniversity.com/rules/axe/4.3/autocomplete-valid) | Ensure the autocomplete attribute is correct and suitable for the form field | 1.3.5 | AA | P2 | ✅ | ✅ | | ||
| [avoid-inline-spacing](https://dequeuniversity.com/rules/axe/4.3/avoid-inline-spacing) | Ensure that text spacing set through style attributes can be adjusted with custom stylesheets | 1.4.12 | AA | P3 | ✅ | ✅ | | ||
| [blink](https://dequeuniversity.com/rules/axe/4.3/blink) | Ensures <blink> elements are not used | 2.2.2 | A | P1 | ✅ | ✅ | | ||
| [button-name](https://dequeuniversity.com/rules/axe/4.3/button-name) | Ensures buttons have discernible text | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [bypass](https://dequeuniversity.com/rules/axe/4.3/bypass) | Ensures each page has at least one mechanism for a user to bypass navigation and jump straight to the content | 2.4.1 | A | P3 | ✅ | ✅ | | ||
| [color-contrast](https://dequeuniversity.com/rules/axe/4.3/color-contrast) | Ensures the contrast between foreground and background colors meets WCAG 2 AA contrast ratio thresholds | 1.4.3 | AA | P1 | ✅ | ✅ | | ||
| [definition-list](https://dequeuniversity.com/rules/axe/4.3/definition-list) | Ensures <dl> elements are structured correctly | 1.3.1 | A | P2 | ✅ | ✅ | | ||
| [dlitem](https://dequeuniversity.com/rules/axe/4.3/dlitem) | Ensures <dt> and <dd> elements are contained by a <dl> | 1.3.1 | A | P2 | ✅ | ✅ | | ||
| [document-title](https://dequeuniversity.com/rules/axe/4.3/document-title) | Ensures each HTML document contains a non-empty <title> element | 2.4.2 | A | P2 | ✅ | ✅ | | ||
| [duplicate-id](https://dequeuniversity.com/rules/axe/4.3/duplicate-id) | Ensures every id attribute value is unique | 4.1.1 | A | P3 | ✅ | ✅ | | ||
| [duplicate-id-active](https://dequeuniversity.com/rules/axe/4.3/duplicate-id-active) | Ensures every id attribute value of active elements is unique | 4.1.1 | A | P3 | ✅ | ✅ | | ||
| [duplicate-id-aria](https://dequeuniversity.com/rules/axe/4.3/duplicate-id-aria) | Ensures every id attribute value used in ARIA and in labels is unique | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [empty-heading](https://dequeuniversity.com/rules/axe/4.3/empty-heading) | Ensures headings have discernible text | 1.3.1 | A | P2 | ✅ | ✅ | | ||
| [empty-table-header](https://dequeuniversity.com/rules/axe/4.3/empty-table-header) | Ensures table headers have discernible text | 1.3.1 | A | P2 | ✅ | ✅ | | ||
| [form-field-multiple-labels](https://dequeuniversity.com/rules/axe/4.3/form-field-multiple-labels) | Ensures form field does not have multiple label elements | 2.5.3 | A | P2 | ✅ | ✅ | | ||
| [frame-focusable-content](https://dequeuniversity.com/rules/axe/4.3/frame-focusable-content) | Ensures <frame> and <iframe> elements with focusable content do not have tabindex=-1 | 2.1.1 | A | P1 | ✅ | ✅ | | ||
| [frame-title](https://dequeuniversity.com/rules/axe/4.3/frame-title) | Ensures <iframe> and <frame> elements have an accessible name | 2.4.2 | A | P3 | ✅ | ✅ | | ||
| [heading-order](https://dequeuniversity.com/rules/axe/4.3/heading-order) | Ensures the order of headings is semantically correct | 1.3.1 | A | P2 | ✅ | ✅ | | ||
| [html-has-lang](https://dequeuniversity.com/rules/axe/4.3/html-has-lang) | Ensures every HTML document has a lang attribute | 3.1.1 | A | P2 | ✅ | ✅ | | ||
| [html-lang-valid](https://dequeuniversity.com/rules/axe/4.3/html-lang-valid) | Ensures the lang attribute of the <html> element has a valid value | 3.1.1 | A | P2 | ✅ | ✅ | | ||
| [html-xml-lang-mismatch](https://dequeuniversity.com/rules/axe/4.3/html-xml-lang-mismatch) | Ensure that HTML elements with both valid lang and xml:lang attributes agree on the base language of the page | 3.1.1 | A | P2 | ✅ | ✅ | | ||
| [image-alt](https://dequeuniversity.com/rules/axe/4.3/image-alt) | Ensures <img> elements have alternate text or a role of none or presentation | 1.1.1 | A | P1 | ✅ | ✅ | | ||
| [image-redundant-alt](https://dequeuniversity.com/rules/axe/4.3/image-redundant-alt) | Ensure image alternative is not repeated as text | 1.1.1 | A | P3 | ✅ | ✅ | | ||
| [input-button-name](https://dequeuniversity.com/rules/axe/4.3/input-button-name) | Ensures input buttons have discernible text | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [input-image-alt](https://dequeuniversity.com/rules/axe/4.3/input-image-alt) | Ensures <input type="image"> elements have alternate text | 1.1.1 | A | P1 | ✅ | ✅ | | ||
| [label](https://dequeuniversity.com/rules/axe/4.3/label) | Ensures every form element has a label | 3.3.2 | A | P1 | ✅ | ✅ | | ||
| [label-title-only](https://dequeuniversity.com/rules/axe/4.3/label-title-only) | Ensures that every form element is not solely labeled using the title or aria-describedby attributes | 3.3.2 | A | P1 | ✅ | ✅ | | ||
| [landmark-banner-is-top-level](https://dequeuniversity.com/rules/axe/4.3/landmark-banner-is-top-level) | Ensures the banner landmark is at top level | 4.1.1 | A | P3 | ✅ | ✅ | | ||
| [landmark-complementary-is-top-level](https://dequeuniversity.com/rules/axe/4.3/landmark-complementary-is-top-level) | Ensures the complementary landmark or aside is at top level | 4.1.1 | A | P3 | ✅ | ✅ | | ||
| [landmark-contentinfo-is-top-level](https://dequeuniversity.com/rules/axe/4.3/landmark-contentinfo-is-top-level) | Ensures the contentinfo landmark is at top level | 4.1.1 | A | P3 | ✅ | ✅ | | ||
| [landmark-main-is-top-level](https://dequeuniversity.com/rules/axe/4.3/landmark-main-is-top-level) | Ensures the main landmark is at top level | 4.1.1 | A | P3 | ✅ | ✅ | | ||
| [landmark-no-duplicate-banner](https://dequeuniversity.com/rules/axe/4.3/landmark-no-duplicate-banner) | Ensures the document has at most one banner landmark | 4.1.1 | A | P3 | ✅ | ✅ | | ||
| [landmark-no-duplicate-contentinfo](https://dequeuniversity.com/rules/axe/4.3/landmark-no-duplicate-contentinfo) | Ensures the document has at most one contentinfo landmark | 4.1.1 | A | P3 | ✅ | ✅ | | ||
| [landmark-no-duplicate-main](https://dequeuniversity.com/rules/axe/4.3/landmark-no-duplicate-main) | Ensures the document has at most one main landmark | 4.1.1 | A | P3 | ✅ | ✅ | | ||
| [landmark-one-main](https://dequeuniversity.com/rules/axe/4.3/landmark-one-main) | Ensures the document has a main landmark | 4.1.1 | A | P3 | ✅ | ✅ | | ||
| [landmark-unique](https://dequeuniversity.com/rules/axe/4.3/landmark-unique) | Landmarks should have a unique role or role/label/title (i.e. accessible name) combination | 4.1.1 | A | P3 | ✅ | ✅ | | ||
| [link-name](https://dequeuniversity.com/rules/axe/4.3/link-name) | Ensures links have discernible text | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [list](https://dequeuniversity.com/rules/axe/4.3/list) | Ensures that lists are structured correctly | 1.3.1 | A | P2 | ✅ | ✅ | | ||
| [listitem](https://dequeuniversity.com/rules/axe/4.3/listitem) | Ensures <li> elements are used semantically | 1.3.1 | A | P2 | ✅ | ✅ | | ||
| [marquee](https://dequeuniversity.com/rules/axe/4.3/marquee) | Ensures <marquee> elements are not used | 2.2.2 | A | P1 | ✅ | ✅ | | ||
| [meta-refresh](https://dequeuniversity.com/rules/axe/4.3/meta-refresh) | Ensures <meta http-equiv="refresh"> is not used | 2.2.1 | A | P1 | ✅ | ✅ | | ||
| [meta-viewport](https://dequeuniversity.com/rules/axe/4.3/meta-viewport) | Ensures <meta name="viewport"> does not disable text scaling and zooming | 1.4.4 | AA | P2 | ✅ | ✅ | | ||
| [meta-viewport-large](https://dequeuniversity.com/rules/axe/4.3/meta-viewport-large) | Ensures <meta name="viewport"> can scale a significant amount | 1.4.4 | AA | P2 | ✅ | ✅ | | ||
| [nested-interactive](https://dequeuniversity.com/rules/axe/4.3/nested-interactive) | Nested interactive controls are not announced by screen readers | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [object-alt](https://dequeuniversity.com/rules/axe/4.3/object-alt) | Ensures <object> elements have alternate text | 1.1.1 | A | P1 | ✅ | ✅ | | ||
| [page-has-heading-one](https://dequeuniversity.com/rules/axe/4.3/page-has-heading-one) | Ensure that the page, or at least one of its frames contains a level-one heading | 1.3.1 | A | P2 | ✅ | ✅ | | ||
| [presentation-role-conflict](https://dequeuniversity.com/rules/axe/4.3/presentation-role-conflict) | Flags elements whose role is none or presentation and which cause the role conflict resolution to trigger. | 4.1.1 | A | P3 | ✅ | ✅ | | ||
| [role-img-alt](https://dequeuniversity.com/rules/axe/4.3/role-img-alt) | Ensures [role='img'] elements have alternate text | 1.1.1 | A | P1 | ✅ | ✅ | | ||
| [scope-attr-valid](https://dequeuniversity.com/rules/axe/4.3/scope-attr-valid) | Ensures the scope attribute is used correctly on tables | 1.3.1 | A | P1 | ✅ | ✅ | | ||
| [scrollable-region-focusable](https://dequeuniversity.com/rules/axe/4.3/scrollable-region-focusable) | Elements that have scrollable content must be accessible by keyboard | 2.1.1 | A | P1 | ✅ | ✅ | | ||
| [select-name](https://dequeuniversity.com/rules/axe/4.3/select-name) | Ensures select element has an accessible name | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [server-side-image-map](https://dequeuniversity.com/rules/axe/4.3/server-side-image-map) | Ensures that server-side image maps are not used | 2.1.1 | A | P1 | ✅ | ✅ | | ||
| [svg-img-alt](https://dequeuniversity.com/rules/axe/4.3/svg-img-alt) | Ensures svg elements with an img, graphics-document or graphics-symbol role have an accessible text | 1.1.1 | A | P1 | ✅ | ✅ | | ||
| [tabindex](https://dequeuniversity.com/rules/axe/4.3/tabindex) | Ensures tabindex attribute values are not greater than 0 | 2.4.3 | A | P2 | ✅ | ✅ | | ||
| [td-headers-attr](https://dequeuniversity.com/rules/axe/4.3/td-headers-attr) | Ensure that each cell in a table using the headers refers to another cell in that table | 1.3.1 | A | P1 | ✅ | ✅ | | ||
| [th-has-data-cells](https://dequeuniversity.com/rules/axe/4.3/th-has-data-cells) | Ensure that each table header in a data table refers to data cells | 1.3.1 | A | P1 | ✅ | ✅ | | ||
| [valid-lang](https://dequeuniversity.com/rules/axe/4.3/valid-lang) | Ensures lang attributes have valid values | 3.1.1 | A | P2 | ✅ | ✅ | | ||
| [video-caption](https://dequeuniversity.com/rules/axe/4.3/video-caption) | Ensures <video> elements have captions | 1.2.2 | A | P1 | ✅ | ✅ | | ||
| [css-orientation-lock](https://dequeuniversity.com/rules/axe/4.3/css-orientation-lock) | Ensures content is not locked to any specific display orientation, and the content is operable in all display orientations | 1.3.4 | AA | P3 | ✖️ | ✅ | | ||
| [focus-order-semantics](https://dequeuniversity.com/rules/axe/4.3/focus-order-semantics) | Ensures elements in the focus order have an appropriate role | | | P3 | ✖️ | ✅ | | ||
| [frame-tested](https://dequeuniversity.com/rules/axe/4.3/frame-tested) | Ensures <iframe> and <frame> elements contain the axe-core script | | | P3 | ✖️ | ✅ | | ||
| [frame-title-unique](https://dequeuniversity.com/rules/axe/4.3/frame-title-unique) | Ensures <iframe> and <frame> elements contain a unique title attribute | | | P3 | ✖️ | ✅ | | ||
| [hidden-content](https://dequeuniversity.com/rules/axe/4.3/hidden-content) | Informs users about hidden content. | | | P3 | ✖️ | ✅ | | ||
| [identical-links-same-purpose](https://dequeuniversity.com/rules/axe/4.3/identical-links-same-purpose) | Ensure that links with the same accessible name serve a similar purpose | 2.4.9 | AAA | P3 | ✖️ | ✅ | | ||
| [label-content-name-mismatch](https://dequeuniversity.com/rules/axe/4.3/label-content-name-mismatch) | Ensures that elements labelled through their content must have their visible text as part of their accessible name | 2.5.3 | A | P2 | ✖️ | ✅ | | ||
| [link-in-text-block](https://dequeuniversity.com/rules/axe/4.3/link-in-text-block) | Links can be distinguished without relying on color | 1.4.1 | A | P1 | ✖️ | ✅ | | ||
| [no-autoplay-audio](https://dequeuniversity.com/rules/axe/4.3/no-autoplay-audio) | Ensures <video> or <audio> elements do not autoplay audio for more than 3 seconds without a control mechanism to stop or mute the audio | 1.4.2 | A | P1 | ✖️ | ✅ | | ||
| [p-as-heading](https://dequeuniversity.com/rules/axe/4.3/p-as-heading) | Ensure p elements are not used to style headings | 1.3.1 | A | P2 | ✖️ | ✅ | | ||
| [region](https://dequeuniversity.com/rules/axe/4.3/region) | Ensures all page content is contained by landmarks | | | P3 | ✖️ | ✅ | | ||
| [skip-link](https://dequeuniversity.com/rules/axe/4.3/skip-link) | Ensure all skip links have a focusable target | | | P3 | ✖️ | ✅ | | ||
| [table-duplicate-name](https://dequeuniversity.com/rules/axe/4.3/table-duplicate-name) | Ensure that tables do not have the same summary and caption | | | P3 | ✖️ | ✅ | | ||
| [table-fake-caption](https://dequeuniversity.com/rules/axe/4.3/table-fake-caption) | Ensure that tables with a caption use the <caption> element. | | | P3 | ✖️ | ✅ | | ||
| [td-has-header](https://dequeuniversity.com/rules/axe/4.3/td-has-header) | Ensure that each non-empty data cell in a large table has one or more table headers | 1.3.1 | A | P1 | ✖️ | ✅ | | ||
| Rule ID | Description | WCAG SC | WCAG Level | Priority | In Base ruleset | In Extended ruleset | | ||
| -------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ---------- | -------- | --------------- | ------------------- | | ||
| [accesskeys](https://dequeuniversity.com/rules/axe/4.7/accesskeys) | Ensures every accesskey attribute value is unique | 4.1.1 | A | P3 | ✅ | ✅ | | ||
| [area-alt](https://dequeuniversity.com/rules/axe/4.7/area-alt) | Ensures <area> elements of image maps have alternate text | 1.1.1 | A | P1 | ✅ | ✅ | | ||
| [aria-allowed-attr](https://dequeuniversity.com/rules/axe/4.7/aria-allowed-attr) | Ensures ARIA attributes are allowed for an element's role | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [aria-allowed-role](https://dequeuniversity.com/rules/axe/4.7/aria-allowed-role) | Ensures role attribute has an appropriate value for the element | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [aria-command-name](https://dequeuniversity.com/rules/axe/4.7/aria-command-name) | Ensures every ARIA button, link and menuitem has an accessible name | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [aria-dialog-name](https://dequeuniversity.com/rules/axe/4.7/aria-dialog-name) | Ensures every ARIA dialog and alertdialog node has an accessible name | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [aria-hidden-body](https://dequeuniversity.com/rules/axe/4.7/aria-hidden-body) | Ensures aria-hidden='true' is not present on the document body. | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [aria-hidden-focus](https://dequeuniversity.com/rules/axe/4.7/aria-hidden-focus) | Ensures aria-hidden elements are not focusable nor contain focusable elements | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [aria-input-field-name](https://dequeuniversity.com/rules/axe/4.7/aria-input-field-name) | Ensures every ARIA input field has an accessible name | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [aria-meter-name](https://dequeuniversity.com/rules/axe/4.7/aria-meter-name) | Ensures every ARIA meter node has an accessible name | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [aria-progressbar-name](https://dequeuniversity.com/rules/axe/4.7/aria-progressbar-name) | Ensures every ARIA progressbar node has an accessible name | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [aria-required-attr](https://dequeuniversity.com/rules/axe/4.7/aria-required-attr) | Ensures elements with ARIA roles have all required ARIA attributes | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [aria-required-children](https://dequeuniversity.com/rules/axe/4.7/aria-required-children) | Ensures elements with an ARIA role that require child roles contain them | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [aria-required-parent](https://dequeuniversity.com/rules/axe/4.7/aria-required-parent) | Ensures elements with an ARIA role that require parent roles are contained by them | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [aria-roledescription](https://dequeuniversity.com/rules/axe/4.7/aria-roledescription) | Ensure aria-roledescription is only used on elements with an implicit or explicit role | 4.1.2 | A | P3 | ✅ | ✅ | | ||
| [aria-roles](https://dequeuniversity.com/rules/axe/4.7/aria-roles) | Ensures all elements with a role attribute use a valid value | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [aria-text](https://dequeuniversity.com/rules/axe/4.7/aria-text) | Ensures "role=text" is used on elements with no focusable descendants | 4.1.1 | A | P3 | ✅ | ✅ | | ||
| [aria-toggle-field-name](https://dequeuniversity.com/rules/axe/4.7/aria-toggle-field-name) | Ensures every ARIA toggle field has an accessible name | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [aria-tooltip-name](https://dequeuniversity.com/rules/axe/4.7/aria-tooltip-name) | Ensures every ARIA tooltip node has an accessible name | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [aria-treeitem-name](https://dequeuniversity.com/rules/axe/4.7/aria-treeitem-name) | Ensures every ARIA treeitem node has an accessible name | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [aria-valid-attr](https://dequeuniversity.com/rules/axe/4.7/aria-valid-attr) | Ensures attributes that begin with aria- are valid ARIA attributes | 4.1.2 | A | P3 | ✅ | ✅ | | ||
| [aria-valid-attr-value](https://dequeuniversity.com/rules/axe/4.7/aria-valid-attr-value) | Ensures all ARIA attributes have valid values | 4.1.2 | A | P3 | ✅ | ✅ | | ||
| [audio-caption](https://dequeuniversity.com/rules/axe/4.7/audio-caption) | Ensures <audio> elements have captions | 1.2.2 | A | P1 | ✅ | ✅ | | ||
| [autocomplete-valid](https://dequeuniversity.com/rules/axe/4.7/autocomplete-valid) | Ensure the autocomplete attribute is correct and suitable for the form field | 1.3.5 | AA | P2 | ✅ | ✅ | | ||
| [avoid-inline-spacing](https://dequeuniversity.com/rules/axe/4.7/avoid-inline-spacing) | Ensure that text spacing set through style attributes can be adjusted with custom stylesheets | 1.4.12 | AA | P3 | ✅ | ✅ | | ||
| [blink](https://dequeuniversity.com/rules/axe/4.7/blink) | Ensures <blink> elements are not used | 2.2.2 | A | P1 | ✅ | ✅ | | ||
| [button-name](https://dequeuniversity.com/rules/axe/4.7/button-name) | Ensures buttons have discernible text | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [bypass](https://dequeuniversity.com/rules/axe/4.7/bypass) | Ensures each page has at least one mechanism for a user to bypass navigation and jump straight to the content | 2.4.1 | A | P3 | ✅ | ✅ | | ||
| [color-contrast](https://dequeuniversity.com/rules/axe/4.7/color-contrast) | Ensures the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds | 1.4.3 | AA | P1 | ✅ | ✅ | | ||
| [definition-list](https://dequeuniversity.com/rules/axe/4.7/definition-list) | Ensures <dl> elements are structured correctly | 1.3.1 | A | P2 | ✅ | ✅ | | ||
| [dlitem](https://dequeuniversity.com/rules/axe/4.7/dlitem) | Ensures <dt> and <dd> elements are contained by a <dl> | 1.3.1 | A | P2 | ✅ | ✅ | | ||
| [document-title](https://dequeuniversity.com/rules/axe/4.7/document-title) | Ensures each HTML document contains a non-empty <title> element | 2.4.2 | A | P2 | ✅ | ✅ | | ||
| [duplicate-id](https://dequeuniversity.com/rules/axe/4.7/duplicate-id) | Ensures every id attribute value is unique | 4.1.1 | A | P3 | ✅ | ✅ | | ||
| [duplicate-id-active](https://dequeuniversity.com/rules/axe/4.7/duplicate-id-active) | Ensures every id attribute value of active elements is unique | 4.1.1 | A | P3 | ✅ | ✅ | | ||
| [duplicate-id-aria](https://dequeuniversity.com/rules/axe/4.7/duplicate-id-aria) | Ensures every id attribute value used in ARIA and in labels is unique | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [empty-heading](https://dequeuniversity.com/rules/axe/4.7/empty-heading) | Ensures headings have discernible text | 1.3.1 | A | P2 | ✅ | ✅ | | ||
| [empty-table-header](https://dequeuniversity.com/rules/axe/4.7/empty-table-header) | Ensures table headers have discernible text | 1.3.1 | A | P2 | ✅ | ✅ | | ||
| [form-field-multiple-labels](https://dequeuniversity.com/rules/axe/4.7/form-field-multiple-labels) | Ensures form field does not have multiple label elements | 2.5.3 | A | P2 | ✅ | ✅ | | ||
| [frame-focusable-content](https://dequeuniversity.com/rules/axe/4.7/frame-focusable-content) | Ensures <frame> and <iframe> elements with focusable content do not have tabindex=-1 | 2.1.1 | A | P1 | ✅ | ✅ | | ||
| [frame-title](https://dequeuniversity.com/rules/axe/4.7/frame-title) | Ensures <iframe> and <frame> elements have an accessible name | 2.4.2 | A | P3 | ✅ | ✅ | | ||
| [heading-order](https://dequeuniversity.com/rules/axe/4.7/heading-order) | Ensures the order of headings is semantically correct | 1.3.1 | A | P2 | ✅ | ✅ | | ||
| [html-has-lang](https://dequeuniversity.com/rules/axe/4.7/html-has-lang) | Ensures every HTML document has a lang attribute | 3.1.1 | A | P2 | ✅ | ✅ | | ||
| [html-lang-valid](https://dequeuniversity.com/rules/axe/4.7/html-lang-valid) | Ensures the lang attribute of the <html> element has a valid value | 3.1.1 | A | P2 | ✅ | ✅ | | ||
| [html-xml-lang-mismatch](https://dequeuniversity.com/rules/axe/4.7/html-xml-lang-mismatch) | Ensure that HTML elements with both valid lang and xml:lang attributes agree on the base language of the page | 3.1.1 | A | P2 | ✅ | ✅ | | ||
| [image-alt](https://dequeuniversity.com/rules/axe/4.7/image-alt) | Ensures <img> elements have alternate text or a role of none or presentation | 1.1.1 | A | P1 | ✅ | ✅ | | ||
| [image-redundant-alt](https://dequeuniversity.com/rules/axe/4.7/image-redundant-alt) | Ensure image alternative is not repeated as text | 1.1.1 | A | P3 | ✅ | ✅ | | ||
| [input-button-name](https://dequeuniversity.com/rules/axe/4.7/input-button-name) | Ensures input buttons have discernible text | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [input-image-alt](https://dequeuniversity.com/rules/axe/4.7/input-image-alt) | Ensures <input type="image"> elements have alternate text | 1.1.1 | A | P1 | ✅ | ✅ | | ||
| [label](https://dequeuniversity.com/rules/axe/4.7/label) | Ensures every form element has a label | 3.3.2 | A | P1 | ✅ | ✅ | | ||
| [label-title-only](https://dequeuniversity.com/rules/axe/4.7/label-title-only) | Ensures that every form element has a visible label and is not solely labeled using hidden labels, or the title or aria-describedby attributes | 3.3.2 | A | P1 | ✅ | ✅ | | ||
| [landmark-banner-is-top-level](https://dequeuniversity.com/rules/axe/4.7/landmark-banner-is-top-level) | Ensures the banner landmark is at top level | 4.1.1 | A | P3 | ✅ | ✅ | | ||
| [landmark-complementary-is-top-level](https://dequeuniversity.com/rules/axe/4.7/landmark-complementary-is-top-level) | Ensures the complementary landmark or aside is at top level | 4.1.1 | A | P3 | ✅ | ✅ | | ||
| [landmark-contentinfo-is-top-level](https://dequeuniversity.com/rules/axe/4.7/landmark-contentinfo-is-top-level) | Ensures the contentinfo landmark is at top level | 4.1.1 | A | P3 | ✅ | ✅ | | ||
| [landmark-main-is-top-level](https://dequeuniversity.com/rules/axe/4.7/landmark-main-is-top-level) | Ensures the main landmark is at top level | 4.1.1 | A | P3 | ✅ | ✅ | | ||
| [landmark-no-duplicate-banner](https://dequeuniversity.com/rules/axe/4.7/landmark-no-duplicate-banner) | Ensures the document has at most one banner landmark | 4.1.1 | A | P3 | ✅ | ✅ | | ||
| [landmark-no-duplicate-contentinfo](https://dequeuniversity.com/rules/axe/4.7/landmark-no-duplicate-contentinfo) | Ensures the document has at most one contentinfo landmark | 4.1.1 | A | P3 | ✅ | ✅ | | ||
| [landmark-no-duplicate-main](https://dequeuniversity.com/rules/axe/4.7/landmark-no-duplicate-main) | Ensures the document has at most one main landmark | 4.1.1 | A | P3 | ✅ | ✅ | | ||
| [landmark-one-main](https://dequeuniversity.com/rules/axe/4.7/landmark-one-main) | Ensures the document has a main landmark | 4.1.1 | A | P3 | ✅ | ✅ | | ||
| [landmark-unique](https://dequeuniversity.com/rules/axe/4.7/landmark-unique) | Landmarks should have a unique role or role/label/title (i.e. accessible name) combination | 4.1.1 | A | P3 | ✅ | ✅ | | ||
| [link-name](https://dequeuniversity.com/rules/axe/4.7/link-name) | Ensures links have discernible text | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [list](https://dequeuniversity.com/rules/axe/4.7/list) | Ensures that lists are structured correctly | 1.3.1 | A | P2 | ✅ | ✅ | | ||
| [listitem](https://dequeuniversity.com/rules/axe/4.7/listitem) | Ensures <li> elements are used semantically | 1.3.1 | A | P2 | ✅ | ✅ | | ||
| [marquee](https://dequeuniversity.com/rules/axe/4.7/marquee) | Ensures <marquee> elements are not used | 2.2.2 | A | P1 | ✅ | ✅ | | ||
| [meta-refresh](https://dequeuniversity.com/rules/axe/4.7/meta-refresh) | Ensures <meta http-equiv="refresh"> is not used for delayed refresh | 2.2.1 | A | P1 | ✅ | ✅ | | ||
| [meta-viewport](https://dequeuniversity.com/rules/axe/4.7/meta-viewport) | Ensures <meta name="viewport"> does not disable text scaling and zooming | 1.4.4 | AA | P2 | ✅ | ✅ | | ||
| [meta-viewport-large](https://dequeuniversity.com/rules/axe/4.7/meta-viewport-large) | Ensures <meta name="viewport"> can scale a significant amount | 1.4.4 | AA | P2 | ✅ | ✅ | | ||
| [nested-interactive](https://dequeuniversity.com/rules/axe/4.7/nested-interactive) | Ensures interactive controls are not nested as they are not always announced by screen readers or can cause focus problems for assistive technologies | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [object-alt](https://dequeuniversity.com/rules/axe/4.7/object-alt) | Ensures <object> elements have alternate text | 1.1.1 | A | P1 | ✅ | ✅ | | ||
| [page-has-heading-one](https://dequeuniversity.com/rules/axe/4.7/page-has-heading-one) | Ensure that the page, or at least one of its frames contains a level-one heading | 1.3.1 | A | P2 | ✅ | ✅ | | ||
| [presentation-role-conflict](https://dequeuniversity.com/rules/axe/4.7/presentation-role-conflict) | Elements marked as presentational should not have global ARIA or tabindex to ensure all screen readers ignore them | 4.1.1 | A | P3 | ✅ | ✅ | | ||
| [role-img-alt](https://dequeuniversity.com/rules/axe/4.7/role-img-alt) | Ensures [role='img'] elements have alternate text | 1.1.1 | A | P1 | ✅ | ✅ | | ||
| [scope-attr-valid](https://dequeuniversity.com/rules/axe/4.7/scope-attr-valid) | Ensures the scope attribute is used correctly on tables | 1.3.1 | A | P1 | ✅ | ✅ | | ||
| [scrollable-region-focusable](https://dequeuniversity.com/rules/axe/4.7/scrollable-region-focusable) | Ensure elements that have scrollable content are accessible by keyboard | 2.1.1 | A | P1 | ✅ | ✅ | | ||
| [select-name](https://dequeuniversity.com/rules/axe/4.7/select-name) | Ensures select element has an accessible name | 4.1.2 | A | P1 | ✅ | ✅ | | ||
| [server-side-image-map](https://dequeuniversity.com/rules/axe/4.7/server-side-image-map) | Ensures that server-side image maps are not used | 2.1.1 | A | P1 | ✅ | ✅ | | ||
| [svg-img-alt](https://dequeuniversity.com/rules/axe/4.7/svg-img-alt) | Ensures <svg> elements with an img, graphics-document or graphics-symbol role have an accessible text | 1.1.1 | A | P1 | ✅ | ✅ | | ||
| [tabindex](https://dequeuniversity.com/rules/axe/4.7/tabindex) | Ensures tabindex attribute values are not greater than 0 | 2.4.3 | A | P2 | ✅ | ✅ | | ||
| [td-headers-attr](https://dequeuniversity.com/rules/axe/4.7/td-headers-attr) | Ensure that each cell in a table that uses the headers attribute refers only to other cells in that table | 1.3.1 | A | P1 | ✅ | ✅ | | ||
| [th-has-data-cells](https://dequeuniversity.com/rules/axe/4.7/th-has-data-cells) | Ensure that <th> elements and elements with role=columnheader/rowheader have data cells they describe | 1.3.1 | A | P1 | ✅ | ✅ | | ||
| [valid-lang](https://dequeuniversity.com/rules/axe/4.7/valid-lang) | Ensures lang attributes have valid values | 3.1.1 | A | P2 | ✅ | ✅ | | ||
| [video-caption](https://dequeuniversity.com/rules/axe/4.7/video-caption) | Ensures <video> elements have captions | 1.2.2 | A | P1 | ✅ | ✅ | | ||
| [color-contrast-enhanced](https://dequeuniversity.com/rules/axe/4.7/color-contrast-enhanced) | Ensures the contrast between foreground and background colors meets WCAG 2 AAA enhanced contrast ratio thresholds | 1.4.6 | AAA | P3 | ✖️ | ✅ | | ||
| [css-orientation-lock](https://dequeuniversity.com/rules/axe/4.7/css-orientation-lock) | Ensures content is not locked to any specific display orientation, and the content is operable in all display orientations | 1.3.4 | AA | P3 | ✖️ | ✅ | | ||
| [focus-order-semantics](https://dequeuniversity.com/rules/axe/4.7/focus-order-semantics) | Ensures elements in the focus order have a role appropriate for interactive content | | | P3 | ✖️ | ✅ | | ||
| [frame-tested](https://dequeuniversity.com/rules/axe/4.7/frame-tested) | Ensures <iframe> and <frame> elements contain the axe-core script | | | P3 | ✖️ | ✅ | | ||
| [frame-title-unique](https://dequeuniversity.com/rules/axe/4.7/frame-title-unique) | Ensures <iframe> and <frame> elements contain a unique title attribute | | | P3 | ✖️ | ✅ | | ||
| [hidden-content](https://dequeuniversity.com/rules/axe/4.7/hidden-content) | Informs users about hidden content. | | | P3 | ✖️ | ✅ | | ||
| [identical-links-same-purpose](https://dequeuniversity.com/rules/axe/4.7/identical-links-same-purpose) | Ensure that links with the same accessible name serve a similar purpose | 2.4.9 | AAA | P3 | ✖️ | ✅ | | ||
| [label-content-name-mismatch](https://dequeuniversity.com/rules/axe/4.7/label-content-name-mismatch) | Ensures that elements labelled through their content must have their visible text as part of their accessible name | 2.5.3 | A | P2 | ✖️ | ✅ | | ||
| [link-in-text-block](https://dequeuniversity.com/rules/axe/4.7/link-in-text-block) | Ensure links are distinguished from surrounding text in a way that does not rely on color | 1.4.1 | A | P1 | ✖️ | ✅ | | ||
| [meta-refresh-no-exceptions](https://dequeuniversity.com/rules/axe/4.7/meta-refresh-no-exceptions) | Ensures <meta http-equiv="refresh"> is not used for delayed refresh | | | P3 | ✖️ | ✅ | | ||
| [no-autoplay-audio](https://dequeuniversity.com/rules/axe/4.7/no-autoplay-audio) | Ensures <video> or <audio> elements do not autoplay audio for more than 3 seconds without a control mechanism to stop or mute the audio | 1.4.2 | A | P1 | ✖️ | ✅ | | ||
| [p-as-heading](https://dequeuniversity.com/rules/axe/4.7/p-as-heading) | Ensure bold, italic text and font-size is not used to style <p> elements as a heading | 1.3.1 | A | P2 | ✖️ | ✅ | | ||
| [region](https://dequeuniversity.com/rules/axe/4.7/region) | Ensures all page content is contained by landmarks | | | P3 | ✖️ | ✅ | | ||
| [skip-link](https://dequeuniversity.com/rules/axe/4.7/skip-link) | Ensure all skip links have a focusable target | | | P3 | ✖️ | ✅ | | ||
| [table-duplicate-name](https://dequeuniversity.com/rules/axe/4.7/table-duplicate-name) | Ensure the <caption> element does not contain the same text as the summary attribute | | | P3 | ✖️ | ✅ | | ||
| [table-fake-caption](https://dequeuniversity.com/rules/axe/4.7/table-fake-caption) | Ensure that tables with a caption use the <caption> element. | | | P3 | ✖️ | ✅ | | ||
| [target-size](https://dequeuniversity.com/rules/axe/4.7/target-size) | Ensure touch target have sufficient size and space | 2.5.5 | AAA | P3 | ✖️ | ✅ | | ||
| [td-has-header](https://dequeuniversity.com/rules/axe/4.7/td-has-header) | Ensure that each non-empty data cell in a <table> larger than 3 by 3 has one or more table headers | 1.3.1 | A | P1 | ✖️ | ✅ | |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
68054
504
139
+ Added@sa11y/common@5.0.1(transitive)
+ Addedaxe-core@4.7.0(transitive)
- Removed@sa11y/common@5.0.0(transitive)
- Removedaxe-core@4.3.3(transitive)
Updated@sa11y/common@5.0.1