From becd81fa0cda2a4d3733ceb5294ef1e4ff2a15d5 Mon Sep 17 00:00:00 2001 From: JDev Date: Tue, 12 Nov 2024 21:52:38 +0100 Subject: [PATCH 1/6] docs(readme): add Guardius to services list (#16235) --- readme.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/readme.md b/readme.md index c15dc6840963..01678864cb49 100644 --- a/readme.md +++ b/readme.md @@ -362,6 +362,8 @@ This section details services that have integrated Lighthouse data. If you're wo * **[DeploymentHawk](https://deploymenthawk.com)** - DeploymentHawk is an automated site auditing tool powered by Lighthouse. Effortlessly catch performance, accessibility, and SEO issues before they impact your users. DeploymentHawk is a paid product with a free 7-day trial. +* **[Guardius](https://guardius.io)** - Guardius is a DevOps and DevSecOps SaaS platform that integrates Lighthouse to deliver automated web performance analysis. It not only provides metrics evaluation and automatic scanning but also enables performance comparisons across different periods and ongoing observation over time. Additionally, Guardius offers predefined and customized alerts tailored to your specific requirements. A free version of Guardius is available for users to explore its features. + ## Lighthouse Integrations in non-Web Perf services * **[PageWatch](https://pagewatch.dev/)** — PageWatch is a tool to find problem pages on your website. It provides insights into spelling errors, layout issues, slow pages (powered by Lighthouse) and more. PageWatch is offered via free and paid plans. From 2566009c44d9b465f6514255421a16d9480876f1 Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Wed, 13 Nov 2024 13:11:11 +1300 Subject: [PATCH 2/6] docs(readme): add `lighthouse-matchers` to related projects (#16239) --- readme.md | 1 + 1 file changed, 1 insertion(+) diff --git a/readme.md b/readme.md index 01678864cb49..ae36dd7fde76 100644 --- a/readme.md +++ b/readme.md @@ -401,6 +401,7 @@ Other awesome open source projects that use Lighthouse. * **[lighthouse-gh-reporter](https://github.com/carlesnunez/lighthouse-gh-reporter)** - Run Lighthouse in CI and report back in a comment on your pull requests * **[lighthouse-jest-example](https://github.com/justinribeiro/lighthouse-jest-example)** - Gather performance metrics via Lighthouse and assert results with Jest; uses Puppeteer to start Chrome with network emulation settings defined by WebPageTest. * **[lighthouse-lambda](https://github.com/Otterseer/lighthouse-lambda)** - Run Lighthouse on AWS Lambda with prebuilt stable desktop Headless Chrome. +* **[lighthouse-matchers](https://github.com/ackama/lighthouse-matchers)** - Provides RSpec matchers for executing and evaluating Google Chrome Lighthouse audit scores. * **[lighthouse-mocha-example](https://github.com/rishichawda/lighthouse-mocha-example)** - Run Lighthouse performance tests with Mocha and chrome-launcher. * **[lighthouse-monitor](https://github.com/verivox/lighthouse-monitor)** - Run Lighthouse against all your URLs. Send metrics to any backend you want, save all reports with automatic data retention, and compare any two results in a web UI. * **[lighthouse-persist](https://github.com/foo-software/lighthouse-persist)** - Run Lighthouse and upload HTML reports to an AWS S3 bucket. From 9a5367fcc903679a65abebaf822cfc6f58217502 Mon Sep 17 00:00:00 2001 From: Adam Raine <6752989+adamraine@users.noreply.github.com> Date: Wed, 13 Nov 2024 10:55:12 -0800 Subject: [PATCH 3/6] deps: upgrade puppeteer to 23.8.0 (#16248) --- package.json | 4 ++-- yarn.lock | 45 +++++++++++++++++++-------------------------- 2 files changed, 21 insertions(+), 28 deletions(-) diff --git a/package.json b/package.json index 92a513758a74..eef792311ec6 100644 --- a/package.json +++ b/package.json @@ -167,7 +167,7 @@ "pako": "^2.0.3", "preact": "^10.7.2", "pretty-json-stringify": "^0.0.2", - "puppeteer": "^23.5.2", + "puppeteer": "^23.8.0", "resolve": "^1.22.1", "rollup": "^2.52.7", "rollup-plugin-polyfill-node": "^0.12.0", @@ -200,7 +200,7 @@ "metaviewport-parser": "0.3.0", "open": "^8.4.0", "parse-cache-control": "1.0.1", - "puppeteer-core": "^23.5.2", + "puppeteer-core": "^23.8.0", "robots-parser": "^3.0.1", "semver": "^5.3.0", "speedline-core": "^1.4.3", diff --git a/yarn.lock b/yarn.lock index 23fcc8447036..79d6c3f0b727 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1138,12 +1138,12 @@ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= -"@puppeteer/browsers@2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@puppeteer/browsers/-/browsers-2.4.0.tgz#a0dd0f4e381e53f509109ae83b891db5972750f5" - integrity sha512-x8J1csfIygOwf6D6qUAZ0ASk3z63zPb7wkNeHRerCMh82qWKUrOgkuP005AJC8lDL6/evtXETGEJVcwykKT4/g== +"@puppeteer/browsers@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@puppeteer/browsers/-/browsers-2.4.1.tgz#7afd271199cc920ece2ff25109278be0a3e8a225" + integrity sha512-0kdAbmic3J09I6dT8e9vE2JOCSt13wHCW5x/ly8TSt2bDtuIWe2TgLZZDHdcziw9AVCzflMAXCrVyRIhIs44Ng== dependencies: - debug "^4.3.6" + debug "^4.3.7" extract-zip "^2.0.1" progress "^2.0.3" proxy-agent "^6.4.0" @@ -2841,13 +2841,6 @@ debug@^3.2.7: dependencies: ms "^2.1.1" -debug@^4.3.6: - version "4.3.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.6.tgz#2ab2c38fbaffebf8aa95fdfe6d88438c7a13c52b" - integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== - dependencies: - ms "2.1.2" - debug@^4.3.7: version "4.3.7" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" @@ -2931,7 +2924,7 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= -devtools-protocol@0.0.1312386, devtools-protocol@0.0.1342118: +devtools-protocol@0.0.1312386, devtools-protocol@0.0.1367902: version "0.0.1312386" resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.1312386.tgz#5ab824d6f1669ec6c6eb0fba047e73601d969052" integrity sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA== @@ -6034,28 +6027,28 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -puppeteer-core@23.5.2, puppeteer-core@^23.5.2: - version "23.5.2" - resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-23.5.2.tgz#91f19f4154775a8f97709c887e506c784e6fa965" - integrity sha512-UwPAX29EID8lJmxeL7JT3Gz35D1BHn5o9ZXpBLoR24W7gtUg1dLx7OUPsUTR5Tlxf+1Yeqw9W3qP4uqWThqXgg== +puppeteer-core@23.8.0, puppeteer-core@^23.8.0: + version "23.8.0" + resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-23.8.0.tgz#745be0a509734c65bd678c08bc9418b0f142cf36" + integrity sha512-c2ymGN2M//We7pC+JhP2dE/g4+qnT89BO+EMSZyJmecN3DN6RNqErA7eH7DrWoNIcU75r2nP4VHa4pswAL6NVg== dependencies: - "@puppeteer/browsers" "2.4.0" + "@puppeteer/browsers" "2.4.1" chromium-bidi "0.8.0" debug "^4.3.7" - devtools-protocol "0.0.1342118" + devtools-protocol "0.0.1367902" typed-query-selector "^2.12.0" ws "^8.18.0" -puppeteer@^23.5.2: - version "23.5.2" - resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-23.5.2.tgz#2e4cb80d07aa5b385dae7a23140e4503f948d586" - integrity sha512-7OOGEIoCjGP9lQ6QHvRSBTO3VRDPvu+YGl6rLCKOfYNMp1Lqc1U+s3lS1JdyR+jee1pZ55sxf+TEKsmqOopO1A== +puppeteer@^23.8.0: + version "23.8.0" + resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-23.8.0.tgz#24f623223ee7fd74f495a36620f940a2eca9ac88" + integrity sha512-MFWDMWoCcOpwNwQIjA9gPKWrEUbj8bLCzkK56w5lZPMUT6wK4FfpgOEPxKffVmXEMYMZzgcjxzqy15b/Q1ibaw== dependencies: - "@puppeteer/browsers" "2.4.0" + "@puppeteer/browsers" "2.4.1" chromium-bidi "0.8.0" cosmiconfig "^9.0.0" - devtools-protocol "0.0.1342118" - puppeteer-core "23.5.2" + devtools-protocol "0.0.1367902" + puppeteer-core "23.8.0" typed-query-selector "^2.12.0" q@^1.5.1: From 9acc3aef8c48fbafd9c677690ca6ef411448a0a0 Mon Sep 17 00:00:00 2001 From: Nate <37554478+servusdei2018@users.noreply.github.com> Date: Wed, 13 Nov 2024 21:11:00 -0500 Subject: [PATCH 4/6] cli: create writeFile destination if necessary (#15990) --- cli/printer.js | 15 ++++++++++----- cli/test/cli/printer-test.js | 23 +++++++++++++++++++---- 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/cli/printer.js b/cli/printer.js index 2105fa3be7b3..0f0d09df28cd 100644 --- a/cli/printer.js +++ b/cli/printer.js @@ -5,6 +5,7 @@ */ import fs from 'fs'; +import path from 'path'; import log from 'lighthouse-logger'; @@ -58,13 +59,17 @@ function writeToStdout(output) { */ function writeFile(filePath, output, outputMode) { return new Promise((resolve, reject) => { - // TODO: make this mkdir to the filePath. - fs.writeFile(filePath, output, (err) => { - if (err) { + fs.mkdir(path.dirname(filePath), {recursive: true}, (err) => { + if (err && err.code !== 'EEXIST') { return reject(err); } - log.log('Printer', `${OutputMode[outputMode]} output written to ${filePath}`); - resolve(); + fs.writeFile(filePath, output, (err) => { + if (err) { + return reject(err); + } + log.log('Printer', `${OutputMode[outputMode]} output written to ${filePath}`); + resolve(); + }); }); }); } diff --git a/cli/test/cli/printer-test.js b/cli/test/cli/printer-test.js index 82f5cc1c37c7..14a9213af399 100644 --- a/cli/test/cli/printer-test.js +++ b/cli/test/cli/printer-test.js @@ -6,6 +6,7 @@ import assert from 'assert/strict'; import fs from 'fs'; +import path from 'path'; import {readJson} from '../../../core/test/test-utils.js'; import * as Printer from '../../printer.js'; @@ -34,11 +35,9 @@ describe('Printer', () => { }); it('throws for invalid paths', () => { - const path = '!/#@.json'; + const path = '//#@.json'; const report = JSON.stringify(sampleResults); - return Printer.write(report, 'html', path).catch(err => { - assert.ok(err.code === 'ENOENT'); - }); + return assert.rejects(Printer.write(report, 'html', path)); }); it('returns output modes', () => { @@ -49,4 +48,20 @@ describe('Printer', () => { assert.strictEqual(typeof mode, 'string'); }); }); + + it('creates missing directories when writing to file', () => { + const dirPath = './non/existent/directory/.test-file.json'; + const report = JSON.stringify(sampleResults); + const dir = path.dirname(dirPath); + if (fs.existsSync(dir)) { + fs.rmdirSync(dir, {recursive: true}); + } + return Printer.write(report, 'json', dirPath).then(_ => { + assert.ok(fs.existsSync(dir), `Directory ${dir} should exist now`); + const fileContents = fs.readFileSync(dirPath, 'utf8'); + assert.ok(/lighthouseVersion/gim.test(fileContents)); + fs.unlinkSync(dirPath); + fs.rmdirSync(dir, {recursive: true}); + }); + }); }); From 8c3f2de4195ffeb01232ede233af3aab9a2a4151 Mon Sep 17 00:00:00 2001 From: Adam Raine <6752989+adamraine@users.noreply.github.com> Date: Thu, 14 Nov 2024 12:21:26 -0800 Subject: [PATCH 5/6] i18n: import (#16250) --- shared/localization/locales/ar-XB.json | 167 +++++++++--------- shared/localization/locales/ar.json | 187 ++++++++++---------- shared/localization/locales/bg.json | 167 +++++++++--------- shared/localization/locales/ca.json | 173 +++++++++--------- shared/localization/locales/cs.json | 173 +++++++++--------- shared/localization/locales/da.json | 179 ++++++++++--------- shared/localization/locales/de.json | 175 ++++++++++--------- shared/localization/locales/el.json | 175 ++++++++++--------- shared/localization/locales/en-GB.json | 169 +++++++++--------- shared/localization/locales/en-XA.json | 167 +++++++++--------- shared/localization/locales/es-419.json | 175 ++++++++++--------- shared/localization/locales/es.json | 173 +++++++++--------- shared/localization/locales/fi.json | 175 ++++++++++--------- shared/localization/locales/fil.json | 177 ++++++++++--------- shared/localization/locales/fr.json | 179 ++++++++++--------- shared/localization/locales/he.json | 185 ++++++++++---------- shared/localization/locales/hi.json | 175 ++++++++++--------- shared/localization/locales/hr.json | 171 +++++++++--------- shared/localization/locales/hu.json | 171 +++++++++--------- shared/localization/locales/id.json | 173 +++++++++--------- shared/localization/locales/it.json | 171 +++++++++--------- shared/localization/locales/ja.json | 171 +++++++++--------- shared/localization/locales/ko.json | 171 +++++++++--------- shared/localization/locales/lt.json | 171 +++++++++--------- shared/localization/locales/lv.json | 173 +++++++++--------- shared/localization/locales/nl.json | 171 +++++++++--------- shared/localization/locales/no.json | 175 ++++++++++--------- shared/localization/locales/pl.json | 171 +++++++++--------- shared/localization/locales/pt-PT.json | 213 ++++++++++++----------- shared/localization/locales/pt.json | 185 ++++++++++---------- shared/localization/locales/ro.json | 179 ++++++++++--------- shared/localization/locales/ru.json | 177 ++++++++++--------- shared/localization/locales/sk.json | 177 ++++++++++--------- shared/localization/locales/sl.json | 173 +++++++++--------- shared/localization/locales/sr-Latn.json | 173 +++++++++--------- shared/localization/locales/sr.json | 173 +++++++++--------- shared/localization/locales/sv.json | 175 ++++++++++--------- shared/localization/locales/ta.json | 193 ++++++++++---------- shared/localization/locales/te.json | 175 ++++++++++--------- shared/localization/locales/th.json | 181 ++++++++++--------- shared/localization/locales/tr.json | 173 +++++++++--------- shared/localization/locales/uk.json | 177 ++++++++++--------- shared/localization/locales/vi.json | 181 ++++++++++--------- shared/localization/locales/zh-HK.json | 175 ++++++++++--------- shared/localization/locales/zh-TW.json | 187 ++++++++++---------- shared/localization/locales/zh.json | 183 ++++++++++--------- 46 files changed, 4262 insertions(+), 3848 deletions(-) diff --git a/shared/localization/locales/ar-XB.json b/shared/localization/locales/ar-XB.json index 76b7ab9aa155..cd28f42f295f 100644 --- a/shared/localization/locales/ar-XB.json +++ b/shared/localization/locales/ar-XB.json @@ -1,6 +1,6 @@ { "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.9/accesskeys)." + "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‬‏" @@ -9,7 +9,7 @@ "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.9/aria-allowed-attr)." + "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‬‏" @@ -18,7 +18,7 @@ "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.9/aria-allowed-role)." + "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‬‏" @@ -27,7 +27,7 @@ "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.9/aria-command-name)." + "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‬‏." @@ -36,7 +36,7 @@ "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)." + "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‬‏" @@ -45,7 +45,7 @@ "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)." + "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‬‏" @@ -54,7 +54,7 @@ "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)." + "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‬‏." @@ -63,7 +63,7 @@ "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‬‏ ``. [‏‮Learn‬‏ ‏‮how‬‏ `aria-hidden` ‏‮affects‬‏ ‏‮the‬‏ ‏‮document‬‏ ‏‮body‬‏](https://dequeuniversity.com/rules/axe/4.9/aria-hidden-body)." + "message": "‏‮Assistive‬‏ ‏‮technologies‬‏, ‏‮like‬‏ ‏‮screen‬‏ ‏‮readers‬‏, ‏‮work‬‏ ‏‮inconsistently‬‏ ‏‮when‬‏ `aria-hidden=\"true\"` ‏‮is‬‏ ‏‮set‬‏ ‏‮on‬‏ ‏‮the‬‏ ‏‮document‬‏ ``. [‏‮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‬‏ ``" @@ -72,7 +72,7 @@ "message": "`[aria-hidden=\"true\"]` ‏‮is‬‏ ‏‮not‬‏ ‏‮present‬‏ ‏‮on‬‏ ‏‮the‬‏ ‏‮document‬‏ ``" }, "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.9/aria-hidden-focus)." + "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‬‏" @@ -81,7 +81,7 @@ "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.9/aria-input-field-name)." + "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‬‏" @@ -90,7 +90,7 @@ "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.9/aria-meter-name)." + "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‬‏." @@ -99,7 +99,7 @@ "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.9/aria-progressbar-name)." + "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‬‏." @@ -108,7 +108,7 @@ "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)." + "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‬‏" @@ -117,7 +117,7 @@ "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)." + "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‬‏" @@ -126,7 +126,7 @@ "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.9/aria-required-children)." + "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‬‏." @@ -135,7 +135,7 @@ "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.9/aria-required-parent)." + "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‬‏" @@ -144,7 +144,7 @@ "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.9/aria-roles)." + "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‬‏" @@ -153,7 +153,7 @@ "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.9/aria-text)." + "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‬‏." @@ -162,7 +162,7 @@ "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.9/aria-toggle-field-name)." + "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‬‏" @@ -171,7 +171,7 @@ "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.9/aria-tooltip-name)." + "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‬‏." @@ -180,7 +180,7 @@ "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.9/aria-treeitem-name)." + "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‬‏." @@ -189,7 +189,7 @@ "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.9/aria-valid-attr-value)." + "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‬‏" @@ -198,7 +198,7 @@ "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.9/aria-valid-attr)." + "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‬‏" @@ -210,7 +210,7 @@ "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.9/button-name)." + "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‬‏" @@ -219,7 +219,7 @@ "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.9/bypass)." + "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‬‏" @@ -228,7 +228,7 @@ "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.9/color-contrast)." + "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‬‏." @@ -237,7 +237,7 @@ "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.9/definition-list)." + "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": "`
`'‏‮s‬‏ ‏‮do‬‏ ‏‮not‬‏ ‏‮contain‬‏ ‏‮only‬‏ ‏‮properly‬‏-‏‮ordered‬‏ `
` ‏‮and‬‏ `
` ‏‮groups‬‏, `