',
'nodeLabel': 'body > section > div#aria-valid-attr-value',
},
@@ -460,7 +504,6 @@ const expectations = {
node: {
'type': 'node',
'selector': 'body > section > div#duplicate-id-aria',
- 'path': '2,HTML,1,BODY,47,SECTION,0,DIV',
'snippet': '
',
'explanation': 'Fix any of the following:\n Document has multiple elements referenced with ARIA with the same id attribute: duplicate-id-aria',
'nodeLabel': 'body > section > div#duplicate-id-aria',
@@ -471,7 +514,6 @@ const expectations = {
{
relatedNode: {
'type': 'node',
- 'path': '2,HTML,1,BODY,47,SECTION,0,DIV,0,DIV',
'selector': 'body > section > div#duplicate-id-aria > div#duplicate-id-aria',
'snippet': '
',
'nodeLabel': 'body > section > div#duplicate-id-aria > div#duplicate-id-aria',
@@ -508,7 +550,6 @@ const expectations = {
node: {
'type': 'node',
'selector': 'body > section > input#form-field-multiple-labels',
- 'path': '2,HTML,1,BODY,51,SECTION,2,INPUT',
'snippet': ' ',
'explanation': 'Fix all of the following:\n Multiple label elements is not widely supported in assistive technologies. Ensure the first label contains all necessary information.',
'nodeLabel': 'body > section > input#form-field-multiple-labels',
@@ -519,7 +560,6 @@ const expectations = {
{
relatedNode: {
'type': 'node',
- 'path': '2,HTML,1,BODY,51,SECTION,0,LABEL',
'selector': 'body > section > label#label1',
'snippet': '',
'nodeLabel': 'label1',
@@ -528,7 +568,6 @@ const expectations = {
{
relatedNode: {
'type': 'node',
- 'path': '2,HTML,1,BODY,51,SECTION,1,LABEL',
'selector': 'body > section > label',
'snippet': '',
'nodeLabel': 'label2',
@@ -564,7 +603,6 @@ const expectations = {
node: {
'type': 'node',
'selector': 'body > section > h3',
- 'path': '2,HTML,1,BODY,55,SECTION,1,H3',
'snippet': '',
'explanation': 'Fix any of the following:\n Heading order invalid',
'nodeLabel': 'sub-sub-header',
diff --git a/core/audits/accessibility/aria-conditional-attr.js b/core/audits/accessibility/aria-conditional-attr.js
new file mode 100644
index 000000000000..3eca08d669f8
--- /dev/null
+++ b/core/audits/accessibility/aria-conditional-attr.js
@@ -0,0 +1,43 @@
+/**
+ * @license
+ * Copyright 2024 Google LLC
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+/**
+ * @fileoverview Ensures that ARIA attributes are used as specified for element roles.
+ * See base class in axe-audit.js for audit() implementation.
+ */
+
+import AxeAudit from './axe-audit.js';
+import * as i18n from '../../lib/i18n/i18n.js';
+
+const UIStrings = {
+ /** Title of an accessibility audit that checks if ARIA attributes are used as specified for element roles. This title is descriptive of the successful state and is shown to users when no user action is required. */
+ title: 'ARIA attributes are used as specified for the element\'s role',
+ /** Title of an accessibility audit that checks if ARIA attributes are used as specified for element roles. This title is descriptive of the failing state and is shown to users when there is a failure that needs to be addressed. */
+ failureTitle: 'ARIA attributes are not used as specified for the element\'s role',
+ /** Description of a Lighthouse audit that tells the user *why* they should try to pass. This is displayed after a user expands the section to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
+ description: 'Some ARIA attributes are only allowed on an element under certain conditions. ' +
+ '[Learn more about conditional ARIA attributes](https://dequeuniversity.com/rules/axe/4.9/aria-conditional-attr).',
+};
+
+const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
+
+class AriaConditionalAttr extends AxeAudit {
+ /**
+ * @return {LH.Audit.Meta}
+ */
+ static get meta() {
+ return {
+ id: 'aria-conditional-attr',
+ title: str_(UIStrings.title),
+ failureTitle: str_(UIStrings.failureTitle),
+ description: str_(UIStrings.description),
+ requiredArtifacts: ['Accessibility'],
+ };
+ }
+}
+
+export default AriaConditionalAttr;
+export {UIStrings};
diff --git a/core/audits/accessibility/aria-deprecated-role.js b/core/audits/accessibility/aria-deprecated-role.js
new file mode 100644
index 000000000000..fc1d5e3cfffd
--- /dev/null
+++ b/core/audits/accessibility/aria-deprecated-role.js
@@ -0,0 +1,43 @@
+/**
+ * @license
+ * Copyright 2024 Google LLC
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+/**
+ * @fileoverview Ensures that deprecated ARIA roles are not used.
+ * See base class in axe-audit.js for audit() implementation.
+ */
+
+import AxeAudit from './axe-audit.js';
+import * as i18n from '../../lib/i18n/i18n.js';
+
+const UIStrings = {
+ /** Title of an accessibility audit that checks if deprecated ARIA roles are used. This title is descriptive of the successful state and is shown to users when no user action is required. */
+ title: 'Deprecated ARIA roles were not used',
+ /** Title of an accessibility audit that checks if deprecated ARIA roles are used. This title is descriptive of the failing state and is shown to users when there is a failure that needs to be addressed. */
+ failureTitle: 'Deprecated ARIA roles were used',
+ /** Description of a Lighthouse audit that tells the user *why* they should try to pass. This is displayed after a user expands the section to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
+ description: 'Deprecated ARIA roles may not be processed correctly by assistive technology. ' +
+ '[Learn more about deprecated ARIA roles](https://dequeuniversity.com/rules/axe/4.9/aria-deprecated-role).',
+};
+
+const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
+
+class AriaDeprecatedRole extends AxeAudit {
+ /**
+ * @return {LH.Audit.Meta}
+ */
+ static get meta() {
+ return {
+ id: 'aria-deprecated-role',
+ title: str_(UIStrings.title),
+ failureTitle: str_(UIStrings.failureTitle),
+ description: str_(UIStrings.description),
+ requiredArtifacts: ['Accessibility'],
+ };
+ }
+}
+
+export default AriaDeprecatedRole;
+export {UIStrings};
diff --git a/core/audits/accessibility/aria-prohibited-attr.js b/core/audits/accessibility/aria-prohibited-attr.js
new file mode 100644
index 000000000000..f4f56114b1e1
--- /dev/null
+++ b/core/audits/accessibility/aria-prohibited-attr.js
@@ -0,0 +1,44 @@
+/**
+ * @license
+ * Copyright 2024 Google LLC
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+/**
+ * @fileoverview Ensures that deprecated ARIA roles are not used.
+ * See base class in axe-audit.js for audit() implementation.
+ */
+
+import AxeAudit from './axe-audit.js';
+import * as i18n from '../../lib/i18n/i18n.js';
+
+const UIStrings = {
+ /** Title of an accessibility audit that checks if elements use prohibited ARIA attributes. This title is descriptive of the successful state and is shown to users when no user action is required. */
+ title: 'Elements use only permitted ARIA attributes',
+ /** Title of an accessibility audit that checks if elements use prohibited ARIA attributes. This title is descriptive of the failing state and is shown to users when there is a failure that needs to be addressed. */
+ failureTitle: 'Elements use prohibited ARIA attributes',
+ /** Description of a Lighthouse audit that tells the user *why* they should try to pass. This is displayed after a user expands the section to see more. No character length limits. The last sentence starting with 'Learn' becomes link text to additional documentation. */
+ description: 'Using ARIA attributes in roles where they are prohibited can mean that important ' +
+ 'information is not communicated to users of assistive technologies. ' +
+ '[Learn more about prohibited ARIA roles](https://dequeuniversity.com/rules/axe/4.9/aria-prohibited-attr).',
+};
+
+const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
+
+class AriaProhibitedAttr extends AxeAudit {
+ /**
+ * @return {LH.Audit.Meta}
+ */
+ static get meta() {
+ return {
+ id: 'aria-prohibited-attr',
+ title: str_(UIStrings.title),
+ failureTitle: str_(UIStrings.failureTitle),
+ description: str_(UIStrings.description),
+ requiredArtifacts: ['Accessibility'],
+ };
+ }
+}
+
+export default AriaProhibitedAttr;
+export {UIStrings};
diff --git a/core/config/default-config.js b/core/config/default-config.js
index ac261f0ba453..2aeb4562cc83 100644
--- a/core/config/default-config.js
+++ b/core/config/default-config.js
@@ -197,12 +197,15 @@ const defaultConfig = {
'accessibility/aria-allowed-attr',
'accessibility/aria-allowed-role',
'accessibility/aria-command-name',
+ 'accessibility/aria-conditional-attr',
+ 'accessibility/aria-deprecated-role',
'accessibility/aria-dialog-name',
'accessibility/aria-hidden-body',
'accessibility/aria-hidden-focus',
'accessibility/aria-input-field-name',
'accessibility/aria-meter-name',
'accessibility/aria-progressbar-name',
+ 'accessibility/aria-prohibited-attr',
'accessibility/aria-required-attr',
'accessibility/aria-required-children',
'accessibility/aria-required-parent',
@@ -455,12 +458,15 @@ const defaultConfig = {
{id: 'aria-allowed-attr', weight: 10, group: 'a11y-aria'},
{id: 'aria-allowed-role', weight: 1, group: 'a11y-aria'},
{id: 'aria-command-name', weight: 7, group: 'a11y-aria'},
+ {id: 'aria-conditional-attr', weight: 7, group: 'a11y-aria'},
+ {id: 'aria-deprecated-role', weight: 1, group: 'a11y-aria'},
{id: 'aria-dialog-name', weight: 7, group: 'a11y-aria'},
{id: 'aria-hidden-body', weight: 10, group: 'a11y-aria'},
{id: 'aria-hidden-focus', weight: 7, group: 'a11y-aria'},
{id: 'aria-input-field-name', weight: 7, group: 'a11y-aria'},
{id: 'aria-meter-name', weight: 7, group: 'a11y-aria'},
{id: 'aria-progressbar-name', weight: 7, group: 'a11y-aria'},
+ {id: 'aria-prohibited-attr', weight: 7, group: 'a11y-aria'},
{id: 'aria-required-attr', weight: 10, group: 'a11y-aria'},
{id: 'aria-required-children', weight: 10, group: 'a11y-aria'},
{id: 'aria-required-parent', weight: 10, group: 'a11y-aria'},
diff --git a/core/gather/gatherers/accessibility.js b/core/gather/gatherers/accessibility.js
index 5f9eaea5910b..003a9062bc6d 100644
--- a/core/gather/gatherers/accessibility.js
+++ b/core/gather/gatherers/accessibility.js
@@ -43,10 +43,10 @@ async function runA11yChecks() {
'area-alt': {enabled: false},
'aria-allowed-role': {enabled: true},
'aria-braille-equivalent': {enabled: false},
- 'aria-conditional-attr': {enabled: false},
- 'aria-deprecated-role': {enabled: false},
+ 'aria-conditional-attr': {enabled: true},
+ 'aria-deprecated-role': {enabled: true},
'aria-dialog-name': {enabled: true},
- 'aria-prohibited-attr': {enabled: false},
+ 'aria-prohibited-attr': {enabled: true},
'aria-roledescription': {enabled: false},
'aria-treeitem-name': {enabled: true},
'aria-text': {enabled: true},
diff --git a/core/test/fixtures/user-flows/reports/sample-flow-result.json b/core/test/fixtures/user-flows/reports/sample-flow-result.json
index a29ef6f9838e..e2dd0c8a674a 100644
--- a/core/test/fixtures/user-flows/reports/sample-flow-result.json
+++ b/core/test/fixtures/user-flows/reports/sample-flow-result.json
@@ -2050,6 +2050,30 @@
"score": null,
"scoreDisplayMode": "notApplicable"
},
+ "aria-conditional-attr": {
+ "id": "aria-conditional-attr",
+ "title": "ARIA attributes are used as specified for the element's role",
+ "description": "Some ARIA attributes are only allowed on an element under certain conditions. [Learn more about conditional ARIA attributes](https://dequeuniversity.com/rules/axe/4.9/aria-conditional-attr).",
+ "score": 1,
+ "scoreDisplayMode": "binary",
+ "details": {
+ "type": "table",
+ "headings": [],
+ "items": []
+ }
+ },
+ "aria-deprecated-role": {
+ "id": "aria-deprecated-role",
+ "title": "Deprecated ARIA roles were not used",
+ "description": "Deprecated ARIA roles may not be processed correctly by assistive technology. [Learn more about deprecated ARIA roles](https://dequeuniversity.com/rules/axe/4.9/aria-deprecated-role).",
+ "score": 1,
+ "scoreDisplayMode": "binary",
+ "details": {
+ "type": "table",
+ "headings": [],
+ "items": []
+ }
+ },
"aria-dialog-name": {
"id": "aria-dialog-name",
"title": "Elements with `role=\"dialog\"` or `role=\"alertdialog\"` have accessible names.",
@@ -2107,6 +2131,18 @@
"score": null,
"scoreDisplayMode": "notApplicable"
},
+ "aria-prohibited-attr": {
+ "id": "aria-prohibited-attr",
+ "title": "Elements use only permitted ARIA attributes",
+ "description": "Using ARIA attributes in roles where they are prohibited can mean that important information is not communicated to users of assistive technologies. [Learn more about prohibited ARIA roles](https://dequeuniversity.com/rules/axe/4.9/aria-prohibited-attr).",
+ "score": 1,
+ "scoreDisplayMode": "binary",
+ "details": {
+ "type": "table",
+ "headings": [],
+ "items": []
+ }
+ },
"aria-required-attr": {
"id": "aria-required-attr",
"title": "`[role]`s have all required `[aria-*]` attributes",
@@ -3963,6 +3999,16 @@
"weight": 0,
"group": "a11y-aria"
},
+ {
+ "id": "aria-conditional-attr",
+ "weight": 7,
+ "group": "a11y-aria"
+ },
+ {
+ "id": "aria-deprecated-role",
+ "weight": 1,
+ "group": "a11y-aria"
+ },
{
"id": "aria-dialog-name",
"weight": 7,
@@ -3993,6 +4039,11 @@
"weight": 0,
"group": "a11y-aria"
},
+ {
+ "id": "aria-prohibited-attr",
+ "weight": 7,
+ "group": "a11y-aria"
+ },
{
"id": "aria-required-attr",
"weight": 10,
@@ -6023,648 +6074,666 @@
},
{
"startTime": 165,
- "name": "lh:audit:aria-dialog-name",
+ "name": "lh:audit:aria-conditional-attr",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 166,
- "name": "lh:audit:aria-hidden-body",
+ "name": "lh:audit:aria-deprecated-role",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 167,
- "name": "lh:audit:aria-hidden-focus",
+ "name": "lh:audit:aria-dialog-name",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 168,
- "name": "lh:audit:aria-input-field-name",
+ "name": "lh:audit:aria-hidden-body",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 169,
- "name": "lh:audit:aria-meter-name",
+ "name": "lh:audit:aria-hidden-focus",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 170,
- "name": "lh:audit:aria-progressbar-name",
+ "name": "lh:audit:aria-input-field-name",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 171,
- "name": "lh:audit:aria-required-attr",
+ "name": "lh:audit:aria-meter-name",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 172,
- "name": "lh:audit:aria-required-children",
+ "name": "lh:audit:aria-progressbar-name",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 173,
- "name": "lh:audit:aria-required-parent",
+ "name": "lh:audit:aria-prohibited-attr",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 174,
- "name": "lh:audit:aria-roles",
+ "name": "lh:audit:aria-required-attr",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 175,
- "name": "lh:audit:aria-text",
+ "name": "lh:audit:aria-required-children",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 176,
- "name": "lh:audit:aria-toggle-field-name",
+ "name": "lh:audit:aria-required-parent",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 177,
- "name": "lh:audit:aria-tooltip-name",
+ "name": "lh:audit:aria-roles",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 178,
- "name": "lh:audit:aria-treeitem-name",
+ "name": "lh:audit:aria-text",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 179,
- "name": "lh:audit:aria-valid-attr-value",
+ "name": "lh:audit:aria-toggle-field-name",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 180,
- "name": "lh:audit:aria-valid-attr",
+ "name": "lh:audit:aria-tooltip-name",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 181,
- "name": "lh:audit:button-name",
+ "name": "lh:audit:aria-treeitem-name",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 182,
- "name": "lh:audit:bypass",
+ "name": "lh:audit:aria-valid-attr-value",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 183,
- "name": "lh:audit:color-contrast",
+ "name": "lh:audit:aria-valid-attr",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 184,
- "name": "lh:audit:definition-list",
+ "name": "lh:audit:button-name",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 185,
- "name": "lh:audit:dlitem",
+ "name": "lh:audit:bypass",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 186,
- "name": "lh:audit:document-title",
+ "name": "lh:audit:color-contrast",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 187,
- "name": "lh:audit:duplicate-id-aria",
+ "name": "lh:audit:definition-list",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 188,
- "name": "lh:audit:empty-heading",
+ "name": "lh:audit:dlitem",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 189,
- "name": "lh:audit:form-field-multiple-labels",
+ "name": "lh:audit:document-title",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 190,
- "name": "lh:audit:frame-title",
+ "name": "lh:audit:duplicate-id-aria",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 191,
- "name": "lh:audit:heading-order",
+ "name": "lh:audit:empty-heading",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 192,
- "name": "lh:audit:html-has-lang",
+ "name": "lh:audit:form-field-multiple-labels",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 193,
- "name": "lh:audit:html-lang-valid",
+ "name": "lh:audit:frame-title",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 194,
- "name": "lh:audit:html-xml-lang-mismatch",
+ "name": "lh:audit:heading-order",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 195,
- "name": "lh:audit:identical-links-same-purpose",
+ "name": "lh:audit:html-has-lang",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 196,
- "name": "lh:audit:image-alt",
+ "name": "lh:audit:html-lang-valid",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 197,
- "name": "lh:audit:image-redundant-alt",
+ "name": "lh:audit:html-xml-lang-mismatch",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 198,
- "name": "lh:audit:input-button-name",
+ "name": "lh:audit:identical-links-same-purpose",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 199,
- "name": "lh:audit:input-image-alt",
+ "name": "lh:audit:image-alt",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 200,
- "name": "lh:audit:label-content-name-mismatch",
+ "name": "lh:audit:image-redundant-alt",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 201,
- "name": "lh:audit:label",
+ "name": "lh:audit:input-button-name",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 202,
- "name": "lh:audit:landmark-one-main",
+ "name": "lh:audit:input-image-alt",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 203,
- "name": "lh:audit:link-name",
+ "name": "lh:audit:label-content-name-mismatch",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 204,
- "name": "lh:audit:link-in-text-block",
+ "name": "lh:audit:label",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 205,
- "name": "lh:audit:list",
+ "name": "lh:audit:landmark-one-main",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 206,
- "name": "lh:audit:listitem",
+ "name": "lh:audit:link-name",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 207,
- "name": "lh:audit:meta-refresh",
+ "name": "lh:audit:link-in-text-block",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 208,
- "name": "lh:audit:meta-viewport",
+ "name": "lh:audit:list",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 209,
- "name": "lh:audit:object-alt",
+ "name": "lh:audit:listitem",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 210,
- "name": "lh:audit:select-name",
+ "name": "lh:audit:meta-refresh",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 211,
- "name": "lh:audit:skip-link",
+ "name": "lh:audit:meta-viewport",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 212,
- "name": "lh:audit:tabindex",
+ "name": "lh:audit:object-alt",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 213,
- "name": "lh:audit:table-duplicate-name",
+ "name": "lh:audit:select-name",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 214,
- "name": "lh:audit:table-fake-caption",
+ "name": "lh:audit:skip-link",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 215,
- "name": "lh:audit:target-size",
+ "name": "lh:audit:tabindex",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 216,
- "name": "lh:audit:td-has-header",
+ "name": "lh:audit:table-duplicate-name",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 217,
- "name": "lh:audit:td-headers-attr",
+ "name": "lh:audit:table-fake-caption",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 218,
- "name": "lh:audit:th-has-data-cells",
+ "name": "lh:audit:target-size",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 219,
- "name": "lh:audit:valid-lang",
+ "name": "lh:audit:td-has-header",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 220,
- "name": "lh:audit:video-caption",
+ "name": "lh:audit:td-headers-attr",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 221,
- "name": "lh:audit:custom-controls-labels",
+ "name": "lh:audit:th-has-data-cells",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 222,
- "name": "lh:audit:custom-controls-roles",
+ "name": "lh:audit:valid-lang",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 223,
- "name": "lh:audit:focus-traps",
+ "name": "lh:audit:video-caption",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 224,
- "name": "lh:audit:focusable-controls",
+ "name": "lh:audit:custom-controls-labels",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 225,
- "name": "lh:audit:interactive-element-affordance",
+ "name": "lh:audit:custom-controls-roles",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 226,
- "name": "lh:audit:logical-tab-order",
+ "name": "lh:audit:focus-traps",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 227,
- "name": "lh:audit:managed-focus",
+ "name": "lh:audit:focusable-controls",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 228,
- "name": "lh:audit:offscreen-content-hidden",
+ "name": "lh:audit:interactive-element-affordance",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 229,
- "name": "lh:audit:use-landmarks",
+ "name": "lh:audit:logical-tab-order",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 230,
- "name": "lh:audit:visual-order-follows-dom",
+ "name": "lh:audit:managed-focus",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 231,
- "name": "lh:audit:uses-long-cache-ttl",
+ "name": "lh:audit:offscreen-content-hidden",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 232,
- "name": "lh:audit:total-byte-weight",
+ "name": "lh:audit:use-landmarks",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 233,
- "name": "lh:audit:offscreen-images",
+ "name": "lh:audit:visual-order-follows-dom",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 234,
- "name": "lh:audit:render-blocking-resources",
+ "name": "lh:audit:uses-long-cache-ttl",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 235,
- "name": "lh:computed:UnusedCSS",
+ "name": "lh:audit:total-byte-weight",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 236,
- "name": "lh:computed:NavigationInsights",
+ "name": "lh:audit:offscreen-images",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 237,
- "name": "lh:computed:FirstContentfulPaint",
+ "name": "lh:audit:render-blocking-resources",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 238,
- "name": "lh:audit:unminified-css",
+ "name": "lh:computed:UnusedCSS",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 239,
- "name": "lh:audit:unminified-javascript",
+ "name": "lh:computed:NavigationInsights",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 240,
- "name": "lh:audit:unused-css-rules",
+ "name": "lh:computed:FirstContentfulPaint",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 241,
- "name": "lh:audit:unused-javascript",
+ "name": "lh:audit:unminified-css",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 242,
- "name": "lh:audit:modern-image-formats",
+ "name": "lh:audit:unminified-javascript",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 243,
- "name": "lh:audit:uses-optimized-images",
+ "name": "lh:audit:unused-css-rules",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 244,
- "name": "lh:audit:uses-text-compression",
+ "name": "lh:audit:unused-javascript",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 245,
- "name": "lh:audit:uses-responsive-images",
+ "name": "lh:audit:modern-image-formats",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 246,
- "name": "lh:computed:ImageRecords",
+ "name": "lh:audit:uses-optimized-images",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 247,
- "name": "lh:audit:efficient-animated-content",
+ "name": "lh:audit:uses-text-compression",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 248,
- "name": "lh:audit:duplicated-javascript",
+ "name": "lh:audit:uses-responsive-images",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 249,
- "name": "lh:audit:legacy-javascript",
+ "name": "lh:computed:ImageRecords",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 250,
- "name": "lh:audit:doctype",
+ "name": "lh:audit:efficient-animated-content",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 251,
- "name": "lh:audit:charset",
+ "name": "lh:audit:duplicated-javascript",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 252,
- "name": "lh:audit:dom-size",
+ "name": "lh:audit:legacy-javascript",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 253,
- "name": "lh:audit:geolocation-on-start",
+ "name": "lh:audit:doctype",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 254,
- "name": "lh:audit:inspector-issues",
+ "name": "lh:audit:charset",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 255,
- "name": "lh:audit:no-document-write",
+ "name": "lh:audit:dom-size",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 256,
- "name": "lh:audit:js-libraries",
+ "name": "lh:audit:geolocation-on-start",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 257,
- "name": "lh:audit:notification-on-start",
+ "name": "lh:audit:inspector-issues",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 258,
- "name": "lh:audit:paste-preventing-inputs",
+ "name": "lh:audit:no-document-write",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 259,
- "name": "lh:audit:uses-passive-event-listeners",
+ "name": "lh:audit:js-libraries",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 260,
- "name": "lh:audit:meta-description",
+ "name": "lh:audit:notification-on-start",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 261,
- "name": "lh:audit:http-status-code",
+ "name": "lh:audit:paste-preventing-inputs",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 262,
- "name": "lh:audit:font-size",
+ "name": "lh:audit:uses-passive-event-listeners",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 263,
- "name": "lh:audit:link-text",
+ "name": "lh:audit:meta-description",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 264,
- "name": "lh:audit:crawlable-anchors",
+ "name": "lh:audit:http-status-code",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 265,
- "name": "lh:audit:is-crawlable",
+ "name": "lh:audit:font-size",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 266,
- "name": "lh:audit:robots-txt",
+ "name": "lh:audit:link-text",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 267,
- "name": "lh:audit:hreflang",
+ "name": "lh:audit:crawlable-anchors",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 268,
- "name": "lh:audit:canonical",
+ "name": "lh:audit:is-crawlable",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 269,
- "name": "lh:audit:structured-data",
+ "name": "lh:audit:robots-txt",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 270,
- "name": "lh:audit:bf-cache",
+ "name": "lh:audit:hreflang",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 271,
+ "name": "lh:audit:canonical",
+ "duration": 1,
+ "entryType": "measure"
+ },
+ {
+ "startTime": 272,
+ "name": "lh:audit:structured-data",
+ "duration": 1,
+ "entryType": "measure"
+ },
+ {
+ "startTime": 273,
+ "name": "lh:audit:bf-cache",
+ "duration": 1,
+ "entryType": "measure"
+ },
+ {
+ "startTime": 274,
"name": "lh:runner:generate",
"duration": 1,
"entryType": "measure"
}
],
- "total": 272
+ "total": 275
},
"i18n": {
"rendererFormattedStrings": {
@@ -7222,6 +7291,18 @@
"core/audits/accessibility/aria-command-name.js | description": [
"audits[aria-command-name].description"
],
+ "core/audits/accessibility/aria-conditional-attr.js | title": [
+ "audits[aria-conditional-attr].title"
+ ],
+ "core/audits/accessibility/aria-conditional-attr.js | description": [
+ "audits[aria-conditional-attr].description"
+ ],
+ "core/audits/accessibility/aria-deprecated-role.js | title": [
+ "audits[aria-deprecated-role].title"
+ ],
+ "core/audits/accessibility/aria-deprecated-role.js | description": [
+ "audits[aria-deprecated-role].description"
+ ],
"core/audits/accessibility/aria-dialog-name.js | title": [
"audits[aria-dialog-name].title"
],
@@ -7258,6 +7339,12 @@
"core/audits/accessibility/aria-progressbar-name.js | description": [
"audits[aria-progressbar-name].description"
],
+ "core/audits/accessibility/aria-prohibited-attr.js | title": [
+ "audits[aria-prohibited-attr].title"
+ ],
+ "core/audits/accessibility/aria-prohibited-attr.js | description": [
+ "audits[aria-prohibited-attr].description"
+ ],
"core/audits/accessibility/aria-required-attr.js | title": [
"audits[aria-required-attr].title"
],
@@ -12306,6 +12393,30 @@
"score": null,
"scoreDisplayMode": "notApplicable"
},
+ "aria-conditional-attr": {
+ "id": "aria-conditional-attr",
+ "title": "ARIA attributes are used as specified for the element's role",
+ "description": "Some ARIA attributes are only allowed on an element under certain conditions. [Learn more about conditional ARIA attributes](https://dequeuniversity.com/rules/axe/4.9/aria-conditional-attr).",
+ "score": 1,
+ "scoreDisplayMode": "binary",
+ "details": {
+ "type": "table",
+ "headings": [],
+ "items": []
+ }
+ },
+ "aria-deprecated-role": {
+ "id": "aria-deprecated-role",
+ "title": "Deprecated ARIA roles were not used",
+ "description": "Deprecated ARIA roles may not be processed correctly by assistive technology. [Learn more about deprecated ARIA roles](https://dequeuniversity.com/rules/axe/4.9/aria-deprecated-role).",
+ "score": 1,
+ "scoreDisplayMode": "binary",
+ "details": {
+ "type": "table",
+ "headings": [],
+ "items": []
+ }
+ },
"aria-dialog-name": {
"id": "aria-dialog-name",
"title": "Elements with `role=\"dialog\"` or `role=\"alertdialog\"` have accessible names.",
@@ -12363,6 +12474,18 @@
"score": null,
"scoreDisplayMode": "notApplicable"
},
+ "aria-prohibited-attr": {
+ "id": "aria-prohibited-attr",
+ "title": "Elements use only permitted ARIA attributes",
+ "description": "Using ARIA attributes in roles where they are prohibited can mean that important information is not communicated to users of assistive technologies. [Learn more about prohibited ARIA roles](https://dequeuniversity.com/rules/axe/4.9/aria-prohibited-attr).",
+ "score": 1,
+ "scoreDisplayMode": "binary",
+ "details": {
+ "type": "table",
+ "headings": [],
+ "items": []
+ }
+ },
"aria-required-attr": {
"id": "aria-required-attr",
"title": "`[role]`s have all required `[aria-*]` attributes",
@@ -14452,6 +14575,16 @@
"weight": 0,
"group": "a11y-aria"
},
+ {
+ "id": "aria-conditional-attr",
+ "weight": 7,
+ "group": "a11y-aria"
+ },
+ {
+ "id": "aria-deprecated-role",
+ "weight": 1,
+ "group": "a11y-aria"
+ },
{
"id": "aria-dialog-name",
"weight": 7,
@@ -14482,6 +14615,11 @@
"weight": 0,
"group": "a11y-aria"
},
+ {
+ "id": "aria-prohibited-attr",
+ "weight": 7,
+ "group": "a11y-aria"
+ },
{
"id": "aria-required-attr",
"weight": 10,
@@ -15853,474 +15991,492 @@
},
{
"startTime": 35,
- "name": "lh:audit:aria-dialog-name",
+ "name": "lh:audit:aria-conditional-attr",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 36,
- "name": "lh:audit:aria-hidden-body",
+ "name": "lh:audit:aria-deprecated-role",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 37,
- "name": "lh:audit:aria-hidden-focus",
+ "name": "lh:audit:aria-dialog-name",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 38,
- "name": "lh:audit:aria-input-field-name",
+ "name": "lh:audit:aria-hidden-body",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 39,
- "name": "lh:audit:aria-meter-name",
+ "name": "lh:audit:aria-hidden-focus",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 40,
- "name": "lh:audit:aria-progressbar-name",
+ "name": "lh:audit:aria-input-field-name",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 41,
- "name": "lh:audit:aria-required-attr",
+ "name": "lh:audit:aria-meter-name",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 42,
- "name": "lh:audit:aria-required-children",
+ "name": "lh:audit:aria-progressbar-name",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 43,
- "name": "lh:audit:aria-required-parent",
+ "name": "lh:audit:aria-prohibited-attr",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 44,
- "name": "lh:audit:aria-roles",
+ "name": "lh:audit:aria-required-attr",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 45,
- "name": "lh:audit:aria-text",
+ "name": "lh:audit:aria-required-children",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 46,
- "name": "lh:audit:aria-toggle-field-name",
+ "name": "lh:audit:aria-required-parent",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 47,
- "name": "lh:audit:aria-tooltip-name",
+ "name": "lh:audit:aria-roles",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 48,
- "name": "lh:audit:aria-treeitem-name",
+ "name": "lh:audit:aria-text",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 49,
- "name": "lh:audit:aria-valid-attr-value",
+ "name": "lh:audit:aria-toggle-field-name",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 50,
- "name": "lh:audit:aria-valid-attr",
+ "name": "lh:audit:aria-tooltip-name",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 51,
- "name": "lh:audit:button-name",
+ "name": "lh:audit:aria-treeitem-name",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 52,
- "name": "lh:audit:bypass",
+ "name": "lh:audit:aria-valid-attr-value",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 53,
- "name": "lh:audit:color-contrast",
+ "name": "lh:audit:aria-valid-attr",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 54,
- "name": "lh:audit:definition-list",
+ "name": "lh:audit:button-name",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 55,
- "name": "lh:audit:dlitem",
+ "name": "lh:audit:bypass",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 56,
- "name": "lh:audit:document-title",
+ "name": "lh:audit:color-contrast",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 57,
- "name": "lh:audit:duplicate-id-aria",
+ "name": "lh:audit:definition-list",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 58,
- "name": "lh:audit:empty-heading",
+ "name": "lh:audit:dlitem",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 59,
- "name": "lh:audit:form-field-multiple-labels",
+ "name": "lh:audit:document-title",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 60,
- "name": "lh:audit:frame-title",
+ "name": "lh:audit:duplicate-id-aria",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 61,
- "name": "lh:audit:heading-order",
+ "name": "lh:audit:empty-heading",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 62,
- "name": "lh:audit:html-has-lang",
+ "name": "lh:audit:form-field-multiple-labels",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 63,
- "name": "lh:audit:html-lang-valid",
+ "name": "lh:audit:frame-title",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 64,
- "name": "lh:audit:html-xml-lang-mismatch",
+ "name": "lh:audit:heading-order",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 65,
- "name": "lh:audit:identical-links-same-purpose",
+ "name": "lh:audit:html-has-lang",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 66,
- "name": "lh:audit:image-alt",
+ "name": "lh:audit:html-lang-valid",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 67,
- "name": "lh:audit:image-redundant-alt",
+ "name": "lh:audit:html-xml-lang-mismatch",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 68,
- "name": "lh:audit:input-button-name",
+ "name": "lh:audit:identical-links-same-purpose",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 69,
- "name": "lh:audit:input-image-alt",
+ "name": "lh:audit:image-alt",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 70,
- "name": "lh:audit:label-content-name-mismatch",
+ "name": "lh:audit:image-redundant-alt",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 71,
- "name": "lh:audit:label",
+ "name": "lh:audit:input-button-name",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 72,
- "name": "lh:audit:landmark-one-main",
+ "name": "lh:audit:input-image-alt",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 73,
- "name": "lh:audit:link-name",
+ "name": "lh:audit:label-content-name-mismatch",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 74,
- "name": "lh:audit:link-in-text-block",
+ "name": "lh:audit:label",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 75,
- "name": "lh:audit:list",
+ "name": "lh:audit:landmark-one-main",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 76,
- "name": "lh:audit:listitem",
+ "name": "lh:audit:link-name",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 77,
- "name": "lh:audit:meta-refresh",
+ "name": "lh:audit:link-in-text-block",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 78,
- "name": "lh:audit:meta-viewport",
+ "name": "lh:audit:list",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 79,
- "name": "lh:audit:object-alt",
+ "name": "lh:audit:listitem",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 80,
- "name": "lh:audit:select-name",
+ "name": "lh:audit:meta-refresh",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 81,
- "name": "lh:audit:skip-link",
+ "name": "lh:audit:meta-viewport",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 82,
- "name": "lh:audit:tabindex",
+ "name": "lh:audit:object-alt",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 83,
- "name": "lh:audit:table-duplicate-name",
+ "name": "lh:audit:select-name",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 84,
- "name": "lh:audit:table-fake-caption",
+ "name": "lh:audit:skip-link",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 85,
- "name": "lh:audit:target-size",
+ "name": "lh:audit:tabindex",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 86,
- "name": "lh:audit:td-has-header",
+ "name": "lh:audit:table-duplicate-name",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 87,
- "name": "lh:audit:td-headers-attr",
+ "name": "lh:audit:table-fake-caption",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 88,
- "name": "lh:audit:th-has-data-cells",
+ "name": "lh:audit:target-size",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 89,
- "name": "lh:audit:valid-lang",
+ "name": "lh:audit:td-has-header",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 90,
- "name": "lh:audit:video-caption",
+ "name": "lh:audit:td-headers-attr",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 91,
- "name": "lh:audit:custom-controls-labels",
+ "name": "lh:audit:th-has-data-cells",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 92,
- "name": "lh:audit:custom-controls-roles",
+ "name": "lh:audit:valid-lang",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 93,
- "name": "lh:audit:focus-traps",
+ "name": "lh:audit:video-caption",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 94,
- "name": "lh:audit:focusable-controls",
+ "name": "lh:audit:custom-controls-labels",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 95,
- "name": "lh:audit:interactive-element-affordance",
+ "name": "lh:audit:custom-controls-roles",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 96,
- "name": "lh:audit:logical-tab-order",
+ "name": "lh:audit:focus-traps",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 97,
- "name": "lh:audit:managed-focus",
+ "name": "lh:audit:focusable-controls",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 98,
- "name": "lh:audit:offscreen-content-hidden",
+ "name": "lh:audit:interactive-element-affordance",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 99,
- "name": "lh:audit:use-landmarks",
+ "name": "lh:audit:logical-tab-order",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 100,
- "name": "lh:audit:visual-order-follows-dom",
+ "name": "lh:audit:managed-focus",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 101,
- "name": "lh:audit:uses-responsive-images-snapshot",
+ "name": "lh:audit:offscreen-content-hidden",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 102,
- "name": "lh:audit:doctype",
+ "name": "lh:audit:use-landmarks",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 103,
- "name": "lh:audit:dom-size",
+ "name": "lh:audit:visual-order-follows-dom",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 104,
- "name": "lh:audit:js-libraries",
+ "name": "lh:audit:uses-responsive-images-snapshot",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 105,
- "name": "lh:audit:paste-preventing-inputs",
+ "name": "lh:audit:doctype",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 106,
- "name": "lh:audit:meta-description",
+ "name": "lh:audit:dom-size",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 107,
- "name": "lh:audit:font-size",
+ "name": "lh:audit:js-libraries",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 108,
- "name": "lh:audit:link-text",
+ "name": "lh:audit:paste-preventing-inputs",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 109,
- "name": "lh:audit:crawlable-anchors",
+ "name": "lh:audit:meta-description",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 110,
- "name": "lh:audit:robots-txt",
+ "name": "lh:audit:font-size",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 111,
- "name": "lh:audit:structured-data",
+ "name": "lh:audit:link-text",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 112,
+ "name": "lh:audit:crawlable-anchors",
+ "duration": 1,
+ "entryType": "measure"
+ },
+ {
+ "startTime": 113,
+ "name": "lh:audit:robots-txt",
+ "duration": 1,
+ "entryType": "measure"
+ },
+ {
+ "startTime": 114,
+ "name": "lh:audit:structured-data",
+ "duration": 1,
+ "entryType": "measure"
+ },
+ {
+ "startTime": 115,
"name": "lh:runner:generate",
"duration": 1,
"entryType": "measure"
}
],
- "total": 113
+ "total": 116
},
"i18n": {
"rendererFormattedStrings": {
@@ -16446,6 +16602,18 @@
"core/audits/accessibility/aria-command-name.js | description": [
"audits[aria-command-name].description"
],
+ "core/audits/accessibility/aria-conditional-attr.js | title": [
+ "audits[aria-conditional-attr].title"
+ ],
+ "core/audits/accessibility/aria-conditional-attr.js | description": [
+ "audits[aria-conditional-attr].description"
+ ],
+ "core/audits/accessibility/aria-deprecated-role.js | title": [
+ "audits[aria-deprecated-role].title"
+ ],
+ "core/audits/accessibility/aria-deprecated-role.js | description": [
+ "audits[aria-deprecated-role].description"
+ ],
"core/audits/accessibility/aria-dialog-name.js | title": [
"audits[aria-dialog-name].title"
],
@@ -16482,6 +16650,12 @@
"core/audits/accessibility/aria-progressbar-name.js | description": [
"audits[aria-progressbar-name].description"
],
+ "core/audits/accessibility/aria-prohibited-attr.js | title": [
+ "audits[aria-prohibited-attr].title"
+ ],
+ "core/audits/accessibility/aria-prohibited-attr.js | description": [
+ "audits[aria-prohibited-attr].description"
+ ],
"core/audits/accessibility/aria-required-attr.js | title": [
"audits[aria-required-attr].title"
],
@@ -19061,6 +19235,30 @@
"score": null,
"scoreDisplayMode": "notApplicable"
},
+ "aria-conditional-attr": {
+ "id": "aria-conditional-attr",
+ "title": "ARIA attributes are used as specified for the element's role",
+ "description": "Some ARIA attributes are only allowed on an element under certain conditions. [Learn more about conditional ARIA attributes](https://dequeuniversity.com/rules/axe/4.9/aria-conditional-attr).",
+ "score": 1,
+ "scoreDisplayMode": "binary",
+ "details": {
+ "type": "table",
+ "headings": [],
+ "items": []
+ }
+ },
+ "aria-deprecated-role": {
+ "id": "aria-deprecated-role",
+ "title": "Deprecated ARIA roles were not used",
+ "description": "Deprecated ARIA roles may not be processed correctly by assistive technology. [Learn more about deprecated ARIA roles](https://dequeuniversity.com/rules/axe/4.9/aria-deprecated-role).",
+ "score": 1,
+ "scoreDisplayMode": "binary",
+ "details": {
+ "type": "table",
+ "headings": [],
+ "items": []
+ }
+ },
"aria-dialog-name": {
"id": "aria-dialog-name",
"title": "Elements with `role=\"dialog\"` or `role=\"alertdialog\"` have accessible names.",
@@ -19118,6 +19316,18 @@
"score": null,
"scoreDisplayMode": "notApplicable"
},
+ "aria-prohibited-attr": {
+ "id": "aria-prohibited-attr",
+ "title": "Elements use only permitted ARIA attributes",
+ "description": "Using ARIA attributes in roles where they are prohibited can mean that important information is not communicated to users of assistive technologies. [Learn more about prohibited ARIA roles](https://dequeuniversity.com/rules/axe/4.9/aria-prohibited-attr).",
+ "score": 1,
+ "scoreDisplayMode": "binary",
+ "details": {
+ "type": "table",
+ "headings": [],
+ "items": []
+ }
+ },
"aria-required-attr": {
"id": "aria-required-attr",
"title": "`[role]`s have all required `[aria-*]` attributes",
@@ -21086,6 +21296,16 @@
"weight": 0,
"group": "a11y-aria"
},
+ {
+ "id": "aria-conditional-attr",
+ "weight": 7,
+ "group": "a11y-aria"
+ },
+ {
+ "id": "aria-deprecated-role",
+ "weight": 1,
+ "group": "a11y-aria"
+ },
{
"id": "aria-dialog-name",
"weight": 7,
@@ -21116,6 +21336,11 @@
"weight": 0,
"group": "a11y-aria"
},
+ {
+ "id": "aria-prohibited-attr",
+ "weight": 7,
+ "group": "a11y-aria"
+ },
{
"id": "aria-required-attr",
"weight": 10,
@@ -23120,648 +23345,666 @@
},
{
"startTime": 162,
- "name": "lh:audit:aria-dialog-name",
+ "name": "lh:audit:aria-conditional-attr",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 163,
- "name": "lh:audit:aria-hidden-body",
+ "name": "lh:audit:aria-deprecated-role",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 164,
- "name": "lh:audit:aria-hidden-focus",
+ "name": "lh:audit:aria-dialog-name",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 165,
- "name": "lh:audit:aria-input-field-name",
+ "name": "lh:audit:aria-hidden-body",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 166,
- "name": "lh:audit:aria-meter-name",
+ "name": "lh:audit:aria-hidden-focus",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 167,
- "name": "lh:audit:aria-progressbar-name",
+ "name": "lh:audit:aria-input-field-name",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 168,
- "name": "lh:audit:aria-required-attr",
+ "name": "lh:audit:aria-meter-name",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 169,
- "name": "lh:audit:aria-required-children",
+ "name": "lh:audit:aria-progressbar-name",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 170,
- "name": "lh:audit:aria-required-parent",
+ "name": "lh:audit:aria-prohibited-attr",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 171,
- "name": "lh:audit:aria-roles",
+ "name": "lh:audit:aria-required-attr",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 172,
- "name": "lh:audit:aria-text",
+ "name": "lh:audit:aria-required-children",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 173,
- "name": "lh:audit:aria-toggle-field-name",
+ "name": "lh:audit:aria-required-parent",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 174,
- "name": "lh:audit:aria-tooltip-name",
+ "name": "lh:audit:aria-roles",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 175,
- "name": "lh:audit:aria-treeitem-name",
+ "name": "lh:audit:aria-text",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 176,
- "name": "lh:audit:aria-valid-attr-value",
+ "name": "lh:audit:aria-toggle-field-name",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 177,
- "name": "lh:audit:aria-valid-attr",
+ "name": "lh:audit:aria-tooltip-name",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 178,
- "name": "lh:audit:button-name",
+ "name": "lh:audit:aria-treeitem-name",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 179,
- "name": "lh:audit:bypass",
+ "name": "lh:audit:aria-valid-attr-value",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 180,
- "name": "lh:audit:color-contrast",
+ "name": "lh:audit:aria-valid-attr",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 181,
- "name": "lh:audit:definition-list",
+ "name": "lh:audit:button-name",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 182,
- "name": "lh:audit:dlitem",
+ "name": "lh:audit:bypass",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 183,
- "name": "lh:audit:document-title",
+ "name": "lh:audit:color-contrast",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 184,
- "name": "lh:audit:duplicate-id-aria",
+ "name": "lh:audit:definition-list",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 185,
- "name": "lh:audit:empty-heading",
+ "name": "lh:audit:dlitem",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 186,
- "name": "lh:audit:form-field-multiple-labels",
+ "name": "lh:audit:document-title",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 187,
- "name": "lh:audit:frame-title",
+ "name": "lh:audit:duplicate-id-aria",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 188,
- "name": "lh:audit:heading-order",
+ "name": "lh:audit:empty-heading",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 189,
- "name": "lh:audit:html-has-lang",
+ "name": "lh:audit:form-field-multiple-labels",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 190,
- "name": "lh:audit:html-lang-valid",
+ "name": "lh:audit:frame-title",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 191,
- "name": "lh:audit:html-xml-lang-mismatch",
+ "name": "lh:audit:heading-order",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 192,
- "name": "lh:audit:identical-links-same-purpose",
+ "name": "lh:audit:html-has-lang",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 193,
- "name": "lh:audit:image-alt",
+ "name": "lh:audit:html-lang-valid",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 194,
- "name": "lh:audit:image-redundant-alt",
+ "name": "lh:audit:html-xml-lang-mismatch",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 195,
- "name": "lh:audit:input-button-name",
+ "name": "lh:audit:identical-links-same-purpose",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 196,
- "name": "lh:audit:input-image-alt",
+ "name": "lh:audit:image-alt",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 197,
- "name": "lh:audit:label-content-name-mismatch",
+ "name": "lh:audit:image-redundant-alt",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 198,
- "name": "lh:audit:label",
+ "name": "lh:audit:input-button-name",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 199,
- "name": "lh:audit:landmark-one-main",
+ "name": "lh:audit:input-image-alt",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 200,
- "name": "lh:audit:link-name",
+ "name": "lh:audit:label-content-name-mismatch",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 201,
- "name": "lh:audit:link-in-text-block",
+ "name": "lh:audit:label",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 202,
- "name": "lh:audit:list",
+ "name": "lh:audit:landmark-one-main",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 203,
- "name": "lh:audit:listitem",
+ "name": "lh:audit:link-name",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 204,
- "name": "lh:audit:meta-refresh",
+ "name": "lh:audit:link-in-text-block",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 205,
- "name": "lh:audit:meta-viewport",
+ "name": "lh:audit:list",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 206,
- "name": "lh:audit:object-alt",
+ "name": "lh:audit:listitem",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 207,
- "name": "lh:audit:select-name",
+ "name": "lh:audit:meta-refresh",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 208,
- "name": "lh:audit:skip-link",
+ "name": "lh:audit:meta-viewport",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 209,
- "name": "lh:audit:tabindex",
+ "name": "lh:audit:object-alt",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 210,
- "name": "lh:audit:table-duplicate-name",
+ "name": "lh:audit:select-name",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 211,
- "name": "lh:audit:table-fake-caption",
+ "name": "lh:audit:skip-link",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 212,
- "name": "lh:audit:target-size",
+ "name": "lh:audit:tabindex",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 213,
- "name": "lh:audit:td-has-header",
+ "name": "lh:audit:table-duplicate-name",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 214,
- "name": "lh:audit:td-headers-attr",
+ "name": "lh:audit:table-fake-caption",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 215,
- "name": "lh:audit:th-has-data-cells",
+ "name": "lh:audit:target-size",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 216,
- "name": "lh:audit:valid-lang",
+ "name": "lh:audit:td-has-header",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 217,
- "name": "lh:audit:video-caption",
+ "name": "lh:audit:td-headers-attr",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 218,
- "name": "lh:audit:custom-controls-labels",
+ "name": "lh:audit:th-has-data-cells",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 219,
- "name": "lh:audit:custom-controls-roles",
+ "name": "lh:audit:valid-lang",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 220,
- "name": "lh:audit:focus-traps",
+ "name": "lh:audit:video-caption",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 221,
- "name": "lh:audit:focusable-controls",
+ "name": "lh:audit:custom-controls-labels",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 222,
- "name": "lh:audit:interactive-element-affordance",
+ "name": "lh:audit:custom-controls-roles",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 223,
- "name": "lh:audit:logical-tab-order",
+ "name": "lh:audit:focus-traps",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 224,
- "name": "lh:audit:managed-focus",
+ "name": "lh:audit:focusable-controls",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 225,
- "name": "lh:audit:offscreen-content-hidden",
+ "name": "lh:audit:interactive-element-affordance",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 226,
- "name": "lh:audit:use-landmarks",
+ "name": "lh:audit:logical-tab-order",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 227,
- "name": "lh:audit:visual-order-follows-dom",
+ "name": "lh:audit:managed-focus",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 228,
- "name": "lh:audit:uses-long-cache-ttl",
+ "name": "lh:audit:offscreen-content-hidden",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 229,
- "name": "lh:audit:total-byte-weight",
+ "name": "lh:audit:use-landmarks",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 230,
- "name": "lh:audit:offscreen-images",
+ "name": "lh:audit:visual-order-follows-dom",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 231,
- "name": "lh:audit:render-blocking-resources",
+ "name": "lh:audit:uses-long-cache-ttl",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 232,
- "name": "lh:computed:UnusedCSS",
+ "name": "lh:audit:total-byte-weight",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 233,
- "name": "lh:computed:NavigationInsights",
+ "name": "lh:audit:offscreen-images",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 234,
- "name": "lh:computed:FirstContentfulPaint",
+ "name": "lh:audit:render-blocking-resources",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 235,
- "name": "lh:audit:unminified-css",
+ "name": "lh:computed:UnusedCSS",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 236,
- "name": "lh:audit:unminified-javascript",
+ "name": "lh:computed:NavigationInsights",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 237,
- "name": "lh:audit:unused-css-rules",
+ "name": "lh:computed:FirstContentfulPaint",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 238,
- "name": "lh:audit:unused-javascript",
+ "name": "lh:audit:unminified-css",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 239,
- "name": "lh:audit:modern-image-formats",
+ "name": "lh:audit:unminified-javascript",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 240,
- "name": "lh:audit:uses-optimized-images",
+ "name": "lh:audit:unused-css-rules",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 241,
- "name": "lh:audit:uses-text-compression",
+ "name": "lh:audit:unused-javascript",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 242,
- "name": "lh:audit:uses-responsive-images",
+ "name": "lh:audit:modern-image-formats",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 243,
- "name": "lh:computed:ImageRecords",
+ "name": "lh:audit:uses-optimized-images",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 244,
- "name": "lh:audit:efficient-animated-content",
+ "name": "lh:audit:uses-text-compression",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 245,
- "name": "lh:audit:duplicated-javascript",
+ "name": "lh:audit:uses-responsive-images",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 246,
- "name": "lh:audit:legacy-javascript",
+ "name": "lh:computed:ImageRecords",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 247,
- "name": "lh:audit:doctype",
+ "name": "lh:audit:efficient-animated-content",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 248,
- "name": "lh:audit:charset",
+ "name": "lh:audit:duplicated-javascript",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 249,
- "name": "lh:audit:dom-size",
+ "name": "lh:audit:legacy-javascript",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 250,
- "name": "lh:audit:geolocation-on-start",
+ "name": "lh:audit:doctype",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 251,
- "name": "lh:audit:inspector-issues",
+ "name": "lh:audit:charset",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 252,
- "name": "lh:audit:no-document-write",
+ "name": "lh:audit:dom-size",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 253,
- "name": "lh:audit:js-libraries",
+ "name": "lh:audit:geolocation-on-start",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 254,
- "name": "lh:audit:notification-on-start",
+ "name": "lh:audit:inspector-issues",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 255,
- "name": "lh:audit:paste-preventing-inputs",
+ "name": "lh:audit:no-document-write",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 256,
- "name": "lh:audit:uses-passive-event-listeners",
+ "name": "lh:audit:js-libraries",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 257,
- "name": "lh:audit:meta-description",
+ "name": "lh:audit:notification-on-start",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 258,
- "name": "lh:audit:http-status-code",
+ "name": "lh:audit:paste-preventing-inputs",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 259,
- "name": "lh:audit:font-size",
+ "name": "lh:audit:uses-passive-event-listeners",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 260,
- "name": "lh:audit:link-text",
+ "name": "lh:audit:meta-description",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 261,
- "name": "lh:audit:crawlable-anchors",
+ "name": "lh:audit:http-status-code",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 262,
- "name": "lh:audit:is-crawlable",
+ "name": "lh:audit:font-size",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 263,
- "name": "lh:audit:robots-txt",
+ "name": "lh:audit:link-text",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 264,
- "name": "lh:audit:hreflang",
+ "name": "lh:audit:crawlable-anchors",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 265,
- "name": "lh:audit:canonical",
+ "name": "lh:audit:is-crawlable",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 266,
- "name": "lh:audit:structured-data",
+ "name": "lh:audit:robots-txt",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 267,
- "name": "lh:audit:bf-cache",
+ "name": "lh:audit:hreflang",
"duration": 1,
"entryType": "measure"
},
{
"startTime": 268,
+ "name": "lh:audit:canonical",
+ "duration": 1,
+ "entryType": "measure"
+ },
+ {
+ "startTime": 269,
+ "name": "lh:audit:structured-data",
+ "duration": 1,
+ "entryType": "measure"
+ },
+ {
+ "startTime": 270,
+ "name": "lh:audit:bf-cache",
+ "duration": 1,
+ "entryType": "measure"
+ },
+ {
+ "startTime": 271,
"name": "lh:runner:generate",
"duration": 1,
"entryType": "measure"
}
],
- "total": 269
+ "total": 272
},
"i18n": {
"rendererFormattedStrings": {
@@ -24309,6 +24552,18 @@
"core/audits/accessibility/aria-command-name.js | description": [
"audits[aria-command-name].description"
],
+ "core/audits/accessibility/aria-conditional-attr.js | title": [
+ "audits[aria-conditional-attr].title"
+ ],
+ "core/audits/accessibility/aria-conditional-attr.js | description": [
+ "audits[aria-conditional-attr].description"
+ ],
+ "core/audits/accessibility/aria-deprecated-role.js | title": [
+ "audits[aria-deprecated-role].title"
+ ],
+ "core/audits/accessibility/aria-deprecated-role.js | description": [
+ "audits[aria-deprecated-role].description"
+ ],
"core/audits/accessibility/aria-dialog-name.js | title": [
"audits[aria-dialog-name].title"
],
@@ -24345,6 +24600,12 @@
"core/audits/accessibility/aria-progressbar-name.js | description": [
"audits[aria-progressbar-name].description"
],
+ "core/audits/accessibility/aria-prohibited-attr.js | title": [
+ "audits[aria-prohibited-attr].title"
+ ],
+ "core/audits/accessibility/aria-prohibited-attr.js | description": [
+ "audits[aria-prohibited-attr].description"
+ ],
"core/audits/accessibility/aria-required-attr.js | title": [
"audits[aria-required-attr].title"
],
diff --git a/core/test/results/sample_v2.json b/core/test/results/sample_v2.json
index 2b71789bd25c..2e182bc18884 100644
--- a/core/test/results/sample_v2.json
+++ b/core/test/results/sample_v2.json
@@ -2825,6 +2825,30 @@
"score": null,
"scoreDisplayMode": "notApplicable"
},
+ "aria-conditional-attr": {
+ "id": "aria-conditional-attr",
+ "title": "ARIA attributes are used as specified for the element's role",
+ "description": "Some ARIA attributes are only allowed on an element under certain conditions. [Learn more about conditional ARIA attributes](https://dequeuniversity.com/rules/axe/4.9/aria-conditional-attr).",
+ "score": 1,
+ "scoreDisplayMode": "binary",
+ "details": {
+ "type": "table",
+ "headings": [],
+ "items": []
+ }
+ },
+ "aria-deprecated-role": {
+ "id": "aria-deprecated-role",
+ "title": "Deprecated ARIA roles were not used",
+ "description": "Deprecated ARIA roles may not be processed correctly by assistive technology. [Learn more about deprecated ARIA roles](https://dequeuniversity.com/rules/axe/4.9/aria-deprecated-role).",
+ "score": 1,
+ "scoreDisplayMode": "binary",
+ "details": {
+ "type": "table",
+ "headings": [],
+ "items": []
+ }
+ },
"aria-dialog-name": {
"id": "aria-dialog-name",
"title": "Elements with `role=\"dialog\"` or `role=\"alertdialog\"` have accessible names.",
@@ -2877,6 +2901,18 @@
"score": null,
"scoreDisplayMode": "notApplicable"
},
+ "aria-prohibited-attr": {
+ "id": "aria-prohibited-attr",
+ "title": "Elements use only permitted ARIA attributes",
+ "description": "Using ARIA attributes in roles where they are prohibited can mean that important information is not communicated to users of assistive technologies. [Learn more about prohibited ARIA roles](https://dequeuniversity.com/rules/axe/4.9/aria-prohibited-attr).",
+ "score": 1,
+ "scoreDisplayMode": "binary",
+ "details": {
+ "type": "table",
+ "headings": [],
+ "items": []
+ }
+ },
"aria-required-attr": {
"id": "aria-required-attr",
"title": "`[role]`s have all required `[aria-*]` attributes",
@@ -5813,6 +5849,16 @@
"weight": 0,
"group": "a11y-aria"
},
+ {
+ "id": "aria-conditional-attr",
+ "weight": 7,
+ "group": "a11y-aria"
+ },
+ {
+ "id": "aria-deprecated-role",
+ "weight": 1,
+ "group": "a11y-aria"
+ },
{
"id": "aria-dialog-name",
"weight": 7,
@@ -5843,6 +5889,11 @@
"weight": 0,
"group": "a11y-aria"
},
+ {
+ "id": "aria-prohibited-attr",
+ "weight": 7,
+ "group": "a11y-aria"
+ },
{
"id": "aria-required-attr",
"weight": 10,
@@ -6135,7 +6186,7 @@
}
],
"id": "accessibility",
- "score": 0.78
+ "score": 0.79
},
"best-practices": {
"title": "Best Practices",
@@ -8039,6 +8090,18 @@
"duration": 100,
"entryType": "measure"
},
+ {
+ "startTime": 0,
+ "name": "lh:audit:aria-conditional-attr",
+ "duration": 100,
+ "entryType": "measure"
+ },
+ {
+ "startTime": 0,
+ "name": "lh:audit:aria-deprecated-role",
+ "duration": 100,
+ "entryType": "measure"
+ },
{
"startTime": 0,
"name": "lh:audit:aria-dialog-name",
@@ -8075,6 +8138,12 @@
"duration": 100,
"entryType": "measure"
},
+ {
+ "startTime": 0,
+ "name": "lh:audit:aria-prohibited-attr",
+ "duration": 100,
+ "entryType": "measure"
+ },
{
"startTime": 0,
"name": "lh:audit:aria-required-attr",
@@ -9366,6 +9435,18 @@
"core/audits/accessibility/aria-command-name.js | description": [
"audits[aria-command-name].description"
],
+ "core/audits/accessibility/aria-conditional-attr.js | title": [
+ "audits[aria-conditional-attr].title"
+ ],
+ "core/audits/accessibility/aria-conditional-attr.js | description": [
+ "audits[aria-conditional-attr].description"
+ ],
+ "core/audits/accessibility/aria-deprecated-role.js | title": [
+ "audits[aria-deprecated-role].title"
+ ],
+ "core/audits/accessibility/aria-deprecated-role.js | description": [
+ "audits[aria-deprecated-role].description"
+ ],
"core/audits/accessibility/aria-dialog-name.js | title": [
"audits[aria-dialog-name].title"
],
@@ -9402,6 +9483,12 @@
"core/audits/accessibility/aria-progressbar-name.js | description": [
"audits[aria-progressbar-name].description"
],
+ "core/audits/accessibility/aria-prohibited-attr.js | title": [
+ "audits[aria-prohibited-attr].title"
+ ],
+ "core/audits/accessibility/aria-prohibited-attr.js | description": [
+ "audits[aria-prohibited-attr].description"
+ ],
"core/audits/accessibility/aria-required-attr.js | title": [
"audits[aria-required-attr].title"
],
diff --git a/core/test/scenarios/__snapshots__/api-test-pptr.js.snap b/core/test/scenarios/__snapshots__/api-test-pptr.js.snap
index 790620e9c178..7e2b36ecfbab 100644
--- a/core/test/scenarios/__snapshots__/api-test-pptr.js.snap
+++ b/core/test/scenarios/__snapshots__/api-test-pptr.js.snap
@@ -6,12 +6,15 @@ Array [
"aria-allowed-attr",
"aria-allowed-role",
"aria-command-name",
+ "aria-conditional-attr",
+ "aria-deprecated-role",
"aria-dialog-name",
"aria-hidden-body",
"aria-hidden-focus",
"aria-input-field-name",
"aria-meter-name",
"aria-progressbar-name",
+ "aria-prohibited-attr",
"aria-required-attr",
"aria-required-children",
"aria-required-parent",
@@ -163,12 +166,15 @@ Array [
"aria-allowed-attr",
"aria-allowed-role",
"aria-command-name",
+ "aria-conditional-attr",
+ "aria-deprecated-role",
"aria-dialog-name",
"aria-hidden-body",
"aria-hidden-focus",
"aria-input-field-name",
"aria-meter-name",
"aria-progressbar-name",
+ "aria-prohibited-attr",
"aria-required-attr",
"aria-required-children",
"aria-required-parent",
@@ -320,12 +326,15 @@ Array [
"aria-allowed-attr",
"aria-allowed-role",
"aria-command-name",
+ "aria-conditional-attr",
+ "aria-deprecated-role",
"aria-dialog-name",
"aria-hidden-body",
"aria-hidden-focus",
"aria-input-field-name",
"aria-meter-name",
"aria-progressbar-name",
+ "aria-prohibited-attr",
"aria-required-attr",
"aria-required-children",
"aria-required-parent",
diff --git a/report/test/generator/report-generator-test.js b/report/test/generator/report-generator-test.js
index ecc09dff629d..179ff615aba5 100644
--- a/report/test/generator/report-generator-test.js
+++ b/report/test/generator/report-generator-test.js
@@ -107,7 +107,7 @@ describe('ReportGenerator', () => {
category,score
\\"performance\\",\\"0.28\\"
-\\"accessibility\\",\\"0.78\\"
+\\"accessibility\\",\\"0.79\\"
\\"best-practices\\",\\"0.39\\"
\\"seo\\",\\"0.73\\"
diff --git a/report/test/renderer/category-renderer-test.js b/report/test/renderer/category-renderer-test.js
index eb3429f9acb7..d2d2d9e1db02 100644
--- a/report/test/renderer/category-renderer-test.js
+++ b/report/test/renderer/category-renderer-test.js
@@ -304,7 +304,7 @@ describe('CategoryRenderer', () => {
);
const gauge = categoryDOM.querySelector('.lh-fraction__content');
- assert.equal(gauge.textContent.trim(), '20/25', 'fraction is included');
+ assert.equal(gauge.textContent.trim(), '23/28', 'fraction is included');
const score = categoryDOM.querySelector('.lh-category-header');
const title = score.querySelector('.lh-fraction__label');
diff --git a/shared/localization/locales/en-US.json b/shared/localization/locales/en-US.json
index 2783583a770c..c42a166a6ac6 100644
--- a/shared/localization/locales/en-US.json
+++ b/shared/localization/locales/en-US.json
@@ -35,6 +35,24 @@
"core/audits/accessibility/aria-command-name.js | title": {
"message": "`button`, `link`, and `menuitem` elements have accessible names"
},
+ "core/audits/accessibility/aria-conditional-attr.js | description": {
+ "message": "Some ARIA attributes are only allowed on an element under certain conditions. [Learn more about conditional ARIA attributes](https://dequeuniversity.com/rules/axe/4.9/aria-conditional-attr)."
+ },
+ "core/audits/accessibility/aria-conditional-attr.js | failureTitle": {
+ "message": "ARIA attributes are not used as specified for the element's role"
+ },
+ "core/audits/accessibility/aria-conditional-attr.js | title": {
+ "message": "ARIA attributes are used as specified for the element's role"
+ },
+ "core/audits/accessibility/aria-deprecated-role.js | description": {
+ "message": "Deprecated ARIA roles may not be processed correctly by assistive technology. [Learn more about deprecated ARIA roles](https://dequeuniversity.com/rules/axe/4.9/aria-deprecated-role)."
+ },
+ "core/audits/accessibility/aria-deprecated-role.js | failureTitle": {
+ "message": "Deprecated ARIA roles were used"
+ },
+ "core/audits/accessibility/aria-deprecated-role.js | title": {
+ "message": "Deprecated ARIA roles were not used"
+ },
"core/audits/accessibility/aria-dialog-name.js | description": {
"message": "ARIA dialog elements without accessible names may prevent screen readers users from discerning the purpose of these elements. [Learn how to make ARIA dialog elements more accessible](https://dequeuniversity.com/rules/axe/4.9/aria-dialog-name)."
},
@@ -89,6 +107,15 @@
"core/audits/accessibility/aria-progressbar-name.js | title": {
"message": "ARIA `progressbar` elements have accessible names"
},
+ "core/audits/accessibility/aria-prohibited-attr.js | description": {
+ "message": "Using ARIA attributes in roles where they are prohibited can mean that important information is not communicated to users of assistive technologies. [Learn more about prohibited ARIA roles](https://dequeuniversity.com/rules/axe/4.9/aria-prohibited-attr)."
+ },
+ "core/audits/accessibility/aria-prohibited-attr.js | failureTitle": {
+ "message": "Elements use prohibited ARIA attributes"
+ },
+ "core/audits/accessibility/aria-prohibited-attr.js | title": {
+ "message": "Elements use only permitted ARIA attributes"
+ },
"core/audits/accessibility/aria-required-attr.js | description": {
"message": "Some ARIA roles have required attributes that describe the state of the element to screen readers. [Learn more about roles and required attributes](https://dequeuniversity.com/rules/axe/4.9/aria-required-attr)."
},
diff --git a/shared/localization/locales/en-XL.json b/shared/localization/locales/en-XL.json
index bca8346ada0d..44fdf6acdc9f 100644
--- a/shared/localization/locales/en-XL.json
+++ b/shared/localization/locales/en-XL.json
@@ -35,6 +35,24 @@
"core/audits/accessibility/aria-command-name.js | title": {
"message": "`button`, `link`, âńd̂ `menuitem` él̂ém̂én̂t́ŝ h́âv́ê áĉćêśŝíb̂ĺê ńâḿêś"
},
+ "core/audits/accessibility/aria-conditional-attr.js | description": {
+ "message": "Ŝóm̂é ÂŔÎÁ ât́t̂ŕîb́ût́êś âŕê ón̂ĺŷ ál̂ĺôẃêd́ ôń âń êĺêḿêńt̂ ún̂d́êŕ ĉér̂t́âín̂ ćôńd̂ít̂íôńŝ. [Ĺêár̂ń m̂ór̂é âb́ôút̂ ćôńd̂ít̂íôńâĺ ÂŔÎÁ ât́t̂ŕîb́ût́êś](https://dequeuniversity.com/rules/axe/4.9/aria-conditional-attr)."
+ },
+ "core/audits/accessibility/aria-conditional-attr.js | failureTitle": {
+ "message": "ÂŔÎÁ ât́t̂ŕîb́ût́êś âŕê ńôt́ ûśêd́ âś ŝṕêćîf́îéd̂ f́ôŕ t̂h́ê él̂ém̂én̂t́'ŝ ŕôĺê"
+ },
+ "core/audits/accessibility/aria-conditional-attr.js | title": {
+ "message": "ÂŔÎÁ ât́t̂ŕîb́ût́êś âŕê úŝéd̂ áŝ śp̂éĉíf̂íêd́ f̂ór̂ t́ĥé êĺêḿêńt̂'ś r̂ól̂é"
+ },
+ "core/audits/accessibility/aria-deprecated-role.js | description": {
+ "message": "D̂ép̂ŕêćât́êd́ ÂŔÎÁ r̂ól̂éŝ ḿâý n̂ót̂ b́ê ṕr̂óĉéŝśêd́ ĉór̂ŕêćt̂ĺŷ b́ŷ áŝśîśt̂ív̂é t̂éĉh́n̂ól̂óĝý. [L̂éâŕn̂ ḿôŕê áb̂óût́ d̂ép̂ŕêćât́êd́ ÂŔÎÁ r̂ól̂éŝ](https://dequeuniversity.com/rules/axe/4.9/aria-deprecated-role)."
+ },
+ "core/audits/accessibility/aria-deprecated-role.js | failureTitle": {
+ "message": "D̂ép̂ŕêćât́êd́ ÂŔÎÁ r̂ól̂éŝ ẃêŕê úŝéd̂"
+ },
+ "core/audits/accessibility/aria-deprecated-role.js | title": {
+ "message": "D̂ép̂ŕêćât́êd́ ÂŔÎÁ r̂ól̂éŝ ẃêŕê ńôt́ ûśêd́"
+ },
"core/audits/accessibility/aria-dialog-name.js | description": {
"message": "ÂŔÎÁ d̂íâĺôǵ êĺêḿêńt̂ś ŵít̂h́ôút̂ áĉćêśŝíb̂ĺê ńâḿêś m̂áŷ ṕr̂év̂én̂t́ ŝćr̂éêń r̂éâd́êŕŝ úŝér̂ś f̂ŕôḿ d̂íŝćêŕn̂ín̂ǵ t̂h́ê ṕûŕp̂óŝé ôf́ t̂h́êśê él̂ém̂én̂t́ŝ. [Ĺêár̂ń ĥóŵ t́ô ḿâḱê ÁR̂ÍÂ d́îál̂óĝ él̂ém̂én̂t́ŝ ḿôŕê áĉćêśŝíb̂ĺê](https://dequeuniversity.com/rules/axe/4.9/aria-dialog-name)."
},
@@ -89,6 +107,15 @@
"core/audits/accessibility/aria-progressbar-name.js | title": {
"message": "ÂŔÎÁ `progressbar` êĺêḿêńt̂ś ĥáv̂é âćĉéŝśîb́l̂é n̂ám̂éŝ"
},
+ "core/audits/accessibility/aria-prohibited-attr.js | description": {
+ "message": "Ûśîńĝ ÁR̂ÍÂ át̂t́r̂íb̂út̂éŝ ín̂ ŕôĺêś ŵh́êŕê t́ĥéŷ ár̂é p̂ŕôh́îb́ît́êd́ ĉán̂ ḿêán̂ t́ĥát̂ ím̂ṕôŕt̂án̂t́ îńf̂ór̂ḿât́îón̂ íŝ ńôt́ ĉóm̂ḿûńîćât́êd́ t̂ó ûśêŕŝ óf̂ áŝśîśt̂ív̂é t̂éĉh́n̂ól̂óĝíêś. [L̂éâŕn̂ ḿôŕê áb̂óût́ p̂ŕôh́îb́ît́êd́ ÂŔÎÁ r̂ól̂éŝ](https://dequeuniversity.com/rules/axe/4.9/aria-prohibited-attr)."
+ },
+ "core/audits/accessibility/aria-prohibited-attr.js | failureTitle": {
+ "message": "Êĺêḿêńt̂ś ûśê ṕr̂óĥíb̂ít̂éd̂ ÁR̂ÍÂ át̂t́r̂íb̂út̂éŝ"
+ },
+ "core/audits/accessibility/aria-prohibited-attr.js | title": {
+ "message": "Êĺêḿêńt̂ś ûśê ón̂ĺŷ ṕêŕm̂ít̂t́êd́ ÂŔÎÁ ât́t̂ŕîb́ût́êś"
+ },
"core/audits/accessibility/aria-required-attr.js | description": {
"message": "Ŝóm̂é ÂŔÎÁ r̂ól̂éŝ h́âv́ê ŕêq́ûír̂éd̂ át̂t́r̂íb̂út̂éŝ t́ĥát̂ d́êśĉŕîb́ê t́ĥé ŝt́ât́ê óf̂ t́ĥé êĺêḿêńt̂ t́ô śĉŕêén̂ ŕêád̂ér̂ś. [L̂éâŕn̂ ḿôŕê áb̂óût́ r̂ól̂éŝ án̂d́ r̂éq̂úîŕêd́ ât́t̂ŕîb́ût́êś](https://dequeuniversity.com/rules/axe/4.9/aria-required-attr)."
},
diff --git a/third-party/devtools-tests/e2e/lighthouse/navigation_test.ts b/third-party/devtools-tests/e2e/lighthouse/navigation_test.ts
index 79b89bf6d230..ec42e7bb5d0c 100644
--- a/third-party/devtools-tests/e2e/lighthouse/navigation_test.ts
+++ b/third-party/devtools-tests/e2e/lighthouse/navigation_test.ts
@@ -121,7 +121,7 @@ describe('Navigation', function() {
});
const {auditResults, erroredAudits, failedAudits} = getAuditsBreakdown(lhr, ['max-potential-fid']);
- assert.strictEqual(auditResults.length, 152);
+ assert.strictEqual(auditResults.length, 155);
assert.deepStrictEqual(erroredAudits, []);
assert.deepStrictEqual(failedAudits.map(audit => audit.id), [
'document-title',
@@ -199,7 +199,7 @@ describe('Navigation', function() {
];
const {auditResults, erroredAudits, failedAudits} = getAuditsBreakdown(lhr, flakyAudits);
- assert.strictEqual(auditResults.length, 152);
+ assert.strictEqual(auditResults.length, 155);
assert.deepStrictEqual(erroredAudits, []);
assert.deepStrictEqual(failedAudits.map(audit => audit.id), [
'document-title',
diff --git a/third-party/devtools-tests/e2e/lighthouse/snapshot_test.ts b/third-party/devtools-tests/e2e/lighthouse/snapshot_test.ts
index 9027f38950a6..252af1e9c5b2 100644
--- a/third-party/devtools-tests/e2e/lighthouse/snapshot_test.ts
+++ b/third-party/devtools-tests/e2e/lighthouse/snapshot_test.ts
@@ -74,7 +74,7 @@ describe('Snapshot', function() {
});
const {auditResults, erroredAudits, failedAudits} = getAuditsBreakdown(lhr);
- assert.strictEqual(auditResults.length, 85);
+ assert.strictEqual(auditResults.length, 88);
assert.deepStrictEqual(erroredAudits, []);
assert.deepStrictEqual(failedAudits.map(audit => audit.id), [
'document-title',