diff --git a/build/tasks/validate.js b/build/tasks/validate.js index 7d6b7f6920..946c8b75dc 100644 --- a/build/tasks/validate.js +++ b/build/tasks/validate.js @@ -198,6 +198,10 @@ function createSchemas() { type: 'array', items: { type: 'string' + }, + conform: function hasCategoryTag(tags) { return tags.some(tag => tag.includes('cat.')) }, + messages: { + conform: 'must include a category tag' } }, matches: { diff --git a/doc/rule-descriptions.md b/doc/rule-descriptions.md index 390d0dd097..9005289724 100644 --- a/doc/rule-descriptions.md +++ b/doc/rule-descriptions.md @@ -16,15 +16,15 @@ | [aria-allowed-attr](https://dequeuniversity.com/rules/axe/4.0/aria-allowed-attr?application=RuleDescription) | Ensures ARIA attributes are allowed for an element's role | Critical | cat.aria, wcag2a, wcag412 | failure | | [aria-hidden-body](https://dequeuniversity.com/rules/axe/4.0/aria-hidden-body?application=RuleDescription) | Ensures aria-hidden='true' is not present on the document body. | Critical | cat.aria, wcag2a, wcag412 | failure | | [aria-hidden-focus](https://dequeuniversity.com/rules/axe/4.0/aria-hidden-focus?application=RuleDescription) | Ensures aria-hidden elements do not contain focusable elements | Serious | cat.name-role-value, wcag2a, wcag412, wcag131 | failure, needs review | -| [aria-input-field-name](https://dequeuniversity.com/rules/axe/4.0/aria-input-field-name?application=RuleDescription) | Ensures every ARIA input field has an accessible name | Moderate, Serious | wcag2a, wcag412 | failure, needs review | +| [aria-input-field-name](https://dequeuniversity.com/rules/axe/4.0/aria-input-field-name?application=RuleDescription) | Ensures every ARIA input field has an accessible name | Moderate, Serious | cat.aria, wcag2a, wcag412 | failure, needs review | | [aria-progressbar-name](https://dequeuniversity.com/rules/axe/4.0/aria-progressbar-name?application=RuleDescription) | Ensures every ARIA progressbar node has an accessible name | Serious | cat.aria, wcag2a, wcag111 | failure, needs review | | [aria-required-attr](https://dequeuniversity.com/rules/axe/4.0/aria-required-attr?application=RuleDescription) | Ensures elements with ARIA roles have all required ARIA attributes | Critical | cat.aria, wcag2a, wcag412 | failure | | [aria-required-children](https://dequeuniversity.com/rules/axe/4.0/aria-required-children?application=RuleDescription) | Ensures elements with an ARIA role that require child roles contain them | Critical | cat.aria, wcag2a, wcag131 | failure, needs review | | [aria-required-parent](https://dequeuniversity.com/rules/axe/4.0/aria-required-parent?application=RuleDescription) | Ensures elements with an ARIA role that require parent roles are contained by them | Critical | cat.aria, wcag2a, wcag131 | failure | | [aria-roledescription](https://dequeuniversity.com/rules/axe/4.0/aria-roledescription?application=RuleDescription) | Ensure aria-roledescription is only used on elements with an implicit or explicit role | Serious | cat.aria, wcag2a, wcag412 | failure, needs review | | [aria-roles](https://dequeuniversity.com/rules/axe/4.0/aria-roles?application=RuleDescription) | Ensures all elements with a role attribute use a valid value | Serious, Critical | cat.aria, wcag2a, wcag412 | failure | -| [aria-toggle-field-name](https://dequeuniversity.com/rules/axe/4.0/aria-toggle-field-name?application=RuleDescription) | Ensures every ARIA toggle field has an accessible name | Moderate, Serious | wcag2a, wcag412 | failure, needs review | -| [aria-tooltip-name](https://dequeuniversity.com/rules/axe/4.0/aria-tooltip-name?application=RuleDescription) | Ensures every ARIA tooltip node has an accessible name | Serious | wcag2a, wcag412 | failure, needs review | +| [aria-toggle-field-name](https://dequeuniversity.com/rules/axe/4.0/aria-toggle-field-name?application=RuleDescription) | Ensures every ARIA toggle field has an accessible name | Moderate, Serious | cat.aria, wcag2a, wcag412 | failure, needs review | +| [aria-tooltip-name](https://dequeuniversity.com/rules/axe/4.0/aria-tooltip-name?application=RuleDescription) | Ensures every ARIA tooltip node has an accessible name | Serious | cat.aria, wcag2a, wcag412 | failure, needs review | | [aria-valid-attr-value](https://dequeuniversity.com/rules/axe/4.0/aria-valid-attr-value?application=RuleDescription) | Ensures all ARIA attributes have valid values | Critical | cat.aria, wcag2a, wcag412 | failure, needs review | | [aria-valid-attr](https://dequeuniversity.com/rules/axe/4.0/aria-valid-attr?application=RuleDescription) | Ensures attributes that begin with aria- are valid ARIA attributes | Critical | cat.aria, wcag2a, wcag412 | failure | | [audio-caption](https://dequeuniversity.com/rules/axe/4.0/audio-caption?application=RuleDescription) | Ensures <audio> elements have captions | Critical | cat.time-and-media, wcag2a, wcag121, section508, section508.22.a | needs review | @@ -54,7 +54,7 @@ | [meta-refresh](https://dequeuniversity.com/rules/axe/4.0/meta-refresh?application=RuleDescription) | Ensures <meta http-equiv="refresh"> is not used | Critical | cat.time-and-media, wcag2a, wcag2aaa, wcag221, wcag224, wcag325 | failure | | [object-alt](https://dequeuniversity.com/rules/axe/4.0/object-alt?application=RuleDescription) | Ensures <object> elements have alternate text | Serious | cat.text-alternatives, wcag2a, wcag111, section508, section508.22.a | failure, needs review | | [role-img-alt](https://dequeuniversity.com/rules/axe/4.0/role-img-alt?application=RuleDescription) | Ensures [role='img'] elements have alternate text | Serious | cat.text-alternatives, wcag2a, wcag111, section508, section508.22.a | failure, needs review | -| [scrollable-region-focusable](https://dequeuniversity.com/rules/axe/4.0/scrollable-region-focusable?application=RuleDescription) | Elements that have scrollable content should be accessible by keyboard | Moderate | wcag2a, wcag211 | failure | +| [scrollable-region-focusable](https://dequeuniversity.com/rules/axe/4.0/scrollable-region-focusable?application=RuleDescription) | Elements that have scrollable content should be accessible by keyboard | Moderate | cat.keyboard, wcag2a, wcag211 | failure | | [select-name](https://dequeuniversity.com/rules/axe/4.0/select-name?application=RuleDescription) | Ensures select element has an accessible name | Minor, Critical | cat.forms, wcag2a, wcag412, wcag131, section508, section508.22.n | failure, needs review | | [server-side-image-map](https://dequeuniversity.com/rules/axe/4.0/server-side-image-map?application=RuleDescription) | Ensures that server-side image maps are not used | Minor | cat.text-alternatives, wcag2a, wcag211, section508, section508.22.f | needs review | | [svg-img-alt](https://dequeuniversity.com/rules/axe/4.0/svg-img-alt?application=RuleDescription) | Ensures svg elements with an img, graphics-document or graphics-symbol role have an accessible text | Serious | cat.text-alternatives, wcag2a, wcag111, section508, section508.22.a | failure, needs review | @@ -65,44 +65,44 @@ ## WCAG 2.1 Level A & AA Rules -| Rule ID | Description | Impact | Tags | Issue Type | -| :----------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------- | :------ | :--------------------------- | :--------- | -| [autocomplete-valid](https://dequeuniversity.com/rules/axe/4.0/autocomplete-valid?application=RuleDescription) | Ensure the autocomplete attribute is correct and suitable for the form field | Serious | cat.forms, wcag21aa, wcag135 | failure | -| [avoid-inline-spacing](https://dequeuniversity.com/rules/axe/4.0/avoid-inline-spacing?application=RuleDescription) | Ensure that text spacing set through style attributes can be adjusted with custom stylesheets | Serious | wcag21aa, wcag1412 | failure | +| Rule ID | Description | Impact | Tags | Issue Type | +| :----------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------- | :------ | :-------------------------------- | :--------- | +| [autocomplete-valid](https://dequeuniversity.com/rules/axe/4.0/autocomplete-valid?application=RuleDescription) | Ensure the autocomplete attribute is correct and suitable for the form field | Serious | cat.forms, wcag21aa, wcag135 | failure | +| [avoid-inline-spacing](https://dequeuniversity.com/rules/axe/4.0/avoid-inline-spacing?application=RuleDescription) | Ensure that text spacing set through style attributes can be adjusted with custom stylesheets | Serious | cat.structure, wcag21aa, wcag1412 | failure | ## Best Practices Rules Rules that do not necessarily conform to WCAG success criterion but are industry accepted practices that improve the user experience. -| Rule ID | Description | Impact | Tags | Issue Type | -| :----------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------- | :----------------- | :----------------------------------------- | :------------------------- | -| [accesskeys](https://dequeuniversity.com/rules/axe/4.0/accesskeys?application=RuleDescription) | Ensures every accesskey attribute value is unique | Serious | best-practice, cat.keyboard | failure | -| [aria-allowed-role](https://dequeuniversity.com/rules/axe/4.0/aria-allowed-role?application=RuleDescription) | Ensures role attribute has an appropriate value for the element | Minor | cat.aria, best-practice | failure, needs review | -| [empty-heading](https://dequeuniversity.com/rules/axe/4.0/empty-heading?application=RuleDescription) | Ensures headings have discernible text | Minor | cat.name-role-value, best-practice | failure, needs review | -| [frame-tested](https://dequeuniversity.com/rules/axe/4.0/frame-tested?application=RuleDescription) | Ensures <iframe> and <frame> elements contain the axe-core script | Critical | cat.structure, review-item, best-practice | failure, needs review | -| [frame-title-unique](https://dequeuniversity.com/rules/axe/4.0/frame-title-unique?application=RuleDescription) | Ensures <iframe> and <frame> elements contain a unique title attribute | Serious | cat.text-alternatives, best-practice | failure | -| [heading-order](https://dequeuniversity.com/rules/axe/4.0/heading-order?application=RuleDescription) | Ensures the order of headings is semantically correct | Moderate | cat.semantics, best-practice | failure | -| [identical-links-same-purpose](https://dequeuniversity.com/rules/axe/4.0/identical-links-same-purpose?application=RuleDescription) | Ensure that links with the same accessible name serve a similar purpose | Minor | wcag2aaa, wcag249, best-practice | needs review | -| [image-redundant-alt](https://dequeuniversity.com/rules/axe/4.0/image-redundant-alt?application=RuleDescription) | Ensure image alternative is not repeated as text | Minor | cat.text-alternatives, best-practice | failure | -| [label-title-only](https://dequeuniversity.com/rules/axe/4.0/label-title-only?application=RuleDescription) | Ensures that every form element is not solely labeled using the title or aria-describedby attributes | Serious | cat.forms, best-practice | failure | -| [landmark-banner-is-top-level](https://dequeuniversity.com/rules/axe/4.0/landmark-banner-is-top-level?application=RuleDescription) | Ensures the banner landmark is at top level | Moderate | cat.semantics, best-practice | failure | -| [landmark-complementary-is-top-level](https://dequeuniversity.com/rules/axe/4.0/landmark-complementary-is-top-level?application=RuleDescription) | Ensures the complementary landmark or aside is at top level | Moderate | cat.semantics, best-practice | failure | -| [landmark-contentinfo-is-top-level](https://dequeuniversity.com/rules/axe/4.0/landmark-contentinfo-is-top-level?application=RuleDescription) | Ensures the contentinfo landmark is at top level | Moderate | cat.semantics, best-practice | failure | -| [landmark-main-is-top-level](https://dequeuniversity.com/rules/axe/4.0/landmark-main-is-top-level?application=RuleDescription) | Ensures the main landmark is at top level | Moderate | cat.semantics, best-practice | failure | -| [landmark-no-duplicate-banner](https://dequeuniversity.com/rules/axe/4.0/landmark-no-duplicate-banner?application=RuleDescription) | Ensures the document has at most one banner landmark | Moderate | cat.semantics, best-practice | failure | -| [landmark-no-duplicate-contentinfo](https://dequeuniversity.com/rules/axe/4.0/landmark-no-duplicate-contentinfo?application=RuleDescription) | Ensures the document has at most one contentinfo landmark | Moderate | cat.semantics, best-practice | failure | -| [landmark-no-duplicate-main](https://dequeuniversity.com/rules/axe/4.0/landmark-no-duplicate-main?application=RuleDescription) | Ensures the document has at most one main landmark | Moderate | cat.semantics, best-practice | failure | -| [landmark-one-main](https://dequeuniversity.com/rules/axe/4.0/landmark-one-main?application=RuleDescription) | Ensures the document has a main landmark | Moderate | cat.semantics, best-practice | failure | -| [landmark-unique](https://dequeuniversity.com/rules/axe/4.0/landmark-unique?application=RuleDescription) | Landmarks must have a unique role or role/label/title (i.e. accessible name) combination | Moderate | cat.semantics, best-practice | failure | -| [meta-viewport-large](https://dequeuniversity.com/rules/axe/4.0/meta-viewport-large?application=RuleDescription) | Ensures <meta name="viewport"> can scale a significant amount | Minor | cat.sensory-and-visual-cues, best-practice | failure | -| [meta-viewport](https://dequeuniversity.com/rules/axe/4.0/meta-viewport?application=RuleDescription) | Ensures <meta name="viewport"> does not disable text scaling and zooming | Critical | cat.sensory-and-visual-cues, best-practice | failure | -| [page-has-heading-one](https://dequeuniversity.com/rules/axe/4.0/page-has-heading-one?application=RuleDescription) | Ensure that the page, or at least one of its frames contains a level-one heading | Moderate | cat.semantics, best-practice | failure | -| [presentation-role-conflict](https://dequeuniversity.com/rules/axe/4.0/presentation-role-conflict?application=RuleDescription) | Flags elements whose role is none or presentation and which cause the role conflict resolution to trigger. | Minor | cat.aria, best-practice | failure | -| [region](https://dequeuniversity.com/rules/axe/4.0/region?application=RuleDescription) | Ensures all page content is contained by landmarks | Moderate | cat.keyboard, best-practice | failure | -| [scope-attr-valid](https://dequeuniversity.com/rules/axe/4.0/scope-attr-valid?application=RuleDescription) | Ensures the scope attribute is used correctly on tables | Moderate, Critical | cat.tables, best-practice | failure | -| [skip-link](https://dequeuniversity.com/rules/axe/4.0/skip-link?application=RuleDescription) | Ensure all skip links have a focusable target | Moderate | cat.keyboard, best-practice | failure, needs review | -| [tabindex](https://dequeuniversity.com/rules/axe/4.0/tabindex?application=RuleDescription) | Ensures tabindex attribute values are not greater than 0 | Serious | cat.keyboard, best-practice | failure | -| [table-duplicate-name](https://dequeuniversity.com/rules/axe/4.0/table-duplicate-name?application=RuleDescription) | Ensure that tables do not have the same summary and caption | Minor | cat.tables, best-practice | failure | +| Rule ID | Description | Impact | Tags | Issue Type | +| :----------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------- | :----------------- | :---------------------------------------------- | :------------------------- | +| [accesskeys](https://dequeuniversity.com/rules/axe/4.0/accesskeys?application=RuleDescription) | Ensures every accesskey attribute value is unique | Serious | cat.keyboard, best-practice | failure | +| [aria-allowed-role](https://dequeuniversity.com/rules/axe/4.0/aria-allowed-role?application=RuleDescription) | Ensures role attribute has an appropriate value for the element | Minor | cat.aria, best-practice | failure, needs review | +| [empty-heading](https://dequeuniversity.com/rules/axe/4.0/empty-heading?application=RuleDescription) | Ensures headings have discernible text | Minor | cat.name-role-value, best-practice | failure, needs review | +| [frame-tested](https://dequeuniversity.com/rules/axe/4.0/frame-tested?application=RuleDescription) | Ensures <iframe> and <frame> elements contain the axe-core script | Critical | cat.structure, review-item, best-practice | failure, needs review | +| [frame-title-unique](https://dequeuniversity.com/rules/axe/4.0/frame-title-unique?application=RuleDescription) | Ensures <iframe> and <frame> elements contain a unique title attribute | Serious | cat.text-alternatives, best-practice | failure | +| [heading-order](https://dequeuniversity.com/rules/axe/4.0/heading-order?application=RuleDescription) | Ensures the order of headings is semantically correct | Moderate | cat.semantics, best-practice | failure | +| [identical-links-same-purpose](https://dequeuniversity.com/rules/axe/4.0/identical-links-same-purpose?application=RuleDescription) | Ensure that links with the same accessible name serve a similar purpose | Minor | cat.semantics, wcag2aaa, wcag249, best-practice | needs review | +| [image-redundant-alt](https://dequeuniversity.com/rules/axe/4.0/image-redundant-alt?application=RuleDescription) | Ensure image alternative is not repeated as text | Minor | cat.text-alternatives, best-practice | failure | +| [label-title-only](https://dequeuniversity.com/rules/axe/4.0/label-title-only?application=RuleDescription) | Ensures that every form element is not solely labeled using the title or aria-describedby attributes | Serious | cat.forms, best-practice | failure | +| [landmark-banner-is-top-level](https://dequeuniversity.com/rules/axe/4.0/landmark-banner-is-top-level?application=RuleDescription) | Ensures the banner landmark is at top level | Moderate | cat.semantics, best-practice | failure | +| [landmark-complementary-is-top-level](https://dequeuniversity.com/rules/axe/4.0/landmark-complementary-is-top-level?application=RuleDescription) | Ensures the complementary landmark or aside is at top level | Moderate | cat.semantics, best-practice | failure | +| [landmark-contentinfo-is-top-level](https://dequeuniversity.com/rules/axe/4.0/landmark-contentinfo-is-top-level?application=RuleDescription) | Ensures the contentinfo landmark is at top level | Moderate | cat.semantics, best-practice | failure | +| [landmark-main-is-top-level](https://dequeuniversity.com/rules/axe/4.0/landmark-main-is-top-level?application=RuleDescription) | Ensures the main landmark is at top level | Moderate | cat.semantics, best-practice | failure | +| [landmark-no-duplicate-banner](https://dequeuniversity.com/rules/axe/4.0/landmark-no-duplicate-banner?application=RuleDescription) | Ensures the document has at most one banner landmark | Moderate | cat.semantics, best-practice | failure | +| [landmark-no-duplicate-contentinfo](https://dequeuniversity.com/rules/axe/4.0/landmark-no-duplicate-contentinfo?application=RuleDescription) | Ensures the document has at most one contentinfo landmark | Moderate | cat.semantics, best-practice | failure | +| [landmark-no-duplicate-main](https://dequeuniversity.com/rules/axe/4.0/landmark-no-duplicate-main?application=RuleDescription) | Ensures the document has at most one main landmark | Moderate | cat.semantics, best-practice | failure | +| [landmark-one-main](https://dequeuniversity.com/rules/axe/4.0/landmark-one-main?application=RuleDescription) | Ensures the document has a main landmark | Moderate | cat.semantics, best-practice | failure | +| [landmark-unique](https://dequeuniversity.com/rules/axe/4.0/landmark-unique?application=RuleDescription) | Landmarks must have a unique role or role/label/title (i.e. accessible name) combination | Moderate | cat.semantics, best-practice | failure | +| [meta-viewport-large](https://dequeuniversity.com/rules/axe/4.0/meta-viewport-large?application=RuleDescription) | Ensures <meta name="viewport"> can scale a significant amount | Minor | cat.sensory-and-visual-cues, best-practice | failure | +| [meta-viewport](https://dequeuniversity.com/rules/axe/4.0/meta-viewport?application=RuleDescription) | Ensures <meta name="viewport"> does not disable text scaling and zooming | Critical | cat.sensory-and-visual-cues, best-practice | failure | +| [page-has-heading-one](https://dequeuniversity.com/rules/axe/4.0/page-has-heading-one?application=RuleDescription) | Ensure that the page, or at least one of its frames contains a level-one heading | Moderate | cat.semantics, best-practice | failure | +| [presentation-role-conflict](https://dequeuniversity.com/rules/axe/4.0/presentation-role-conflict?application=RuleDescription) | Flags elements whose role is none or presentation and which cause the role conflict resolution to trigger. | Minor | cat.aria, best-practice | failure | +| [region](https://dequeuniversity.com/rules/axe/4.0/region?application=RuleDescription) | Ensures all page content is contained by landmarks | Moderate | cat.keyboard, best-practice | failure | +| [scope-attr-valid](https://dequeuniversity.com/rules/axe/4.0/scope-attr-valid?application=RuleDescription) | Ensures the scope attribute is used correctly on tables | Moderate, Critical | cat.tables, best-practice | failure | +| [skip-link](https://dequeuniversity.com/rules/axe/4.0/skip-link?application=RuleDescription) | Ensure all skip links have a focusable target | Moderate | cat.keyboard, best-practice | failure, needs review | +| [tabindex](https://dequeuniversity.com/rules/axe/4.0/tabindex?application=RuleDescription) | Ensures tabindex attribute values are not greater than 0 | Serious | cat.keyboard, best-practice | failure | +| [table-duplicate-name](https://dequeuniversity.com/rules/axe/4.0/table-duplicate-name?application=RuleDescription) | Ensure that tables do not have the same summary and caption | Minor | cat.tables, best-practice | failure | ## Experimental Rules @@ -113,9 +113,9 @@ Rules we are still testing and developing. They are not enabled by default in ax | [css-orientation-lock](https://dequeuniversity.com/rules/axe/4.0/css-orientation-lock?application=RuleDescription) | Ensures content is not locked to any specific display orientation, and the content is operable in all display orientations | Serious | cat.structure, wcag134, wcag21aa, experimental | failure, needs review | | [focus-order-semantics](https://dequeuniversity.com/rules/axe/4.0/focus-order-semantics?application=RuleDescription) | Ensures elements in the focus order have an appropriate role | Minor | cat.keyboard, best-practice, experimental | failure | | [hidden-content](https://dequeuniversity.com/rules/axe/4.0/hidden-content?application=RuleDescription) | Informs users about hidden content. | Minor | cat.structure, experimental, review-item, best-practice | failure, needs review | -| [label-content-name-mismatch](https://dequeuniversity.com/rules/axe/4.0/label-content-name-mismatch?application=RuleDescription) | Ensures that elements labelled through their content must have their visible text as part of their accessible name | Serious | wcag21a, wcag253, experimental | failure | +| [label-content-name-mismatch](https://dequeuniversity.com/rules/axe/4.0/label-content-name-mismatch?application=RuleDescription) | Ensures that elements labelled through their content must have their visible text as part of their accessible name | Serious | cat.semantics, wcag21a, wcag253, experimental | failure | | [link-in-text-block](https://dequeuniversity.com/rules/axe/4.0/link-in-text-block?application=RuleDescription) | Links can be distinguished without relying on color | Serious | cat.color, experimental, wcag2a, wcag141 | failure, needs review | -| [no-autoplay-audio](https://dequeuniversity.com/rules/axe/4.0/no-autoplay-audio?application=RuleDescription) | Ensures <video> or <audio> elements do not autoplay audio for more than 3 seconds without a control mechanism to stop or mute the audio | Moderate | wcag2a, wcag142, experimental | failure, needs review | +| [no-autoplay-audio](https://dequeuniversity.com/rules/axe/4.0/no-autoplay-audio?application=RuleDescription) | Ensures <video> or <audio> elements do not autoplay audio for more than 3 seconds without a control mechanism to stop or mute the audio | Moderate | cat.time-and-media, wcag2a, wcag142, experimental | failure, needs review | | [p-as-heading](https://dequeuniversity.com/rules/axe/4.0/p-as-heading?application=RuleDescription) | Ensure p elements are not used to style headings | Serious | cat.semantics, wcag2a, wcag131, experimental | failure | | [table-fake-caption](https://dequeuniversity.com/rules/axe/4.0/table-fake-caption?application=RuleDescription) | Ensure that tables with a caption use the <caption> element. | Serious | cat.tables, experimental, wcag2a, wcag131, section508, section508.22.g | failure | | [td-has-header](https://dequeuniversity.com/rules/axe/4.0/td-has-header?application=RuleDescription) | Ensure that each non-empty data cell in a large table has one or more table headers | Critical | cat.tables, experimental, wcag2a, wcag131, section508, section508.22.g | failure | diff --git a/lib/rules/accesskeys.json b/lib/rules/accesskeys.json index 6918b5484b..687d98a995 100644 --- a/lib/rules/accesskeys.json +++ b/lib/rules/accesskeys.json @@ -2,7 +2,7 @@ "id": "accesskeys", "selector": "[accesskey]", "excludeHidden": false, - "tags": ["best-practice", "cat.keyboard"], + "tags": ["cat.keyboard", "best-practice"], "metadata": { "description": "Ensures every accesskey attribute value is unique", "help": "accesskey attribute value must be unique" diff --git a/lib/rules/aria-input-field-name.json b/lib/rules/aria-input-field-name.json index c181a79e01..fa683d1468 100644 --- a/lib/rules/aria-input-field-name.json +++ b/lib/rules/aria-input-field-name.json @@ -2,7 +2,7 @@ "id": "aria-input-field-name", "selector": "[role=\"combobox\"], [role=\"listbox\"], [role=\"searchbox\"], [role=\"slider\"], [role=\"spinbutton\"], [role=\"textbox\"]", "matches": "aria-form-field-name-matches", - "tags": ["wcag2a", "wcag412"], + "tags": ["cat.aria", "wcag2a", "wcag412"], "metadata": { "description": "Ensures every ARIA input field has an accessible name", "help": "ARIA input fields must have an accessible name" diff --git a/lib/rules/aria-toggle-field-name.json b/lib/rules/aria-toggle-field-name.json index 3095f5ab52..72ed88a275 100644 --- a/lib/rules/aria-toggle-field-name.json +++ b/lib/rules/aria-toggle-field-name.json @@ -2,7 +2,7 @@ "id": "aria-toggle-field-name", "selector": "[role=\"checkbox\"], [role=\"menuitemcheckbox\"], [role=\"menuitemradio\"], [role=\"radio\"], [role=\"switch\"]", "matches": "aria-form-field-name-matches", - "tags": ["wcag2a", "wcag412"], + "tags": ["cat.aria", "wcag2a", "wcag412"], "metadata": { "description": "Ensures every ARIA toggle field has an accessible name", "help": "ARIA toggle fields have an accessible name" diff --git a/lib/rules/aria-tooltip-name.json b/lib/rules/aria-tooltip-name.json index f36ebb0e85..895f29bded 100644 --- a/lib/rules/aria-tooltip-name.json +++ b/lib/rules/aria-tooltip-name.json @@ -2,7 +2,7 @@ "id": "aria-tooltip-name", "selector": "[role=\"tooltip\"]", "matches": "aria-form-field-name-matches", - "tags": ["wcag2a", "wcag412"], + "tags": ["cat.aria", "wcag2a", "wcag412"], "metadata": { "description": "Ensures every ARIA tooltip node has an accessible name", "help": "ARIA tooltip ndoes must have an accessible name" diff --git a/lib/rules/avoid-inline-spacing.json b/lib/rules/avoid-inline-spacing.json index 5c55631b1e..89f1aed170 100644 --- a/lib/rules/avoid-inline-spacing.json +++ b/lib/rules/avoid-inline-spacing.json @@ -1,7 +1,7 @@ { "id": "avoid-inline-spacing", "selector": "[style]", - "tags": ["wcag21aa", "wcag1412"], + "tags": ["cat.structure", "wcag21aa", "wcag1412"], "metadata": { "description": "Ensure that text spacing set through style attributes can be adjusted with custom stylesheets", "help": "Inline text spacing must be adjustable with custom stylesheets" diff --git a/lib/rules/identical-links-same-purpose.json b/lib/rules/identical-links-same-purpose.json index 9b024d884d..9789bf4eac 100644 --- a/lib/rules/identical-links-same-purpose.json +++ b/lib/rules/identical-links-same-purpose.json @@ -3,7 +3,7 @@ "selector": "a[href], area[href], [role=\"link\"]", "excludeHidden": false, "matches": "identical-links-same-purpose-matches", - "tags": ["wcag2aaa", "wcag249", "best-practice"], + "tags": ["cat.semantics", "wcag2aaa", "wcag249", "best-practice"], "metadata": { "description": "Ensure that links with the same accessible name serve a similar purpose", "help": "Links with the same name have a similar purpose" diff --git a/lib/rules/label-content-name-mismatch.json b/lib/rules/label-content-name-mismatch.json index 5c3d4b6bad..c44335617c 100644 --- a/lib/rules/label-content-name-mismatch.json +++ b/lib/rules/label-content-name-mismatch.json @@ -1,7 +1,7 @@ { "id": "label-content-name-mismatch", "matches": "label-content-name-mismatch-matches", - "tags": ["wcag21a", "wcag253", "experimental"], + "tags": ["cat.semantics", "wcag21a", "wcag253", "experimental"], "metadata": { "description": "Ensures that elements labelled through their content must have their visible text as part of their accessible name", "help": "Elements must have their visible text as part of their accessible name" diff --git a/lib/rules/no-autoplay-audio.json b/lib/rules/no-autoplay-audio.json index 066eaafdd2..fa1161f617 100644 --- a/lib/rules/no-autoplay-audio.json +++ b/lib/rules/no-autoplay-audio.json @@ -3,7 +3,7 @@ "excludeHidden": false, "selector": "audio[autoplay], video[autoplay]", "matches": "no-autoplay-audio-matches", - "tags": ["wcag2a", "wcag142", "experimental"], + "tags": ["cat.time-and-media", "wcag2a", "wcag142", "experimental"], "metadata": { "description": "Ensures