From 24ef1fea1fcbf50b8e134e433bdc99094f13493e Mon Sep 17 00:00:00 2001
From: rohittarpara <152840103+rohittarpara@users.noreply.github.com>
Date: Fri, 21 Jun 2024 01:00:20 +0530
Subject: [PATCH] feat(axe-core-4.9.1): update to use axe-core 4.9.1 (#1322)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
#### Details
This PR upgrades axe-core to 4.9.1 according to the instructions in
CONTRIBUTING.md.
##### Motivation
feature work 🚀
##### Context
#### Pull request checklist
- [x] PR title respects [Conventional
Commits](https://www.conventionalcommits.org) (starts with `fix:`,
`feat:`, etc, and is suitable for user-facing release notes)
- [x] PR contains no breaking changes, **OR** description of both PR
**and final merge commit** starts with `BREAKING CHANGE:`
- [x] Verify PR title and final merge commit contain space after `:` for
example `feat(feature): feature title` otherwise it will not be
considered by semantic-release for release.
- [ ] (if applicable) Addresses issue: #0000
- [ ] Added relevant unit tests for your changes
- [x] Ran `yarn precheckin`
- [x] Verified code coverage for the changes made
---------
Co-authored-by: Madalyn <3230904+madalynrose@users.noreply.github.com>
---
package.json | 6 +-
src/__snapshots__/index.test.ts.snap | 8 +-
src/cli.test.ts | 6 +-
src/index.test.ts | 6 +-
.../basic-axe-v4.9.1.axe-cli-v4.9.1.json | 72 +
.../basic-axe-v4.9.1.reporter-raw.json | 57 +
.../basic-axe-v4.9.1.reporter-v1.json | 74 +
.../basic-axe-v4.9.1.reporter-v2.json | 73 +
src/test-resources/basic-axe-v4.9.1.sarif | 767 +
...3citylights-axe-v4.9.1.axe-cli-v4.9.1.json | 16687 ++++++++++
.../w3citylights-axe-v4.9.1.reporter-raw.json | 25745 +++++++++++++++
.../w3citylights-axe-v4.9.1.reporter-v1.json | 18735 +++++++++++
.../w3citylights-axe-v4.9.1.reporter-v2.json | 18666 +++++++++++
.../w3citylights-axe-v4.9.1.sarif | 27243 ++++++++++++++++
yarn.lock | 68 +-
15 files changed, 108168 insertions(+), 45 deletions(-)
create mode 100644 src/test-resources/basic-axe-v4.9.1.axe-cli-v4.9.1.json
create mode 100644 src/test-resources/basic-axe-v4.9.1.reporter-raw.json
create mode 100644 src/test-resources/basic-axe-v4.9.1.reporter-v1.json
create mode 100644 src/test-resources/basic-axe-v4.9.1.reporter-v2.json
create mode 100644 src/test-resources/basic-axe-v4.9.1.sarif
create mode 100644 src/test-resources/w3citylights-axe-v4.9.1.axe-cli-v4.9.1.json
create mode 100644 src/test-resources/w3citylights-axe-v4.9.1.reporter-raw.json
create mode 100644 src/test-resources/w3citylights-axe-v4.9.1.reporter-v1.json
create mode 100644 src/test-resources/w3citylights-axe-v4.9.1.reporter-v2.json
create mode 100644 src/test-resources/w3citylights-axe-v4.9.1.sarif
diff --git a/package.json b/package.json
index 5bced6cc..50b9ca52 100644
--- a/package.json
+++ b/package.json
@@ -22,8 +22,8 @@
"yargs": "^17.0.0"
},
"devDependencies": {
- "@axe-core/cli": "^4.8.0",
- "@axe-core/puppeteer": "^4.8.0",
+ "@axe-core/cli": "^4.9.0",
+ "@axe-core/puppeteer": "^4.9.0",
"@types/jest": "^27.4.0",
"@types/lodash": "^4.14.136",
"@types/node": "^18.16.2",
@@ -46,7 +46,7 @@
},
"resolutions": {
"ansi-regex@^4.1.0": "^5.0.1",
- "axe-core": "4.8.4",
+ "axe-core": "4.9.1",
"chromedriver": "^119.0.1"
},
"scripts": {
diff --git a/src/__snapshots__/index.test.ts.snap b/src/__snapshots__/index.test.ts.snap
index 393c2903..26db68db 100644
--- a/src/__snapshots__/index.test.ts.snap
+++ b/src/__snapshots__/index.test.ts.snap
@@ -1388,15 +1388,15 @@ Object {
],
"tool": Object {
"driver": Object {
- "downloadUri": "https://www.npmjs.com/package/axe-core/v/4.8.4",
- "fullName": "axe for Web v4.8.4",
+ "downloadUri": "https://www.npmjs.com/package/axe-core/v/4.9.1",
+ "fullName": "axe for Web v4.9.1",
"informationUri": "https://www.deque.com/axe/axe-for-web/",
"name": "axe-core",
"properties": Object {
"microsoft/qualityDomain": "Accessibility",
},
"rules": Array [],
- "semanticVersion": "4.8.4",
+ "semanticVersion": "4.9.1",
"shortDescription": Object {
"text": "An open source accessibility rules library for automated testing.",
},
@@ -1407,7 +1407,7 @@ Object {
"name": "WCAG",
},
],
- "version": "4.8.4",
+ "version": "4.9.1",
},
},
},
diff --git a/src/cli.test.ts b/src/cli.test.ts
index a1c8738d..f30a0b03 100644
--- a/src/cli.test.ts
+++ b/src/cli.test.ts
@@ -83,6 +83,8 @@ describe('axe-sarif-converter CLI', () => {
${'w3citylights-axe-v4.8.4.axe-cli-v4.8.5.json'}
${'basic-axe-v4.8.4.axe-cli-v4.9.0.json'}
${'w3citylights-axe-v4.8.4.axe-cli-v4.9.0.json'}
+ ${'basic-axe-v4.9.1.axe-cli-v4.9.1.json'}
+ ${'w3citylights-axe-v4.9.1.axe-cli-v4.9.1.json'}
`(
'supports conversion from axe-cli output $inputFile',
async ({ inputFile }) => {
@@ -204,11 +206,11 @@ describe('axe-sarif-converter CLI', () => {
const testResultsDir = path.join(__dirname, '..', 'test-results');
const basicAxeV2File = path.join(
testResourcesDir,
- 'basic-axe-v4.8.4.reporter-v2.json',
+ 'basic-axe-v4.9.1.reporter-v2.json',
);
const basicSarifFile = path.join(
testResourcesDir,
- 'basic-axe-v4.8.4.sarif',
+ 'basic-axe-v4.9.1.sarif',
);
const mkdir = promisify(fs.mkdir);
diff --git a/src/index.test.ts b/src/index.test.ts
index 2f722c82..f3d9b6f2 100644
--- a/src/index.test.ts
+++ b/src/index.test.ts
@@ -119,6 +119,10 @@ describe('public convertAxeToSarif API', () => {
${'basic-axe-v4.8.4.reporter-v2.json'} | ${'basic-axe-v4.8.4.sarif'}
${'w3citylights-axe-v4.8.4.reporter-v1.json'} | ${'w3citylights-axe-v4.8.4.sarif'}
${'w3citylights-axe-v4.8.4.reporter-v2.json'} | ${'w3citylights-axe-v4.8.4.sarif'}
+ ${'basic-axe-v4.9.1.reporter-v1.json'} | ${'basic-axe-v4.9.1.sarif'}
+ ${'basic-axe-v4.9.1.reporter-v2.json'} | ${'basic-axe-v4.9.1.sarif'}
+ ${'w3citylights-axe-v4.9.1.reporter-v1.json'} | ${'w3citylights-axe-v4.9.1.sarif'}
+ ${'w3citylights-axe-v4.9.1.reporter-v2.json'} | ${'w3citylights-axe-v4.9.1.sarif'}
`(
'converts pinned v1/v2 input $inputFile to pinned output $outputFile',
({ inputFile, outputFile }) => {
@@ -165,7 +169,7 @@ describe('public sarifReporter API', () => {
// it isn't very meaningful to test cases that involve old axe versions here.
it.each`
inputFile | outputFile
- ${'basic-axe-v4.8.4.reporter-raw.json'} | ${'basic-axe-v4.8.4.sarif'}
+ ${'basic-axe-v4.9.1.reporter-raw.json'} | ${'basic-axe-v4.9.1.sarif'}
`(
'converts pinned raw input $inputFile to pinned output $outputFile',
async ({ inputFile, outputFile }) => {
diff --git a/src/test-resources/basic-axe-v4.9.1.axe-cli-v4.9.1.json b/src/test-resources/basic-axe-v4.9.1.axe-cli-v4.9.1.json
new file mode 100644
index 00000000..6050a564
--- /dev/null
+++ b/src/test-resources/basic-axe-v4.9.1.axe-cli-v4.9.1.json
@@ -0,0 +1,72 @@
+[
+ {
+ "testEngine": {
+ "name": "axe-core",
+ "version": "4.9.1"
+ },
+ "testRunner": {
+ "name": "axe"
+ },
+ "testEnvironment": {
+ "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/119.0.6045.105 Safari/537.36",
+ "windowWidth": 800,
+ "windowHeight": 600,
+ "orientationAngle": 0,
+ "orientationType": "landscape-primary"
+ },
+ "timestamp": "2024-06-19T05:14:53.272Z",
+ "url": "file:///C:/Users/v-rtarpara/Rohit/Projects/fork/axe-sarif-converter/src/test-resources/basic.html",
+ "toolOptions": {
+ "runOnly": {
+ "type": "rule",
+ "values": [
+ "document-title"
+ ]
+ },
+ "reporter": "v1"
+ },
+ "inapplicable": [],
+ "passes": [],
+ "incomplete": [],
+ "violations": [
+ {
+ "id": "document-title",
+ "impact": "serious",
+ "tags": [
+ "cat.text-alternatives",
+ "wcag2a",
+ "wcag242",
+ "TTv5",
+ "TT12.a",
+ "EN-301-549",
+ "EN-9.2.4.2",
+ "ACT"
+ ],
+ "description": "Ensures each HTML document contains a non-empty
element",
+ "help": "Documents must have element to aid in navigation",
+ "helpUrl": "https://dequeuniversity.com/rules/axe/4.9/document-title?application=webdriverjs",
+ "nodes": [
+ {
+ "any": [
+ {
+ "id": "doc-has-title",
+ "data": null,
+ "relatedNodes": [],
+ "impact": "serious",
+ "message": "Document does not have a non-empty element"
+ }
+ ],
+ "all": [],
+ "none": [],
+ "impact": "serious",
+ "html": "\n",
+ "target": [
+ "html"
+ ],
+ "failureSummary": "Fix any of the following:\n Document does not have a non-empty element"
+ }
+ ]
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/src/test-resources/basic-axe-v4.9.1.reporter-raw.json b/src/test-resources/basic-axe-v4.9.1.reporter-raw.json
new file mode 100644
index 00000000..bc2ff2ec
--- /dev/null
+++ b/src/test-resources/basic-axe-v4.9.1.reporter-raw.json
@@ -0,0 +1,57 @@
+[
+ {
+ "id": "document-title",
+ "result": "failed",
+ "pageLevel": false,
+ "impact": "serious",
+ "tags": [
+ "cat.text-alternatives",
+ "wcag2a",
+ "wcag242",
+ "TTv5",
+ "TT12.a",
+ "EN-301-549",
+ "EN-9.2.4.2",
+ "ACT"
+ ],
+ "description": "Ensures each HTML document contains a non-empty element",
+ "help": "Documents must have element to aid in navigation",
+ "helpUrl": "https://dequeuniversity.com/rules/axe/4.9/document-title?application=axe-puppeteer",
+ "inapplicable": [],
+ "passes": [],
+ "incomplete": [],
+ "violations": [
+ {
+ "any": [
+ {
+ "id": "doc-has-title",
+ "data": null,
+ "impact": "serious",
+ "message": "Document does not have a non-empty element",
+ "relatedNodes": []
+ }
+ ],
+ "all": [],
+ "none": [],
+ "impact": "serious",
+ "result": "failed",
+ "node": {
+ "selector": [
+ "html"
+ ],
+ "source": "\n",
+ "xpath": [
+ "/html"
+ ],
+ "ancestry": [
+ "html"
+ ],
+ "nodeIndexes": [
+ 0
+ ],
+ "fromFrame": false
+ }
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/src/test-resources/basic-axe-v4.9.1.reporter-v1.json b/src/test-resources/basic-axe-v4.9.1.reporter-v1.json
new file mode 100644
index 00000000..96480019
--- /dev/null
+++ b/src/test-resources/basic-axe-v4.9.1.reporter-v1.json
@@ -0,0 +1,74 @@
+{
+ "testEngine": {
+ "name": "axe-core",
+ "version": "4.9.1"
+ },
+ "testRunner": {
+ "name": "axe"
+ },
+ "testEnvironment": {
+ "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/101.0.4950.0 Safari/537.36",
+ "windowWidth": 800,
+ "windowHeight": 600,
+ "orientationAngle": 0,
+ "orientationType": "portrait-primary"
+ },
+ "timestamp": "2000-01-02T03:04:05.006Z",
+ "url": "http://localhost/",
+ "toolOptions": {
+ "xpath": true,
+ "runOnly": {
+ "type": "rule",
+ "values": [
+ "document-title"
+ ]
+ },
+ "reporter": "v1"
+ },
+ "inapplicable": [],
+ "passes": [],
+ "incomplete": [],
+ "violations": [
+ {
+ "id": "document-title",
+ "impact": "serious",
+ "tags": [
+ "cat.text-alternatives",
+ "wcag2a",
+ "wcag242",
+ "TTv5",
+ "TT12.a",
+ "EN-301-549",
+ "EN-9.2.4.2",
+ "ACT"
+ ],
+ "description": "Ensures each HTML document contains a non-empty element",
+ "help": "Documents must have element to aid in navigation",
+ "helpUrl": "https://dequeuniversity.com/rules/axe/4.9/document-title?application=axe-puppeteer",
+ "nodes": [
+ {
+ "any": [
+ {
+ "id": "doc-has-title",
+ "data": null,
+ "relatedNodes": [],
+ "impact": "serious",
+ "message": "Document does not have a non-empty element"
+ }
+ ],
+ "all": [],
+ "none": [],
+ "impact": "serious",
+ "html": "\n",
+ "target": [
+ "html"
+ ],
+ "xpath": [
+ "/html"
+ ],
+ "failureSummary": "Fix any of the following:\n Document does not have a non-empty element"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/test-resources/basic-axe-v4.9.1.reporter-v2.json b/src/test-resources/basic-axe-v4.9.1.reporter-v2.json
new file mode 100644
index 00000000..bed87b77
--- /dev/null
+++ b/src/test-resources/basic-axe-v4.9.1.reporter-v2.json
@@ -0,0 +1,73 @@
+{
+ "testEngine": {
+ "name": "axe-core",
+ "version": "4.9.1"
+ },
+ "testRunner": {
+ "name": "axe"
+ },
+ "testEnvironment": {
+ "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/101.0.4950.0 Safari/537.36",
+ "windowWidth": 800,
+ "windowHeight": 600,
+ "orientationAngle": 0,
+ "orientationType": "portrait-primary"
+ },
+ "timestamp": "2000-01-02T03:04:05.006Z",
+ "url": "http://localhost/",
+ "toolOptions": {
+ "xpath": true,
+ "runOnly": {
+ "type": "rule",
+ "values": [
+ "document-title"
+ ]
+ },
+ "reporter": "v2"
+ },
+ "inapplicable": [],
+ "passes": [],
+ "incomplete": [],
+ "violations": [
+ {
+ "id": "document-title",
+ "impact": "serious",
+ "tags": [
+ "cat.text-alternatives",
+ "wcag2a",
+ "wcag242",
+ "TTv5",
+ "TT12.a",
+ "EN-301-549",
+ "EN-9.2.4.2",
+ "ACT"
+ ],
+ "description": "Ensures each HTML document contains a non-empty element",
+ "help": "Documents must have element to aid in navigation",
+ "helpUrl": "https://dequeuniversity.com/rules/axe/4.9/document-title?application=axe-puppeteer",
+ "nodes": [
+ {
+ "any": [
+ {
+ "id": "doc-has-title",
+ "data": null,
+ "relatedNodes": [],
+ "impact": "serious",
+ "message": "Document does not have a non-empty element"
+ }
+ ],
+ "all": [],
+ "none": [],
+ "impact": "serious",
+ "html": "\n",
+ "target": [
+ "html"
+ ],
+ "xpath": [
+ "/html"
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/test-resources/basic-axe-v4.9.1.sarif b/src/test-resources/basic-axe-v4.9.1.sarif
new file mode 100644
index 00000000..9aa7ff80
--- /dev/null
+++ b/src/test-resources/basic-axe-v4.9.1.sarif
@@ -0,0 +1,767 @@
+{
+ "version": "2.1.0",
+ "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json",
+ "runs": [
+ {
+ "conversion": {
+ "tool": {
+ "driver": {
+ "name": "axe-sarif-converter",
+ "fullName": "axe-sarif-converter v0.0.0-managed-by-semantic-release",
+ "version": "0.0.0-managed-by-semantic-release",
+ "semanticVersion": "0.0.0-managed-by-semantic-release",
+ "informationUri": "https://github.com/microsoft/axe-sarif-converter/releases/tag/v0.0.0-managed-by-semantic-release",
+ "downloadUri": "https://www.npmjs.com/package/axe-sarif-converter/v/0.0.0-managed-by-semantic-release"
+ }
+ }
+ },
+ "tool": {
+ "driver": {
+ "name": "axe-core",
+ "fullName": "axe for Web v4.9.1",
+ "shortDescription": {
+ "text": "An open source accessibility rules library for automated testing."
+ },
+ "version": "4.9.1",
+ "semanticVersion": "4.9.1",
+ "informationUri": "https://www.deque.com/axe/axe-for-web/",
+ "downloadUri": "https://www.npmjs.com/package/axe-core/v/4.9.1",
+ "properties": {
+ "microsoft/qualityDomain": "Accessibility"
+ },
+ "supportedTaxonomies": [
+ {
+ "name": "WCAG",
+ "index": 0,
+ "guid": "ca34e0e1-5faf-4f55-a989-cdae42a98f18"
+ }
+ ],
+ "rules": [
+ {
+ "id": "document-title",
+ "name": "Documents must have element to aid in navigation",
+ "fullDescription": {
+ "text": "Ensures each HTML document contains a non-empty element."
+ },
+ "helpUri": "https://dequeuniversity.com/rules/axe/4.9/document-title?application=axe-puppeteer",
+ "relationships": [
+ {
+ "target": {
+ "id": "wcag242",
+ "index": 45,
+ "toolComponent": {
+ "name": "WCAG",
+ "index": 0,
+ "guid": "ca34e0e1-5faf-4f55-a989-cdae42a98f18"
+ }
+ },
+ "kinds": [
+ "superset"
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "invocations": [
+ {
+ "startTimeUtc": "2000-01-02T03:04:05.006Z",
+ "endTimeUtc": "2000-01-02T03:04:05.006Z",
+ "executionSuccessful": true
+ }
+ ],
+ "artifacts": [
+ {
+ "location": {
+ "uri": "http://localhost/",
+ "index": 0
+ },
+ "sourceLanguage": "html",
+ "roles": [
+ "analysisTarget"
+ ]
+ }
+ ],
+ "results": [
+ {
+ "ruleId": "document-title",
+ "ruleIndex": 0,
+ "kind": "fail",
+ "level": "error",
+ "message": {
+ "text": "Fix any of the following: Document does not have a non-empty element.",
+ "markdown": "Fix any of the following:\n- Document does not have a non-empty <title> element."
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "http://localhost/",
+ "index": 0
+ },
+ "region": {
+ "startLine": 1,
+ "snippet": {
+ "text": "\n"
+ }
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "html",
+ "kind": "element"
+ },
+ {
+ "fullyQualifiedName": "/html",
+ "kind": "element"
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "taxonomies": [
+ {
+ "name": "WCAG",
+ "fullName": "Web Content Accessibility Guidelines (WCAG) 2.1",
+ "organization": "W3C",
+ "informationUri": "https://www.w3.org/TR/WCAG21",
+ "version": "2.1",
+ "guid": "ca34e0e1-5faf-4f55-a989-cdae42a98f18",
+ "isComprehensive": true,
+ "taxa": [
+ {
+ "id": "best-practice",
+ "name": "Best Practice"
+ },
+ {
+ "id": "wcag111",
+ "name": "WCAG 1.1.1",
+ "shortDescription": {
+ "text": "Non-text Content"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/non-text-content"
+ },
+ {
+ "id": "wcag121",
+ "name": "WCAG 1.2.1",
+ "shortDescription": {
+ "text": "Audio-only and Video-only (Prerecorded)"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/audio-only-and-video-only-prerecorded"
+ },
+ {
+ "id": "wcag122",
+ "name": "WCAG 1.2.2",
+ "shortDescription": {
+ "text": "Captions (Prerecorded)"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/captions-prerecorded"
+ },
+ {
+ "id": "wcag123",
+ "name": "WCAG 1.2.3",
+ "shortDescription": {
+ "text": "Audio Description or Media Alternative (Prerecorded)"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/audio-description-or-media-alternative-prerecorded"
+ },
+ {
+ "id": "wcag124",
+ "name": "WCAG 1.2.4",
+ "shortDescription": {
+ "text": "Captions (Live)"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/captions-live"
+ },
+ {
+ "id": "wcag125",
+ "name": "WCAG 1.2.5",
+ "shortDescription": {
+ "text": "Audio Description (Prerecorded)"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/audio-description-prerecorded"
+ },
+ {
+ "id": "wcag126",
+ "name": "WCAG 1.2.6",
+ "shortDescription": {
+ "text": "Sign Language (Prerecorded)"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/sign-language-prerecorded"
+ },
+ {
+ "id": "wcag127",
+ "name": "WCAG 1.2.7",
+ "shortDescription": {
+ "text": "Extended Audio Description (Prerecorded)"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/extended-audio-description-prerecorded"
+ },
+ {
+ "id": "wcag128",
+ "name": "WCAG 1.2.8",
+ "shortDescription": {
+ "text": "Media Alternative (Prerecorded)"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/media-alternative-prerecorded"
+ },
+ {
+ "id": "wcag129",
+ "name": "WCAG 1.2.9",
+ "shortDescription": {
+ "text": "Audio-only (Live)"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/audio-only-live"
+ },
+ {
+ "id": "wcag131",
+ "name": "WCAG 1.3.1",
+ "shortDescription": {
+ "text": "Info and Relationships"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/info-and-relationships"
+ },
+ {
+ "id": "wcag132",
+ "name": "WCAG 1.3.2",
+ "shortDescription": {
+ "text": "Meaningful Sequence"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/meaningful-sequence"
+ },
+ {
+ "id": "wcag133",
+ "name": "WCAG 1.3.3",
+ "shortDescription": {
+ "text": "Sensory Characteristics"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/sensory-characteristics"
+ },
+ {
+ "id": "wcag134",
+ "name": "WCAG 1.3.4",
+ "shortDescription": {
+ "text": "Orientation"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/orientation"
+ },
+ {
+ "id": "wcag135",
+ "name": "WCAG 1.3.5",
+ "shortDescription": {
+ "text": "Identify Input Purpose"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/identify-input-purpose"
+ },
+ {
+ "id": "wcag136",
+ "name": "WCAG 1.3.6",
+ "shortDescription": {
+ "text": "Identify Purpose"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/identify-purpose"
+ },
+ {
+ "id": "wcag141",
+ "name": "WCAG 1.4.1",
+ "shortDescription": {
+ "text": "Use of Color"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/use-of-color"
+ },
+ {
+ "id": "wcag1410",
+ "name": "WCAG 1.4.10",
+ "shortDescription": {
+ "text": "Reflow"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/reflow"
+ },
+ {
+ "id": "wcag1411",
+ "name": "WCAG 1.4.11",
+ "shortDescription": {
+ "text": "Non-text Contrast"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/non-text-contrast"
+ },
+ {
+ "id": "wcag1412",
+ "name": "WCAG 1.4.12",
+ "shortDescription": {
+ "text": "Text Spacing"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/text-spacing"
+ },
+ {
+ "id": "wcag1413",
+ "name": "WCAG 1.4.13",
+ "shortDescription": {
+ "text": "Content on Hover or Focus"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/content-on-hover-or-focus"
+ },
+ {
+ "id": "wcag142",
+ "name": "WCAG 1.4.2",
+ "shortDescription": {
+ "text": "Audio Control"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/audio-control"
+ },
+ {
+ "id": "wcag143",
+ "name": "WCAG 1.4.3",
+ "shortDescription": {
+ "text": "Contrast (Minimum)"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum"
+ },
+ {
+ "id": "wcag144",
+ "name": "WCAG 1.4.4",
+ "shortDescription": {
+ "text": "Resize text"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/resize-text"
+ },
+ {
+ "id": "wcag145",
+ "name": "WCAG 1.4.5",
+ "shortDescription": {
+ "text": "Images of Text"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/images-of-text"
+ },
+ {
+ "id": "wcag146",
+ "name": "WCAG 1.4.6",
+ "shortDescription": {
+ "text": "Contrast (Enhanced)"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/contrast-enhanced"
+ },
+ {
+ "id": "wcag147",
+ "name": "WCAG 1.4.7",
+ "shortDescription": {
+ "text": "Low or No Background Audio"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/low-or-no-background-audio"
+ },
+ {
+ "id": "wcag148",
+ "name": "WCAG 1.4.8",
+ "shortDescription": {
+ "text": "Visual Presentation"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/visual-presentation"
+ },
+ {
+ "id": "wcag149",
+ "name": "WCAG 1.4.9",
+ "shortDescription": {
+ "text": "Images of Text (No Exception)"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/images-of-text-no-exception"
+ },
+ {
+ "id": "wcag211",
+ "name": "WCAG 2.1.1",
+ "shortDescription": {
+ "text": "Keyboard"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/keyboard"
+ },
+ {
+ "id": "wcag212",
+ "name": "WCAG 2.1.2",
+ "shortDescription": {
+ "text": "No Keyboard Trap"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/no-keyboard-trap"
+ },
+ {
+ "id": "wcag213",
+ "name": "WCAG 2.1.3",
+ "shortDescription": {
+ "text": "Keyboard (No Exception)"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/keyboard-no-exception"
+ },
+ {
+ "id": "wcag214",
+ "name": "WCAG 2.1.4",
+ "shortDescription": {
+ "text": "Character Key Shortcuts"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/character-key-shortcuts"
+ },
+ {
+ "id": "wcag221",
+ "name": "WCAG 2.2.1",
+ "shortDescription": {
+ "text": "Timing Adjustable"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/timing-adjustable"
+ },
+ {
+ "id": "wcag222",
+ "name": "WCAG 2.2.2",
+ "shortDescription": {
+ "text": "Pause, Stop, Hide"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/pause-stop-hide"
+ },
+ {
+ "id": "wcag223",
+ "name": "WCAG 2.2.3",
+ "shortDescription": {
+ "text": "No Timing"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/no-timing"
+ },
+ {
+ "id": "wcag224",
+ "name": "WCAG 2.2.4",
+ "shortDescription": {
+ "text": "Interruptions"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/interruptions"
+ },
+ {
+ "id": "wcag225",
+ "name": "WCAG 2.2.5",
+ "shortDescription": {
+ "text": "Re-authenticating"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/re-authenticating"
+ },
+ {
+ "id": "wcag226",
+ "name": "WCAG 2.2.6",
+ "shortDescription": {
+ "text": "Timeouts"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/timeouts"
+ },
+ {
+ "id": "wcag231",
+ "name": "WCAG 2.3.1",
+ "shortDescription": {
+ "text": "Three Flashes or Below Threshold"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/three-flashes-or-below-threshold"
+ },
+ {
+ "id": "wcag232",
+ "name": "WCAG 2.3.2",
+ "shortDescription": {
+ "text": "Three Flashes"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/three-flashes"
+ },
+ {
+ "id": "wcag233",
+ "name": "WCAG 2.3.3",
+ "shortDescription": {
+ "text": "Animation from Interactions"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/animation-from-interactions"
+ },
+ {
+ "id": "wcag241",
+ "name": "WCAG 2.4.1",
+ "shortDescription": {
+ "text": "Bypass Blocks"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/bypass-blocks"
+ },
+ {
+ "id": "wcag2410",
+ "name": "WCAG 2.4.10",
+ "shortDescription": {
+ "text": "Section Headings"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/section-headings"
+ },
+ {
+ "id": "wcag242",
+ "name": "WCAG 2.4.2",
+ "shortDescription": {
+ "text": "Page Titled"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/page-titled"
+ },
+ {
+ "id": "wcag243",
+ "name": "WCAG 2.4.3",
+ "shortDescription": {
+ "text": "Focus Order"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/focus-order"
+ },
+ {
+ "id": "wcag244",
+ "name": "WCAG 2.4.4",
+ "shortDescription": {
+ "text": "Link Purpose (In Context)"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/link-purpose-in-context"
+ },
+ {
+ "id": "wcag245",
+ "name": "WCAG 2.4.5",
+ "shortDescription": {
+ "text": "Multiple Ways"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/multiple-ways"
+ },
+ {
+ "id": "wcag246",
+ "name": "WCAG 2.4.6",
+ "shortDescription": {
+ "text": "Headings and Labels"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/headings-and-labels"
+ },
+ {
+ "id": "wcag247",
+ "name": "WCAG 2.4.7",
+ "shortDescription": {
+ "text": "Focus Visible"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/focus-visible"
+ },
+ {
+ "id": "wcag248",
+ "name": "WCAG 2.4.8",
+ "shortDescription": {
+ "text": "Location"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/location"
+ },
+ {
+ "id": "wcag249",
+ "name": "WCAG 2.4.9",
+ "shortDescription": {
+ "text": "Link Purpose (Link Only)"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/link-purpose-link-only"
+ },
+ {
+ "id": "wcag251",
+ "name": "WCAG 2.5.1",
+ "shortDescription": {
+ "text": "Pointer Gestures"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/pointer-gestures"
+ },
+ {
+ "id": "wcag252",
+ "name": "WCAG 2.5.2",
+ "shortDescription": {
+ "text": "Pointer Cancellation"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/pointer-cancellation"
+ },
+ {
+ "id": "wcag253",
+ "name": "WCAG 2.5.3",
+ "shortDescription": {
+ "text": "Label in Name"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/label-in-name"
+ },
+ {
+ "id": "wcag254",
+ "name": "WCAG 2.5.4",
+ "shortDescription": {
+ "text": "Motion Actuation"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/motion-actuation"
+ },
+ {
+ "id": "wcag255",
+ "name": "WCAG 2.5.5",
+ "shortDescription": {
+ "text": "Target Size"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/target-size"
+ },
+ {
+ "id": "wcag256",
+ "name": "WCAG 2.5.6",
+ "shortDescription": {
+ "text": "Concurrent Input Mechanisms"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/concurrent-input-mechanisms"
+ },
+ {
+ "id": "wcag311",
+ "name": "WCAG 3.1.1",
+ "shortDescription": {
+ "text": "Language of Page"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/language-of-page"
+ },
+ {
+ "id": "wcag312",
+ "name": "WCAG 3.1.2",
+ "shortDescription": {
+ "text": "Language of Parts"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/language-of-parts"
+ },
+ {
+ "id": "wcag313",
+ "name": "WCAG 3.1.3",
+ "shortDescription": {
+ "text": "Unusual Words"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/unusual-words"
+ },
+ {
+ "id": "wcag314",
+ "name": "WCAG 3.1.4",
+ "shortDescription": {
+ "text": "Abbreviations"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/abbreviations"
+ },
+ {
+ "id": "wcag315",
+ "name": "WCAG 3.1.5",
+ "shortDescription": {
+ "text": "Reading Level"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/reading-level"
+ },
+ {
+ "id": "wcag316",
+ "name": "WCAG 3.1.6",
+ "shortDescription": {
+ "text": "Pronunciation"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/pronunciation"
+ },
+ {
+ "id": "wcag321",
+ "name": "WCAG 3.2.1",
+ "shortDescription": {
+ "text": "On Focus"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/on-focus"
+ },
+ {
+ "id": "wcag322",
+ "name": "WCAG 3.2.2",
+ "shortDescription": {
+ "text": "On Input"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/on-input"
+ },
+ {
+ "id": "wcag323",
+ "name": "WCAG 3.2.3",
+ "shortDescription": {
+ "text": "Consistent Navigation"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/consistent-navigation"
+ },
+ {
+ "id": "wcag324",
+ "name": "WCAG 3.2.4",
+ "shortDescription": {
+ "text": "Consistent Identification"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/consistent-identification"
+ },
+ {
+ "id": "wcag325",
+ "name": "WCAG 3.2.5",
+ "shortDescription": {
+ "text": "Change on Request"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/change-on-request"
+ },
+ {
+ "id": "wcag331",
+ "name": "WCAG 3.3.1",
+ "shortDescription": {
+ "text": "Error Identification"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/error-identification"
+ },
+ {
+ "id": "wcag332",
+ "name": "WCAG 3.3.2",
+ "shortDescription": {
+ "text": "Labels or Instructions"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/labels-or-instructions"
+ },
+ {
+ "id": "wcag333",
+ "name": "WCAG 3.3.3",
+ "shortDescription": {
+ "text": "Error Suggestion"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/error-suggestion"
+ },
+ {
+ "id": "wcag334",
+ "name": "WCAG 3.3.4",
+ "shortDescription": {
+ "text": "Error Prevention (Legal, Financial, Data)"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/error-prevention-legal-financial-data"
+ },
+ {
+ "id": "wcag335",
+ "name": "WCAG 3.3.5",
+ "shortDescription": {
+ "text": "Help"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/help"
+ },
+ {
+ "id": "wcag336",
+ "name": "WCAG 3.3.6",
+ "shortDescription": {
+ "text": "Error Prevention (All)"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/error-prevention-all"
+ },
+ {
+ "id": "wcag411",
+ "name": "WCAG 4.1.1",
+ "shortDescription": {
+ "text": "Parsing"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/parsing"
+ },
+ {
+ "id": "wcag412",
+ "name": "WCAG 4.1.2",
+ "shortDescription": {
+ "text": "Name, Role, Value"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/name-role-value"
+ },
+ {
+ "id": "wcag413",
+ "name": "WCAG 4.1.3",
+ "shortDescription": {
+ "text": "Status Messages"
+ },
+ "helpUri": "https://www.w3.org/WAI/WCAG21/Understanding/status-messages"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/test-resources/w3citylights-axe-v4.9.1.axe-cli-v4.9.1.json b/src/test-resources/w3citylights-axe-v4.9.1.axe-cli-v4.9.1.json
new file mode 100644
index 00000000..6a06e25c
--- /dev/null
+++ b/src/test-resources/w3citylights-axe-v4.9.1.axe-cli-v4.9.1.json
@@ -0,0 +1,16687 @@
+[
+ {
+ "testEngine": {
+ "name": "axe-core",
+ "version": "4.9.1"
+ },
+ "testRunner": {
+ "name": "axe"
+ },
+ "testEnvironment": {
+ "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/119.0.6045.105 Safari/537.36",
+ "windowWidth": 800,
+ "windowHeight": 600,
+ "orientationAngle": 0,
+ "orientationType": "landscape-primary"
+ },
+ "timestamp": "2024-06-19T05:14:42.406Z",
+ "url": "https://www.w3.org/WAI/demos/bad/before/home.html",
+ "toolOptions": {
+ "reporter": "v1"
+ },
+ "inapplicable": [
+ {
+ "id": "accesskeys",
+ "impact": null,
+ "tags": [
+ "cat.keyboard",
+ "best-practice"
+ ],
+ "description": "Ensures every accesskey attribute value is unique",
+ "help": "accesskey attribute value should be unique",
+ "helpUrl": "https://dequeuniversity.com/rules/axe/4.9/accesskeys?application=webdriverjs",
+ "nodes": []
+ },
+ {
+ "id": "area-alt",
+ "impact": null,
+ "tags": [
+ "cat.text-alternatives",
+ "wcag2a",
+ "wcag244",
+ "wcag412",
+ "section508",
+ "section508.22.a",
+ "TTv5",
+ "TT6.a",
+ "EN-301-549",
+ "EN-9.2.4.4",
+ "EN-9.4.1.2",
+ "ACT"
+ ],
+ "description": "Ensures elements of image maps have alternate text",
+ "help": "Active elements must have alternate text",
+ "helpUrl": "https://dequeuniversity.com/rules/axe/4.9/area-alt?application=webdriverjs",
+ "nodes": []
+ },
+ {
+ "id": "aria-allowed-attr",
+ "impact": null,
+ "tags": [
+ "cat.aria",
+ "wcag2a",
+ "wcag412",
+ "EN-301-549",
+ "EN-9.4.1.2"
+ ],
+ "description": "Ensures an element's role supports its ARIA attributes",
+ "help": "Elements must only use supported ARIA attributes",
+ "helpUrl": "https://dequeuniversity.com/rules/axe/4.9/aria-allowed-attr?application=webdriverjs",
+ "nodes": []
+ },
+ {
+ "id": "aria-allowed-role",
+ "impact": null,
+ "tags": [
+ "cat.aria",
+ "best-practice"
+ ],
+ "description": "Ensures role attribute has an appropriate value for the element",
+ "help": "ARIA role should be appropriate for the element",
+ "helpUrl": "https://dequeuniversity.com/rules/axe/4.9/aria-allowed-role?application=webdriverjs",
+ "nodes": []
+ },
+ {
+ "id": "aria-braille-equivalent",
+ "impact": null,
+ "tags": [
+ "cat.aria",
+ "wcag2a",
+ "wcag412",
+ "EN-301-549",
+ "EN-9.4.1.2"
+ ],
+ "description": "Ensure aria-braillelabel and aria-brailleroledescription have a non-braille equivalent",
+ "help": "aria-braille attributes must have a non-braille equivalent",
+ "helpUrl": "https://dequeuniversity.com/rules/axe/4.9/aria-braille-equivalent?application=webdriverjs",
+ "nodes": []
+ },
+ {
+ "id": "aria-command-name",
+ "impact": null,
+ "tags": [
+ "cat.aria",
+ "wcag2a",
+ "wcag412",
+ "TTv5",
+ "TT6.a",
+ "EN-301-549",
+ "EN-9.4.1.2",
+ "ACT"
+ ],
+ "description": "Ensures every ARIA button, link and menuitem has an accessible name",
+ "help": "ARIA commands must have an accessible name",
+ "helpUrl": "https://dequeuniversity.com/rules/axe/4.9/aria-command-name?application=webdriverjs",
+ "nodes": []
+ },
+ {
+ "id": "aria-conditional-attr",
+ "impact": null,
+ "tags": [
+ "cat.aria",
+ "wcag2a",
+ "wcag412",
+ "EN-301-549",
+ "EN-9.4.1.2"
+ ],
+ "description": "Ensures ARIA attributes are used as described in the specification of the element's role",
+ "help": "ARIA attributes must be used as specified for the element's role",
+ "helpUrl": "https://dequeuniversity.com/rules/axe/4.9/aria-conditional-attr?application=webdriverjs",
+ "nodes": []
+ },
+ {
+ "id": "aria-deprecated-role",
+ "impact": null,
+ "tags": [
+ "cat.aria",
+ "wcag2a",
+ "wcag412",
+ "EN-301-549",
+ "EN-9.4.1.2"
+ ],
+ "description": "Ensures elements do not use deprecated roles",
+ "help": "Deprecated ARIA roles must not be used",
+ "helpUrl": "https://dequeuniversity.com/rules/axe/4.9/aria-deprecated-role?application=webdriverjs",
+ "nodes": []
+ },
+ {
+ "id": "aria-dialog-name",
+ "impact": null,
+ "tags": [
+ "cat.aria",
+ "best-practice"
+ ],
+ "description": "Ensures every ARIA dialog and alertdialog node has an accessible name",
+ "help": "ARIA dialog and alertdialog nodes should have an accessible name",
+ "helpUrl": "https://dequeuniversity.com/rules/axe/4.9/aria-dialog-name?application=webdriverjs",
+ "nodes": []
+ },
+ {
+ "id": "aria-hidden-focus",
+ "impact": null,
+ "tags": [
+ "cat.name-role-value",
+ "wcag2a",
+ "wcag412",
+ "TTv5",
+ "TT6.a",
+ "EN-301-549",
+ "EN-9.4.1.2"
+ ],
+ "description": "Ensures aria-hidden elements are not focusable nor contain focusable elements",
+ "help": "ARIA hidden element must not be focusable or contain focusable elements",
+ "helpUrl": "https://dequeuniversity.com/rules/axe/4.9/aria-hidden-focus?application=webdriverjs",
+ "nodes": []
+ },
+ {
+ "id": "aria-input-field-name",
+ "impact": null,
+ "tags": [
+ "cat.aria",
+ "wcag2a",
+ "wcag412",
+ "TTv5",
+ "TT5.c",
+ "EN-301-549",
+ "EN-9.4.1.2",
+ "ACT"
+ ],
+ "description": "Ensures every ARIA input field has an accessible name",
+ "help": "ARIA input fields must have an accessible name",
+ "helpUrl": "https://dequeuniversity.com/rules/axe/4.9/aria-input-field-name?application=webdriverjs",
+ "nodes": []
+ },
+ {
+ "id": "aria-meter-name",
+ "impact": null,
+ "tags": [
+ "cat.aria",
+ "wcag2a",
+ "wcag111",
+ "EN-301-549",
+ "EN-9.1.1.1"
+ ],
+ "description": "Ensures every ARIA meter node has an accessible name",
+ "help": "ARIA meter nodes must have an accessible name",
+ "helpUrl": "https://dequeuniversity.com/rules/axe/4.9/aria-meter-name?application=webdriverjs",
+ "nodes": []
+ },
+ {
+ "id": "aria-progressbar-name",
+ "impact": null,
+ "tags": [
+ "cat.aria",
+ "wcag2a",
+ "wcag111",
+ "EN-301-549",
+ "EN-9.1.1.1"
+ ],
+ "description": "Ensures every ARIA progressbar node has an accessible name",
+ "help": "ARIA progressbar nodes must have an accessible name",
+ "helpUrl": "https://dequeuniversity.com/rules/axe/4.9/aria-progressbar-name?application=webdriverjs",
+ "nodes": []
+ },
+ {
+ "id": "aria-prohibited-attr",
+ "impact": null,
+ "tags": [
+ "cat.aria",
+ "wcag2a",
+ "wcag412",
+ "EN-301-549",
+ "EN-9.4.1.2"
+ ],
+ "description": "Ensures ARIA attributes are not prohibited for an element's role",
+ "help": "Elements must only use permitted ARIA attributes",
+ "helpUrl": "https://dequeuniversity.com/rules/axe/4.9/aria-prohibited-attr?application=webdriverjs",
+ "nodes": []
+ },
+ {
+ "id": "aria-required-attr",
+ "impact": null,
+ "tags": [
+ "cat.aria",
+ "wcag2a",
+ "wcag412",
+ "EN-301-549",
+ "EN-9.4.1.2"
+ ],
+ "description": "Ensures elements with ARIA roles have all required ARIA attributes",
+ "help": "Required ARIA attributes must be provided",
+ "helpUrl": "https://dequeuniversity.com/rules/axe/4.9/aria-required-attr?application=webdriverjs",
+ "nodes": []
+ },
+ {
+ "id": "aria-required-children",
+ "impact": null,
+ "tags": [
+ "cat.aria",
+ "wcag2a",
+ "wcag131",
+ "EN-301-549",
+ "EN-9.1.3.1"
+ ],
+ "description": "Ensures elements with an ARIA role that require child roles contain them",
+ "help": "Certain ARIA roles must contain particular children",
+ "helpUrl": "https://dequeuniversity.com/rules/axe/4.9/aria-required-children?application=webdriverjs",
+ "nodes": []
+ },
+ {
+ "id": "aria-required-parent",
+ "impact": null,
+ "tags": [
+ "cat.aria",
+ "wcag2a",
+ "wcag131",
+ "EN-301-549",
+ "EN-9.1.3.1"
+ ],
+ "description": "Ensures elements with an ARIA role that require parent roles are contained by them",
+ "help": "Certain ARIA roles must be contained by particular parents",
+ "helpUrl": "https://dequeuniversity.com/rules/axe/4.9/aria-required-parent?application=webdriverjs",
+ "nodes": []
+ },
+ {
+ "id": "aria-roles",
+ "impact": null,
+ "tags": [
+ "cat.aria",
+ "wcag2a",
+ "wcag412",
+ "EN-301-549",
+ "EN-9.4.1.2"
+ ],
+ "description": "Ensures all elements with a role attribute use a valid value",
+ "help": "ARIA roles used must conform to valid values",
+ "helpUrl": "https://dequeuniversity.com/rules/axe/4.9/aria-roles?application=webdriverjs",
+ "nodes": []
+ },
+ {
+ "id": "aria-text",
+ "impact": null,
+ "tags": [
+ "cat.aria",
+ "best-practice"
+ ],
+ "description": "Ensures role=\"text\" is used on elements with no focusable descendants",
+ "help": "\"role=text\" should have no focusable descendants",
+ "helpUrl": "https://dequeuniversity.com/rules/axe/4.9/aria-text?application=webdriverjs",
+ "nodes": []
+ },
+ {
+ "id": "aria-toggle-field-name",
+ "impact": null,
+ "tags": [
+ "cat.aria",
+ "wcag2a",
+ "wcag412",
+ "TTv5",
+ "TT5.c",
+ "EN-301-549",
+ "EN-9.4.1.2",
+ "ACT"
+ ],
+ "description": "Ensures every ARIA toggle field has an accessible name",
+ "help": "ARIA toggle fields must have an accessible name",
+ "helpUrl": "https://dequeuniversity.com/rules/axe/4.9/aria-toggle-field-name?application=webdriverjs",
+ "nodes": []
+ },
+ {
+ "id": "aria-tooltip-name",
+ "impact": null,
+ "tags": [
+ "cat.aria",
+ "wcag2a",
+ "wcag412",
+ "EN-301-549",
+ "EN-9.4.1.2"
+ ],
+ "description": "Ensures every ARIA tooltip node has an accessible name",
+ "help": "ARIA tooltip nodes must have an accessible name",
+ "helpUrl": "https://dequeuniversity.com/rules/axe/4.9/aria-tooltip-name?application=webdriverjs",
+ "nodes": []
+ },
+ {
+ "id": "aria-treeitem-name",
+ "impact": null,
+ "tags": [
+ "cat.aria",
+ "best-practice"
+ ],
+ "description": "Ensures every ARIA treeitem node has an accessible name",
+ "help": "ARIA treeitem nodes should have an accessible name",
+ "helpUrl": "https://dequeuniversity.com/rules/axe/4.9/aria-treeitem-name?application=webdriverjs",
+ "nodes": []
+ },
+ {
+ "id": "aria-valid-attr-value",
+ "impact": null,
+ "tags": [
+ "cat.aria",
+ "wcag2a",
+ "wcag412",
+ "EN-301-549",
+ "EN-9.4.1.2"
+ ],
+ "description": "Ensures all ARIA attributes have valid values",
+ "help": "ARIA attributes must conform to valid values",
+ "helpUrl": "https://dequeuniversity.com/rules/axe/4.9/aria-valid-attr-value?application=webdriverjs",
+ "nodes": []
+ },
+ {
+ "id": "aria-valid-attr",
+ "impact": null,
+ "tags": [
+ "cat.aria",
+ "wcag2a",
+ "wcag412",
+ "EN-301-549",
+ "EN-9.4.1.2"
+ ],
+ "description": "Ensures attributes that begin with aria- are valid ARIA attributes",
+ "help": "ARIA attributes must conform to valid names",
+ "helpUrl": "https://dequeuniversity.com/rules/axe/4.9/aria-valid-attr?application=webdriverjs",
+ "nodes": []
+ },
+ {
+ "id": "autocomplete-valid",
+ "impact": null,
+ "tags": [
+ "cat.forms",
+ "wcag21aa",
+ "wcag135",
+ "EN-301-549",
+ "EN-9.1.3.5",
+ "ACT"
+ ],
+ "description": "Ensure the autocomplete attribute is correct and suitable for the form field",
+ "help": "autocomplete attribute must be used correctly",
+ "helpUrl": "https://dequeuniversity.com/rules/axe/4.9/autocomplete-valid?application=webdriverjs",
+ "nodes": []
+ },
+ {
+ "id": "blink",
+ "impact": null,
+ "tags": [
+ "cat.time-and-media",
+ "wcag2a",
+ "wcag222",
+ "section508",
+ "section508.22.j",
+ "TTv5",
+ "TT2.b",
+ "EN-301-549",
+ "EN-9.2.2.2"
+ ],
+ "description": "Ensures