lighthouse
Version:
Automated auditing, performance metrics, and best practices for the web.
753 lines • 254 kB
JSON
{
"core/audits/accessibility/accesskeys.js | description": {
"message": "Access keys let users quickly focus a part of the page. For proper navigation, each access key must be unique. [Learn more about access keys](https://dequeuniversity.com/rules/axe/4.10/accesskeys)."
},
"core/audits/accessibility/accesskeys.js | failureTitle": {
"message": "`[accesskey]` values are not unique"
},
"core/audits/accessibility/accesskeys.js | title": {
"message": "`[accesskey]` values are unique"
},
"core/audits/accessibility/aria-allowed-attr.js | description": {
"message": "Each ARIA `role` supports a specific subset of `aria-*` attributes. Mismatching these invalidates the `aria-*` attributes. [Learn how to match ARIA attributes to their roles](https://dequeuniversity.com/rules/axe/4.10/aria-allowed-attr)."
},
"core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
"message": "`[aria-*]` attributes do not match their roles"
},
"core/audits/accessibility/aria-allowed-attr.js | title": {
"message": "`[aria-*]` attributes match their roles"
},
"core/audits/accessibility/aria-allowed-role.js | description": {
"message": "Many HTML elements can only be assigned certain ARIA roles. Using ARIA roles where they are not allowed can interfere with the accessibility of the web page. [Learn more about ARIA roles](https://dequeuniversity.com/rules/axe/4.10/aria-allowed-role)."
},
"core/audits/accessibility/aria-allowed-role.js | failureTitle": {
"message": "Uses ARIA roles on incompatible elements"
},
"core/audits/accessibility/aria-allowed-role.js | title": {
"message": "Uses ARIA roles only on compatible elements"
},
"core/audits/accessibility/aria-command-name.js | description": {
"message": "When an element doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn how to make command elements more accessible](https://dequeuniversity.com/rules/axe/4.10/aria-command-name)."
},
"core/audits/accessibility/aria-command-name.js | failureTitle": {
"message": "`button`, `link`, and `menuitem` elements do not have accessible names."
},
"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.10/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.10/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.10/aria-dialog-name)."
},
"core/audits/accessibility/aria-dialog-name.js | failureTitle": {
"message": "Elements with `role=\"dialog\"` or `role=\"alertdialog\"` do not have accessible names."
},
"core/audits/accessibility/aria-dialog-name.js | title": {
"message": "Elements with `role=\"dialog\"` or `role=\"alertdialog\"` have accessible names."
},
"core/audits/accessibility/aria-hidden-body.js | description": {
"message": "Assistive technologies, like screen readers, work inconsistently when `aria-hidden=\"true\"` is set on the document `<body>`. [Learn how `aria-hidden` affects the document body](https://dequeuniversity.com/rules/axe/4.10/aria-hidden-body)."
},
"core/audits/accessibility/aria-hidden-body.js | failureTitle": {
"message": "`[aria-hidden=\"true\"]` is present on the document `<body>`"
},
"core/audits/accessibility/aria-hidden-body.js | title": {
"message": "`[aria-hidden=\"true\"]` is not present on the document `<body>`"
},
"core/audits/accessibility/aria-hidden-focus.js | description": {
"message": "Focusable descendents within an `[aria-hidden=\"true\"]` element prevent those interactive elements from being available to users of assistive technologies like screen readers. [Learn how `aria-hidden` affects focusable elements](https://dequeuniversity.com/rules/axe/4.10/aria-hidden-focus)."
},
"core/audits/accessibility/aria-hidden-focus.js | failureTitle": {
"message": "`[aria-hidden=\"true\"]` elements contain focusable descendents"
},
"core/audits/accessibility/aria-hidden-focus.js | title": {
"message": "`[aria-hidden=\"true\"]` elements do not contain focusable descendents"
},
"core/audits/accessibility/aria-input-field-name.js | description": {
"message": "When an input field doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn more about input field labels](https://dequeuniversity.com/rules/axe/4.10/aria-input-field-name)."
},
"core/audits/accessibility/aria-input-field-name.js | failureTitle": {
"message": "ARIA input fields do not have accessible names"
},
"core/audits/accessibility/aria-input-field-name.js | title": {
"message": "ARIA input fields have accessible names"
},
"core/audits/accessibility/aria-meter-name.js | description": {
"message": "When a meter element doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn how to name `meter` elements](https://dequeuniversity.com/rules/axe/4.10/aria-meter-name)."
},
"core/audits/accessibility/aria-meter-name.js | failureTitle": {
"message": "ARIA `meter` elements do not have accessible names."
},
"core/audits/accessibility/aria-meter-name.js | title": {
"message": "ARIA `meter` elements have accessible names"
},
"core/audits/accessibility/aria-progressbar-name.js | description": {
"message": "When a `progressbar` element doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn how to label `progressbar` elements](https://dequeuniversity.com/rules/axe/4.10/aria-progressbar-name)."
},
"core/audits/accessibility/aria-progressbar-name.js | failureTitle": {
"message": "ARIA `progressbar` elements do not have accessible names."
},
"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.10/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.10/aria-required-attr)."
},
"core/audits/accessibility/aria-required-attr.js | failureTitle": {
"message": "`[role]`s do not have all required `[aria-*]` attributes"
},
"core/audits/accessibility/aria-required-attr.js | title": {
"message": "`[role]`s have all required `[aria-*]` attributes"
},
"core/audits/accessibility/aria-required-children.js | description": {
"message": "Some ARIA parent roles must contain specific child roles to perform their intended accessibility functions. [Learn more about roles and required children elements](https://dequeuniversity.com/rules/axe/4.10/aria-required-children)."
},
"core/audits/accessibility/aria-required-children.js | failureTitle": {
"message": "Elements with an ARIA `[role]` that require children to contain a specific `[role]` are missing some or all of those required children."
},
"core/audits/accessibility/aria-required-children.js | title": {
"message": "Elements with an ARIA `[role]` that require children to contain a specific `[role]` have all required children."
},
"core/audits/accessibility/aria-required-parent.js | description": {
"message": "Some ARIA child roles must be contained by specific parent roles to properly perform their intended accessibility functions. [Learn more about ARIA roles and required parent element](https://dequeuniversity.com/rules/axe/4.10/aria-required-parent)."
},
"core/audits/accessibility/aria-required-parent.js | failureTitle": {
"message": "`[role]`s are not contained by their required parent element"
},
"core/audits/accessibility/aria-required-parent.js | title": {
"message": "`[role]`s are contained by their required parent element"
},
"core/audits/accessibility/aria-roles.js | description": {
"message": "ARIA roles must have valid values in order to perform their intended accessibility functions. [Learn more about valid ARIA roles](https://dequeuniversity.com/rules/axe/4.10/aria-roles)."
},
"core/audits/accessibility/aria-roles.js | failureTitle": {
"message": "`[role]` values are not valid"
},
"core/audits/accessibility/aria-roles.js | title": {
"message": "`[role]` values are valid"
},
"core/audits/accessibility/aria-text.js | description": {
"message": "Adding `role=text` around a text node split by markup enables VoiceOver to treat it as one phrase, but the element's focusable descendents will not be announced. [Learn more about the `role=text` attribute](https://dequeuniversity.com/rules/axe/4.10/aria-text)."
},
"core/audits/accessibility/aria-text.js | failureTitle": {
"message": "Elements with the `role=text` attribute do have focusable descendents."
},
"core/audits/accessibility/aria-text.js | title": {
"message": "Elements with the `role=text` attribute do not have focusable descendents."
},
"core/audits/accessibility/aria-toggle-field-name.js | description": {
"message": "When a toggle field doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn more about toggle fields](https://dequeuniversity.com/rules/axe/4.10/aria-toggle-field-name)."
},
"core/audits/accessibility/aria-toggle-field-name.js | failureTitle": {
"message": "ARIA toggle fields do not have accessible names"
},
"core/audits/accessibility/aria-toggle-field-name.js | title": {
"message": "ARIA toggle fields have accessible names"
},
"core/audits/accessibility/aria-tooltip-name.js | description": {
"message": "When a tooltip element doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn how to name `tooltip` elements](https://dequeuniversity.com/rules/axe/4.10/aria-tooltip-name)."
},
"core/audits/accessibility/aria-tooltip-name.js | failureTitle": {
"message": "ARIA `tooltip` elements do not have accessible names."
},
"core/audits/accessibility/aria-tooltip-name.js | title": {
"message": "ARIA `tooltip` elements have accessible names"
},
"core/audits/accessibility/aria-treeitem-name.js | description": {
"message": "When a `treeitem` element doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn more about labeling `treeitem` elements](https://dequeuniversity.com/rules/axe/4.10/aria-treeitem-name)."
},
"core/audits/accessibility/aria-treeitem-name.js | failureTitle": {
"message": "ARIA `treeitem` elements do not have accessible names."
},
"core/audits/accessibility/aria-treeitem-name.js | title": {
"message": "ARIA `treeitem` elements have accessible names"
},
"core/audits/accessibility/aria-valid-attr-value.js | description": {
"message": "Assistive technologies, like screen readers, can't interpret ARIA attributes with invalid values. [Learn more about valid values for ARIA attributes](https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr-value)."
},
"core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
"message": "`[aria-*]` attributes do not have valid values"
},
"core/audits/accessibility/aria-valid-attr-value.js | title": {
"message": "`[aria-*]` attributes have valid values"
},
"core/audits/accessibility/aria-valid-attr.js | description": {
"message": "Assistive technologies, like screen readers, can't interpret ARIA attributes with invalid names. [Learn more about valid ARIA attributes](https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr)."
},
"core/audits/accessibility/aria-valid-attr.js | failureTitle": {
"message": "`[aria-*]` attributes are not valid or misspelled"
},
"core/audits/accessibility/aria-valid-attr.js | title": {
"message": "`[aria-*]` attributes are valid and not misspelled"
},
"core/audits/accessibility/axe-audit.js | failingElementsHeader": {
"message": "Failing Elements"
},
"core/audits/accessibility/button-name.js | description": {
"message": "When a button doesn't have an accessible name, screen readers announce it as \"button\", making it unusable for users who rely on screen readers. [Learn how to make buttons more accessible](https://dequeuniversity.com/rules/axe/4.10/button-name)."
},
"core/audits/accessibility/button-name.js | failureTitle": {
"message": "Buttons do not have an accessible name"
},
"core/audits/accessibility/button-name.js | title": {
"message": "Buttons have an accessible name"
},
"core/audits/accessibility/bypass.js | description": {
"message": "Adding ways to bypass repetitive content lets keyboard users navigate the page more efficiently. [Learn more about bypass blocks](https://dequeuniversity.com/rules/axe/4.10/bypass)."
},
"core/audits/accessibility/bypass.js | failureTitle": {
"message": "The page does not contain a heading, skip link, or landmark region"
},
"core/audits/accessibility/bypass.js | title": {
"message": "The page contains a heading, skip link, or landmark region"
},
"core/audits/accessibility/color-contrast.js | description": {
"message": "Low-contrast text is difficult or impossible for many users to read. [Learn how to provide sufficient color contrast](https://dequeuniversity.com/rules/axe/4.10/color-contrast)."
},
"core/audits/accessibility/color-contrast.js | failureTitle": {
"message": "Background and foreground colors do not have a sufficient contrast ratio."
},
"core/audits/accessibility/color-contrast.js | title": {
"message": "Background and foreground colors have a sufficient contrast ratio"
},
"core/audits/accessibility/definition-list.js | description": {
"message": "When definition lists are not properly marked up, screen readers may produce confusing or inaccurate output. [Learn how to structure definition lists correctly](https://dequeuniversity.com/rules/axe/4.10/definition-list)."
},
"core/audits/accessibility/definition-list.js | failureTitle": {
"message": "`<dl>`'s do not contain only properly-ordered `<dt>` and `<dd>` groups, `<script>`, `<template>` or `<div>` elements."
},
"core/audits/accessibility/definition-list.js | title": {
"message": "`<dl>`'s contain only properly-ordered `<dt>` and `<dd>` groups, `<script>`, `<template>` or `<div>` elements."
},
"core/audits/accessibility/dlitem.js | description": {
"message": "Definition list items (`<dt>` and `<dd>`) must be wrapped in a parent `<dl>` element to ensure that screen readers can properly announce them. [Learn how to structure definition lists correctly](https://dequeuniversity.com/rules/axe/4.10/dlitem)."
},
"core/audits/accessibility/dlitem.js | failureTitle": {
"message": "Definition list items are not wrapped in `<dl>` elements"
},
"core/audits/accessibility/dlitem.js | title": {
"message": "Definition list items are wrapped in `<dl>` elements"
},
"core/audits/accessibility/document-title.js | description": {
"message": "The title gives screen reader users an overview of the page, and search engine users rely on it heavily to determine if a page is relevant to their search. [Learn more about document titles](https://dequeuniversity.com/rules/axe/4.10/document-title)."
},
"core/audits/accessibility/document-title.js | failureTitle": {
"message": "Document doesn't have a `<title>` element"
},
"core/audits/accessibility/document-title.js | title": {
"message": "Document has a `<title>` element"
},
"core/audits/accessibility/duplicate-id-aria.js | description": {
"message": "The value of an ARIA ID must be unique to prevent other instances from being overlooked by assistive technologies. [Learn how to fix duplicate ARIA IDs](https://dequeuniversity.com/rules/axe/4.10/duplicate-id-aria)."
},
"core/audits/accessibility/duplicate-id-aria.js | failureTitle": {
"message": "ARIA IDs are not unique"
},
"core/audits/accessibility/duplicate-id-aria.js | title": {
"message": "ARIA IDs are unique"
},
"core/audits/accessibility/empty-heading.js | description": {
"message": "A heading with no content or inaccessible text prevent screen reader users from accessing information on the page's structure. [Learn more about headings](https://dequeuniversity.com/rules/axe/4.10/empty-heading)."
},
"core/audits/accessibility/empty-heading.js | failureTitle": {
"message": "Heading elements do not contain content."
},
"core/audits/accessibility/empty-heading.js | title": {
"message": "All heading elements contain content."
},
"core/audits/accessibility/form-field-multiple-labels.js | description": {
"message": "Form fields with multiple labels can be confusingly announced by assistive technologies like screen readers which use either the first, the last, or all of the labels. [Learn how to use form labels](https://dequeuniversity.com/rules/axe/4.10/form-field-multiple-labels)."
},
"core/audits/accessibility/form-field-multiple-labels.js | failureTitle": {
"message": "Form fields have multiple labels"
},
"core/audits/accessibility/form-field-multiple-labels.js | title": {
"message": "No form fields have multiple labels"
},
"core/audits/accessibility/frame-title.js | description": {
"message": "Screen reader users rely on frame titles to describe the contents of frames. [Learn more about frame titles](https://dequeuniversity.com/rules/axe/4.10/frame-title)."
},
"core/audits/accessibility/frame-title.js | failureTitle": {
"message": "`<frame>` or `<iframe>` elements do not have a title"
},
"core/audits/accessibility/frame-title.js | title": {
"message": "`<frame>` or `<iframe>` elements have a title"
},
"core/audits/accessibility/heading-order.js | description": {
"message": "Properly ordered headings that do not skip levels convey the semantic structure of the page, making it easier to navigate and understand when using assistive technologies. [Learn more about heading order](https://dequeuniversity.com/rules/axe/4.10/heading-order)."
},
"core/audits/accessibility/heading-order.js | failureTitle": {
"message": "Heading elements are not in a sequentially-descending order"
},
"core/audits/accessibility/heading-order.js | title": {
"message": "Heading elements appear in a sequentially-descending order"
},
"core/audits/accessibility/html-has-lang.js | description": {
"message": "If a page doesn't specify a `lang` attribute, a screen reader assumes that the page is in the default language that the user chose when setting up the screen reader. If the page isn't actually in the default language, then the screen reader might not announce the page's text correctly. [Learn more about the `lang` attribute](https://dequeuniversity.com/rules/axe/4.10/html-has-lang)."
},
"core/audits/accessibility/html-has-lang.js | failureTitle": {
"message": "`<html>` element does not have a `[lang]` attribute"
},
"core/audits/accessibility/html-has-lang.js | title": {
"message": "`<html>` element has a `[lang]` attribute"
},
"core/audits/accessibility/html-lang-valid.js | description": {
"message": "Specifying a valid [BCP 47 language](https://www.w3.org/International/questions/qa-choosing-language-tags#question) helps screen readers announce text properly. [Learn how to use the `lang` attribute](https://dequeuniversity.com/rules/axe/4.10/html-lang-valid)."
},
"core/audits/accessibility/html-lang-valid.js | failureTitle": {
"message": "`<html>` element does not have a valid value for its `[lang]` attribute."
},
"core/audits/accessibility/html-lang-valid.js | title": {
"message": "`<html>` element has a valid value for its `[lang]` attribute"
},
"core/audits/accessibility/html-xml-lang-mismatch.js | description": {
"message": "If the webpage does not specify a consistent language, then the screen reader might not announce the page's text correctly. [Learn more about the `lang` attribute](https://dequeuniversity.com/rules/axe/4.10/html-xml-lang-mismatch)."
},
"core/audits/accessibility/html-xml-lang-mismatch.js | failureTitle": {
"message": "`<html>` element does not have an `[xml:lang]` attribute with the same base language as the `[lang]` attribute."
},
"core/audits/accessibility/html-xml-lang-mismatch.js | title": {
"message": "`<html>` element has an `[xml:lang]` attribute with the same base language as the `[lang]` attribute."
},
"core/audits/accessibility/identical-links-same-purpose.js | description": {
"message": "Links with the same destination should have the same description, to help users understand the link's purpose and decide whether to follow it. [Learn more about identical links](https://dequeuniversity.com/rules/axe/4.10/identical-links-same-purpose)."
},
"core/audits/accessibility/identical-links-same-purpose.js | failureTitle": {
"message": "Identical links do not have the same purpose."
},
"core/audits/accessibility/identical-links-same-purpose.js | title": {
"message": "Identical links have the same purpose."
},
"core/audits/accessibility/image-alt.js | description": {
"message": "Informative elements should aim for short, descriptive alternate text. Decorative elements can be ignored with an empty alt attribute. [Learn more about the `alt` attribute](https://dequeuniversity.com/rules/axe/4.10/image-alt)."
},
"core/audits/accessibility/image-alt.js | failureTitle": {
"message": "Image elements do not have `[alt]` attributes"
},
"core/audits/accessibility/image-alt.js | title": {
"message": "Image elements have `[alt]` attributes"
},
"core/audits/accessibility/image-redundant-alt.js | description": {
"message": "Informative elements should aim for short, descriptive alternative text. Alternative text that is exactly the same as the text adjacent to the link or image is potentially confusing for screen reader users, because the text will be read twice. [Learn more about the `alt` attribute](https://dequeuniversity.com/rules/axe/4.10/image-redundant-alt)."
},
"core/audits/accessibility/image-redundant-alt.js | failureTitle": {
"message": "Image elements have `[alt]` attributes that are redundant text."
},
"core/audits/accessibility/image-redundant-alt.js | title": {
"message": "Image elements do not have `[alt]` attributes that are redundant text."
},
"core/audits/accessibility/input-button-name.js | description": {
"message": "Adding discernable and accessible text to input buttons may help screen reader users understand the purpose of the input button. [Learn more about input buttons](https://dequeuniversity.com/rules/axe/4.10/input-button-name)."
},
"core/audits/accessibility/input-button-name.js | failureTitle": {
"message": "Input buttons do not have discernible text."
},
"core/audits/accessibility/input-button-name.js | title": {
"message": "Input buttons have discernible text."
},
"core/audits/accessibility/input-image-alt.js | description": {
"message": "When an image is being used as an `<input>` button, providing alternative text can help screen reader users understand the purpose of the button. [Learn about input image alt text](https://dequeuniversity.com/rules/axe/4.10/input-image-alt)."
},
"core/audits/accessibility/input-image-alt.js | failureTitle": {
"message": "`<input type=\"image\">` elements do not have `[alt]` text"
},
"core/audits/accessibility/input-image-alt.js | title": {
"message": "`<input type=\"image\">` elements have `[alt]` text"
},
"core/audits/accessibility/label-content-name-mismatch.js | description": {
"message": "Visible text labels that do not match the accessible name can result in a confusing experience for screen reader users. [Learn more about accessible names](https://dequeuniversity.com/rules/axe/4.10/label-content-name-mismatch)."
},
"core/audits/accessibility/label-content-name-mismatch.js | failureTitle": {
"message": "Elements with visible text labels do not have matching accessible names."
},
"core/audits/accessibility/label-content-name-mismatch.js | title": {
"message": "Elements with visible text labels have matching accessible names."
},
"core/audits/accessibility/label.js | description": {
"message": "Labels ensure that form controls are announced properly by assistive technologies, like screen readers. [Learn more about form element labels](https://dequeuniversity.com/rules/axe/4.10/label)."
},
"core/audits/accessibility/label.js | failureTitle": {
"message": "Form elements do not have associated labels"
},
"core/audits/accessibility/label.js | title": {
"message": "Form elements have associated labels"
},
"core/audits/accessibility/landmark-one-main.js | description": {
"message": "One main landmark helps screen reader users navigate a web page. [Learn more about landmarks](https://dequeuniversity.com/rules/axe/4.10/landmark-one-main)."
},
"core/audits/accessibility/landmark-one-main.js | failureTitle": {
"message": "Document does not have a main landmark."
},
"core/audits/accessibility/landmark-one-main.js | title": {
"message": "Document has a main landmark."
},
"core/audits/accessibility/link-in-text-block.js | description": {
"message": "Low-contrast text is difficult or impossible for many users to read. Link text that is discernible improves the experience for users with low vision. [Learn how to make links distinguishable](https://dequeuniversity.com/rules/axe/4.10/link-in-text-block)."
},
"core/audits/accessibility/link-in-text-block.js | failureTitle": {
"message": "Links rely on color to be distinguishable."
},
"core/audits/accessibility/link-in-text-block.js | title": {
"message": "Links are distinguishable without relying on color."
},
"core/audits/accessibility/link-name.js | description": {
"message": "Link text (and alternate text for images, when used as links) that is discernible, unique, and focusable improves the navigation experience for screen reader users. [Learn how to make links accessible](https://dequeuniversity.com/rules/axe/4.10/link-name)."
},
"core/audits/accessibility/link-name.js | failureTitle": {
"message": "Links do not have a discernible name"
},
"core/audits/accessibility/link-name.js | title": {
"message": "Links have a discernible name"
},
"core/audits/accessibility/list.js | description": {
"message": "Screen readers have a specific way of announcing lists. Ensuring proper list structure aids screen reader output. [Learn more about proper list structure](https://dequeuniversity.com/rules/axe/4.10/list)."
},
"core/audits/accessibility/list.js | failureTitle": {
"message": "Lists do not contain only `<li>` elements and script supporting elements (`<script>` and `<template>`)."
},
"core/audits/accessibility/list.js | title": {
"message": "Lists contain only `<li>` elements and script supporting elements (`<script>` and `<template>`)."
},
"core/audits/accessibility/listitem.js | description": {
"message": "Screen readers require list items (`<li>`) to be contained within a parent `<ul>`, `<ol>` or `<menu>` to be announced properly. [Learn more about proper list structure](https://dequeuniversity.com/rules/axe/4.10/listitem)."
},
"core/audits/accessibility/listitem.js | failureTitle": {
"message": "List items (`<li>`) are not contained within `<ul>`, `<ol>` or `<menu>` parent elements."
},
"core/audits/accessibility/listitem.js | title": {
"message": "List items (`<li>`) are contained within `<ul>`, `<ol>` or `<menu>` parent elements"
},
"core/audits/accessibility/meta-refresh.js | description": {
"message": "Users do not expect a page to refresh automatically, and doing so will move focus back to the top of the page. This may create a frustrating or confusing experience. [Learn more about the refresh meta tag](https://dequeuniversity.com/rules/axe/4.10/meta-refresh)."
},
"core/audits/accessibility/meta-refresh.js | failureTitle": {
"message": "The document uses `<meta http-equiv=\"refresh\">`"
},
"core/audits/accessibility/meta-refresh.js | title": {
"message": "The document does not use `<meta http-equiv=\"refresh\">`"
},
"core/audits/accessibility/meta-viewport.js | description": {
"message": "Disabling zooming is problematic for users with low vision who rely on screen magnification to properly see the contents of a web page. [Learn more about the viewport meta tag](https://dequeuniversity.com/rules/axe/4.10/meta-viewport)."
},
"core/audits/accessibility/meta-viewport.js | failureTitle": {
"message": "`[user-scalable=\"no\"]` is used in the `<meta name=\"viewport\">` element or the `[maximum-scale]` attribute is less than 5."
},
"core/audits/accessibility/meta-viewport.js | title": {
"message": "`[user-scalable=\"no\"]` is not used in the `<meta name=\"viewport\">` element and the `[maximum-scale]` attribute is not less than 5."
},
"core/audits/accessibility/object-alt.js | description": {
"message": "Screen readers cannot translate non-text content. Adding alternate text to `<object>` elements helps screen readers convey meaning to users. [Learn more about alt text for `object` elements](https://dequeuniversity.com/rules/axe/4.10/object-alt)."
},
"core/audits/accessibility/object-alt.js | failureTitle": {
"message": "`<object>` elements do not have alternate text"
},
"core/audits/accessibility/object-alt.js | title": {
"message": "`<object>` elements have alternate text"
},
"core/audits/accessibility/select-name.js | description": {
"message": "Form elements without effective labels can create frustrating experiences for screen reader users. [Learn more about the `select` element](https://dequeuniversity.com/rules/axe/4.10/select-name)."
},
"core/audits/accessibility/select-name.js | failureTitle": {
"message": "Select elements do not have associated label elements."
},
"core/audits/accessibility/select-name.js | title": {
"message": "Select elements have associated label elements."
},
"core/audits/accessibility/skip-link.js | description": {
"message": "Including a skip link can help users skip to the main content to save time. [Learn more about skip links](https://dequeuniversity.com/rules/axe/4.10/skip-link)."
},
"core/audits/accessibility/skip-link.js | failureTitle": {
"message": "Skip links are not focusable."
},
"core/audits/accessibility/skip-link.js | title": {
"message": "Skip links are focusable."
},
"core/audits/accessibility/tabindex.js | description": {
"message": "A value greater than 0 implies an explicit navigation ordering. Although technically valid, this often creates frustrating experiences for users who rely on assistive technologies. [Learn more about the `tabindex` attribute](https://dequeuniversity.com/rules/axe/4.10/tabindex)."
},
"core/audits/accessibility/tabindex.js | failureTitle": {
"message": "Some elements have a `[tabindex]` value greater than 0"
},
"core/audits/accessibility/tabindex.js | title": {
"message": "No element has a `[tabindex]` value greater than 0"
},
"core/audits/accessibility/table-duplicate-name.js | description": {
"message": "The summary attribute should describe the table structure, while `<caption>` should have the onscreen title. Accurate table mark-up helps users of screen readers. [Learn more about summary and caption](https://dequeuniversity.com/rules/axe/4.10/table-duplicate-name)."
},
"core/audits/accessibility/table-duplicate-name.js | failureTitle": {
"message": "Tables have the same content in the summary attribute and `<caption>.`"
},
"core/audits/accessibility/table-duplicate-name.js | title": {
"message": "Tables have different content in the summary attribute and `<caption>`."
},
"core/audits/accessibility/table-fake-caption.js | description": {
"message": "Screen readers have features to make navigating tables easier. Ensuring that tables use the actual caption element instead of cells with the `[colspan]` attribute may improve the experience for screen reader users. [Learn more about captions](https://dequeuniversity.com/rules/axe/4.10/table-fake-caption)."
},
"core/audits/accessibility/table-fake-caption.js | failureTitle": {
"message": "Tables do not use `<caption>` instead of cells with the `[colspan]` attribute to indicate a caption."
},
"core/audits/accessibility/table-fake-caption.js | title": {
"message": "Tables use `<caption>` instead of cells with the `[colspan]` attribute to indicate a caption."
},
"core/audits/accessibility/target-size.js | description": {
"message": "Touch targets with sufficient size and spacing help users who may have difficulty targeting small controls to activate the targets. [Learn more about touch targets](https://dequeuniversity.com/rules/axe/4.10/target-size)."
},
"core/audits/accessibility/target-size.js | failureTitle": {
"message": "Touch targets do not have sufficient size or spacing."
},
"core/audits/accessibility/target-size.js | title": {
"message": "Touch targets have sufficient size and spacing."
},
"core/audits/accessibility/td-has-header.js | description": {
"message": "Screen readers have features to make navigating tables easier. Ensuring that `<td>` elements in a large table (3 or more cells in width and height) have an associated table header may improve the experience for screen reader users. [Learn more about table headers](https://dequeuniversity.com/rules/axe/4.10/td-has-header)."
},
"core/audits/accessibility/td-has-header.js | failureTitle": {
"message": "`<td>` elements in a large `<table>` do not have table headers."
},
"core/audits/accessibility/td-has-header.js | title": {
"message": "`<td>` elements in a large `<table>` have one or more table headers."
},
"core/audits/accessibility/td-headers-attr.js | description": {
"message": "Screen readers have features to make navigating tables easier. Ensuring `<td>` cells using the `[headers]` attribute only refer to other cells in the same table may improve the experience for screen reader users. [Learn more about the `headers` attribute](https://dequeuniversity.com/rules/axe/4.10/td-headers-attr)."
},
"core/audits/accessibility/td-headers-attr.js | failureTitle": {
"message": "Cells in a `<table>` element that use the `[headers]` attribute refer to an element `id` not found within the same table."
},
"core/audits/accessibility/td-headers-attr.js | title": {
"message": "Cells in a `<table>` element that use the `[headers]` attribute refer to table cells within the same table."
},
"core/audits/accessibility/th-has-data-cells.js | description": {
"message": "Screen readers have features to make navigating tables easier. Ensuring table headers always refer to some set of cells may improve the experience for screen reader users. [Learn more about table headers](https://dequeuniversity.com/rules/axe/4.10/th-has-data-cells)."
},
"core/audits/accessibility/th-has-data-cells.js | failureTitle": {
"message": "`<th>` elements and elements with `[role=\"columnheader\"/\"rowheader\"]` do not have data cells they describe."
},
"core/audits/accessibility/th-has-data-cells.js | title": {
"message": "`<th>` elements and elements with `[role=\"columnheader\"/\"rowheader\"]` have data cells they describe."
},
"core/audits/accessibility/valid-lang.js | description": {
"message": "Specifying a valid [BCP 47 language](https://www.w3.org/International/questions/qa-choosing-language-tags#question) on elements helps ensure that text is pronounced correctly by a screen reader. [Learn how to use the `lang` attribute](https://dequeuniversity.com/rules/axe/4.10/valid-lang)."
},
"core/audits/accessibility/valid-lang.js | failureTitle": {
"message": "`[lang]` attributes do not have a valid value"
},
"core/audits/accessibility/valid-lang.js | title": {
"message": "`[lang]` attributes have a valid value"
},
"core/audits/accessibility/video-caption.js | description": {
"message": "When a video provides a caption it is easier for deaf and hearing impaired users to access its information. [Learn more about video captions](https://dequeuniversity.com/rules/axe/4.10/video-caption)."
},
"core/audits/accessibility/video-caption.js | failureTitle": {
"message": "`<video>` elements do not contain a `<track>` element with `[kind=\"captions\"]`."
},
"core/audits/accessibility/video-caption.js | title": {
"message": "`<video>` elements contain a `<track>` element with `[kind=\"captions\"]`"
},
"core/audits/autocomplete.js | columnCurrent": {
"message": "Current Value"
},
"core/audits/autocomplete.js | columnSuggestions": {
"message": "Suggested Token"
},
"core/audits/autocomplete.js | description": {
"message": "`autocomplete` helps users submit forms quicker. To reduce user effort, consider enabling by setting the `autocomplete` attribute to a valid value. [Learn more about `autocomplete` in forms](https://developers.google.com/web/fundamentals/design-and-ux/input/forms#use_metadata_to_enable_auto-complete)"
},
"core/audits/autocomplete.js | failureTitle": {
"message": "`<input>` elements do not have correct `autocomplete` attributes"
},
"core/audits/autocomplete.js | manualReview": {
"message": "Requires manual review"
},
"core/audits/autocomplete.js | reviewOrder": {
"message": "Review order of tokens"
},
"core/audits/autocomplete.js | title": {
"message": "`<input>` elements correctly use `autocomplete`"
},
"core/audits/autocomplete.js | warningInvalid": {
"message": "`autocomplete` token(s): \"{token}\" is invalid in {snippet}"
},
"core/audits/autocomplete.js | warningOrder": {
"message": "Review order of tokens: \"{tokens}\" in {snippet}"
},
"core/audits/bf-cache.js | actionableFailureType": {
"message": "Actionable"
},
"core/audits/bf-cache.js | description": {
"message": "Many navigations are performed by going back to a previous page, or forwards again. The back/forward cache (bfcache) can speed up these return navigations. [Learn more about the bfcache](https://developer.chrome.com/docs/lighthouse/performance/bf-cache/)"
},
"core/audits/bf-cache.js | displayValue": {
"message": "{itemCount, plural,\n =1 {1 failure reason}\n other {# failure reasons}\n }"
},
"core/audits/bf-cache.js | failureReasonColumn": {
"message": "Failure reason"
},
"core/audits/bf-cache.js | failureTitle": {
"message": "Page prevented back/forward cache restoration"
},
"core/audits/bf-cache.js | failureTypeColumn": {
"message": "Failure type"
},
"core/audits/bf-cache.js | notActionableFailureType": {
"message": "Not actionable"
},
"core/audits/bf-cache.js | supportPendingFailureType": {
"message": "Pending browser support"
},
"core/audits/bf-cache.js | title": {
"message": "Page didn't prevent back/forward cache restoration"
},
"core/audits/bf-cache.js | warningHeadless": {
"message": "Back/forward cache cannot be tested in old Headless Chrome (`--chrome-flags=\"--headless=old\"`). To see audit results, use the new Headless Chrome (`--chrome-flags=\"--headless=new\"`) or standard Chrome."
},
"core/audits/bootup-time.js | chromeExtensionsWarning": {
"message": "Chrome extensions negatively affected this page's load performance. Try auditing the page in incognito mode or from a Chrome profile without extensions."
},
"core/audits/bootup-time.js | columnScriptEval": {
"message": "Script Evaluation"
},
"core/audits/bootup-time.js | columnScriptParse": {
"message": "Script Parse"
},
"core/audits/bootup-time.js | columnTotal": {
"message": "Total CPU Time"
},
"core/audits/bootup-time.js | description": {
"message": "Consider reducing the time spent parsing, compiling, and executing JS. You may find delivering smaller JS payloads helps with this. [Learn how to reduce Javascript execution time](https://developer.chrome.com/docs/lighthouse/performance/bootup-time/)."
},
"core/audits/bootup-time.js | failureTitle": {
"message": "Reduce JavaScript execution time"
},
"core/audits/bootup-time.js | title": {
"message": "JavaScript execution time"
},
"core/audits/byte-efficiency/duplicated-javascript.js | description": {
"message": "Remove large, duplicate JavaScript modules from bundles to reduce unnecessary bytes consumed by network activity. "
},
"core/audits/byte-efficiency/duplicated-javascript.js | title": {
"message": "Remove duplicate modules in JavaScript bundles"
},
"core/audits/byte-efficiency/efficient-animated-content.js | description": {
"message": "Large GIFs are inefficient for delivering animated content. Consider using MPEG4/WebM videos for animations and PNG/WebP for static images instead of GIF to save network bytes. [Learn more about efficient video formats](https://developer.chrome.com/docs/lighthouse/performance/efficient-animated-content/)"
},
"core/audits/byte-efficiency/efficient-animated-content.js | title": {
"message": "Use video formats for animated content"
},
"core/audits/byte-efficiency/legacy-javascript.js | description": {
"message": "Polyfills and transforms enable legacy browsers to use new JavaScript features. However, many aren't necessary for modern browsers. Consider modifying your JavaScript build process to not transpile [Baseline](https://web.dev/baseline) features, unless you know you must support legacy browsers. [Learn why most sites can deploy ES6+ code without transpiling](https://philipwalton.com/articles/the-state-of-es5-on-the-web/)"
},
"core/audits/byte-efficiency/legacy-javascript.js | detectedCoreJs2Warning": {
"message": "Version 2 of core-js was detected on the page. You should upgrade to version 3 for many performance improvements."
},
"core/audits/byte-efficiency/legacy-javascript.js | title": {
"message": "Avoid serving legacy JavaScript to modern browsers"
},
"core/audits/byte-efficiency/modern-image-formats.js | description": {
"message": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/)."
},
"core/audits/byte-efficiency/modern-image-formats.js | title": {
"message": "Serve images in next-gen formats"
},
"core/audits/byte-efficiency/offscreen-images.js | description": {
"message": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/)."
},
"core/audits/byte-efficiency/offscreen-images.js | title": {
"message": "Defer offscreen images"
},
"core/audits/byte-efficiency/render-blocking-resources.js | description": {
"message": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/)."
},
"core/audits/byte-efficiency/render-blocking-resources.js | title": {
"message": "Eliminate render-blocking resources"
},
"core/audits/byte-efficiency/total-byte-weight.js | description": {
"message": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/)."
},
"core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
"message": "Total size was {totalBytes, number, bytes} KiB"
},
"core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
"message": "Avoid enormous network payloads"
},
"core/audits/byte-efficiency/total-byte-weight.js | title": {
"message": "Avoids enormous network payloads"
},
"core/audits/byte-efficiency/unminified-css.js | description": {
"message": "Minifying CSS files can reduce network payload sizes. [Learn how to minify CSS](https://developer.chrome.com/docs/lighthouse/performance/unminified-css/)."
},
"core/audits/byte-efficiency/unminified-css.js | title": {
"message": "Minify CSS"
},
"core/audits/byte-efficiency/unminified-javascript.js | description": {
"message": "Minifying JavaScript files can reduce payload sizes and script parse time. [Learn how to minify JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unminified-javascript/)."
},
"core/audits/byte-efficiency/unminified-javascript.js | title": {
"message": "Minify JavaScript"
},
"core/audits/byte-efficiency/unused-css-rules.js | description": {
"message": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/)."
},
"core/audits/byte-efficiency/unused-css-rules.js | title": {
"message": "Reduce unused CSS"
},
"core/audits/byte-efficiency/unused-javascript.js | description": {
"message": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/)."
},
"core/audits/byte-efficiency/unused-javascript.js | title": {
"message": "Reduce unused JavaScript"
},
"core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
"message": "A long cache lifetime can speed up repeat visits to your page. [Learn more about efficient cache policies](https://developer.chrome.com/docs/lighthouse/performance/uses-long-cache-ttl/)."
},
"core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
"message": "{itemCount, plural,\n =1 {1 resource found}\n other {# resources found}\n }"
},
"core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
"message": "Serve static assets with an efficient cache policy"
},
"core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
"message": "Uses efficient cache policy on static assets"
},
"core/audits/byte-efficiency/uses-optimized-images.js | description": {
"message": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/)."
},
"core/audits/byte-efficiency/uses-optimized-images.js | title": {
"message": "Efficiently encode images"
},
"core/audits/byte-efficiency/uses-responsive-images-snapshot.js | columnActualDimensions": {
"message": "Actual dimensions"
},
"core/audits/byte-efficiency/uses-responsive-images-snapshot.js | columnDisplayedDimensions": {
"message": "Displayed dimensions"
},
"core/audits/byte-efficiency/uses-responsive-images-snapshot.js | failureTitle": {
"message": "Images were larger than their displayed size"
},
"core/audits/byte-efficiency/uses-responsive-images-snapshot.js | title": {
"message": "Images we