From 6fbb51830280d05e8ea0d74266b8e6526851edd8 Mon Sep 17 00:00:00 2001 From: Shunguo Date: Sun, 24 Nov 2024 21:57:40 -0600 Subject: [PATCH 01/18] update the rule and test cases #2090 --- .../v4/rules/aria_accessiblename_exists.ts | 23 ++++++---- .../src/v4/rules/img_alt_null.ts | 13 +++++- .../act-fail-2.html | 42 +++++++++++++++++++ .../aria_imge.html | 17 +------- 4 files changed, 70 insertions(+), 25 deletions(-) create mode 100755 accessibility-checker-engine/test/v2/checker/accessibility/rules/aria_accessiblename_exists_ruleunit/act-fail-2.html diff --git a/accessibility-checker-engine/src/v4/rules/aria_accessiblename_exists.ts b/accessibility-checker-engine/src/v4/rules/aria_accessiblename_exists.ts index 3bf34c013..86d5fd89e 100644 --- a/accessibility-checker-engine/src/v4/rules/aria_accessiblename_exists.ts +++ b/accessibility-checker-engine/src/v4/rules/aria_accessiblename_exists.ts @@ -14,9 +14,7 @@ import { Rule, RuleResult, RuleFail, RuleContext, RulePass, RuleContextHierarchy } from "../api/IRule"; import { eRulePolicy, eToolkitLevel } from "../api/IRule"; import { AriaUtil } from "../util/AriaUtil"; -import { CommonUtil } from "../util/CommonUtil"; import { VisUtil } from "../util/VisUtil"; -import { ARIADefinitions } from "../../v2/aria/ARIADefinitions"; import { AccNameUtil } from "../util/AccNameUtil"; export const aria_accessiblename_exists: Rule = { @@ -33,6 +31,7 @@ export const aria_accessiblename_exists: Rule = { "en-US": { "pass": "An accessible name is provided for the element", "fail_no_accessible_name": "Element <{0}> with \"{1}\" role has no accessible name", + "fail_no_accessible_name_image": "Element <{0}> with \"{1}\" role has no accessible name", "group": "Elements with certain roles should have accessible names" } }, @@ -40,7 +39,15 @@ export const aria_accessiblename_exists: Rule = { "id": ["IBM_Accessibility", "IBM_Accessibility_next", "WCAG_2_1", "WCAG_2_0", "WCAG_2_2"], "num": ["4.1.2"], "level": eRulePolicy.RECOMMENDATION, - "toolkitLevel": eToolkitLevel.LEVEL_ONE + "toolkitLevel": eToolkitLevel.LEVEL_ONE, + reasonCodes: ["fail_no_accessible_name"] + }, + { + "id": ["IBM_Accessibility", "IBM_Accessibility_next", "WCAG_2_1", "WCAG_2_0", "WCAG_2_2"], + "num": ["ARIA"], + "level": eRulePolicy.RECOMMENDATION, + "toolkitLevel": eToolkitLevel.LEVEL_ONE, + reasonCodes: ["fail_no_accessible_name_image"] }], act: [], run: (context: RuleContext, options?: {}, contextHierarchies?: RuleContextHierarchy): RuleResult | RuleResult[] => { @@ -50,8 +57,8 @@ export const aria_accessiblename_exists: Rule = { if (VisUtil.isNodeHiddenFromAT(ruleContext)) return null; let nodeName = ruleContext.nodeName.toLocaleLowerCase(); - // svg element is handled in svg_graphics)labbelled rule - if (nodeName === 'svg') return; + // svg element is handled in svg_graphics_labbelled rule and image rules + if (nodeName === 'svg' || nodeName === 'img') return; // when table element with a caption as first child if (nodeName === 'table' @@ -69,9 +76,11 @@ export const aria_accessiblename_exists: Rule = { let role = AriaUtil.getResolvedRole(ruleContext); const name_pair = AccNameUtil.computeAccessibleName(ruleContext); - if (!name_pair || !name_pair.name || name_pair.name.trim().length === 0) + if (!name_pair || !name_pair.name || name_pair.name.trim().length === 0) { + if (role === 'img' || role === 'image') + return RuleFail("fail_no_accessible_name_image", [ruleContext.nodeName.toLowerCase(), role]); return RuleFail("fail_no_accessible_name", [ruleContext.nodeName.toLowerCase(), role]); - + } return RulePass("pass"); } } diff --git a/accessibility-checker-engine/src/v4/rules/img_alt_null.ts b/accessibility-checker-engine/src/v4/rules/img_alt_null.ts index 4b108d034..8c607ad84 100644 --- a/accessibility-checker-engine/src/v4/rules/img_alt_null.ts +++ b/accessibility-checker-engine/src/v4/rules/img_alt_null.ts @@ -45,8 +45,17 @@ export const img_alt_null: Rule = { "id": ["IBM_Accessibility", "IBM_Accessibility_next", "WCAG_2_1", "WCAG_2_0", "WCAG_2_2"], "num": ["1.1.1"], "level": eRulePolicy.VIOLATION, - "toolkitLevel": eToolkitLevel.LEVEL_ONE - }], + "toolkitLevel": eToolkitLevel.LEVEL_ONE, + reasonCodes: ["fail_decorative"] + }, + { + "id": ["IBM_Accessibility", "IBM_Accessibility_next", "WCAG_2_1", "WCAG_2_0", "WCAG_2_2"], + "num": ["ARIA"], + "level": eRulePolicy.VIOLATION, + "toolkitLevel": eToolkitLevel.LEVEL_ONE, + reasonCodes: ["potential_aria_override"] + } + ], act: [{"46ca7f": {"potential_aria_override": "fail"}}], run: (context: RuleContext, options?: {}, contextHierarchies?: RuleContextHierarchy): RuleResult | RuleResult[] => { const ruleContext = context["dom"].node as Element; diff --git a/accessibility-checker-engine/test/v2/checker/accessibility/rules/aria_accessiblename_exists_ruleunit/act-fail-2.html b/accessibility-checker-engine/test/v2/checker/accessibility/rules/aria_accessiblename_exists_ruleunit/act-fail-2.html new file mode 100755 index 000000000..1d5905ece --- /dev/null +++ b/accessibility-checker-engine/test/v2/checker/accessibility/rules/aria_accessiblename_exists_ruleunit/act-fail-2.html @@ -0,0 +1,42 @@ + + + + + + + ACT Test case + + + + +
+ + + + + diff --git a/accessibility-checker-engine/test/v2/checker/accessibility/rules/aria_accessiblename_exists_ruleunit/aria_imge.html b/accessibility-checker-engine/test/v2/checker/accessibility/rules/aria_accessiblename_exists_ruleunit/aria_imge.html index 7a06f4120..b5a5f36c3 100755 --- a/accessibility-checker-engine/test/v2/checker/accessibility/rules/aria_accessiblename_exists_ruleunit/aria_imge.html +++ b/accessibility-checker-engine/test/v2/checker/accessibility/rules/aria_accessiblename_exists_ruleunit/aria_imge.html @@ -33,22 +33,7 @@ UnitTest = { ruleIds: ["aria_accessiblename_exists"], results: [ - { - "ruleId": "aria_accessiblename_exists", - "value": [ - "INFORMATION", - "PASS" - ], - "path": { - "dom": "/html[1]/body[1]/img[1]", - "aria": "/document[1]/img[1]" - }, - "reasonId": "pass", - "message": "An accessible name is provided for the element", - "messageArgs": [], - "apiArgs": [], - "category": "Accessibility" - } + ] } From 3cb6bec762cc9a13f56c37b3170cd596d9876997 Mon Sep 17 00:00:00 2001 From: Shunguo Date: Mon, 25 Nov 2024 08:48:28 -0600 Subject: [PATCH 02/18] add the help reference #2090 --- .../src/v4/rules/aria_accessiblename_exists.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/accessibility-checker-engine/src/v4/rules/aria_accessiblename_exists.ts b/accessibility-checker-engine/src/v4/rules/aria_accessiblename_exists.ts index 86d5fd89e..2cafabad2 100644 --- a/accessibility-checker-engine/src/v4/rules/aria_accessiblename_exists.ts +++ b/accessibility-checker-engine/src/v4/rules/aria_accessiblename_exists.ts @@ -24,6 +24,7 @@ export const aria_accessiblename_exists: Rule = { "en-US": { "pass": "aria_accessiblename_exists.html", "fail_no_accessible_name": "aria_accessiblename_exists.html", + "fail_no_accessible_name_iamge": "aria_accessiblename_exists.html", "group": "aria_accessiblename_exists.html" } }, From 46dd3e0d5010476fb8a1777f200e976857ee897a Mon Sep 17 00:00:00 2001 From: Shunguo Date: Mon, 25 Nov 2024 09:49:14 -0600 Subject: [PATCH 03/18] Update aria_accessiblename_exists.ts --- .../src/v4/rules/aria_accessiblename_exists.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/accessibility-checker-engine/src/v4/rules/aria_accessiblename_exists.ts b/accessibility-checker-engine/src/v4/rules/aria_accessiblename_exists.ts index 2cafabad2..5efea7429 100644 --- a/accessibility-checker-engine/src/v4/rules/aria_accessiblename_exists.ts +++ b/accessibility-checker-engine/src/v4/rules/aria_accessiblename_exists.ts @@ -24,7 +24,7 @@ export const aria_accessiblename_exists: Rule = { "en-US": { "pass": "aria_accessiblename_exists.html", "fail_no_accessible_name": "aria_accessiblename_exists.html", - "fail_no_accessible_name_iamge": "aria_accessiblename_exists.html", + "fail_no_accessible_name_image": "aria_accessiblename_exists.html", "group": "aria_accessiblename_exists.html" } }, From a38ad00b056493a639057247399a793d2f33ec56 Mon Sep 17 00:00:00 2001 From: Shunguo Date: Mon, 25 Nov 2024 10:32:16 -0600 Subject: [PATCH 04/18] fix baselines #2090 --- .../Baseline_aChecker.Baseline.html.json | 102 +- .../Baseline_aChecker.Baseline2.html.json | 1055 ++++------------- .../aChecker.Baseline.test.js | 2 +- 3 files changed, 239 insertions(+), 920 deletions(-) diff --git a/accessibility-checker/test/baselines/Baseline_aChecker.Baseline.html.json b/accessibility-checker/test/baselines/Baseline_aChecker.Baseline.html.json index 67d335c32..4acc5acad 100644 --- a/accessibility-checker/test/baselines/Baseline_aChecker.Baseline.html.json +++ b/accessibility-checker/test/baselines/Baseline_aChecker.Baseline.html.json @@ -23,8 +23,8 @@ }, "snippet": "", "category": "Accessibility", - "ignored": true, "level": "violation", + "ignored": true, "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/html_lang_exists.html#%7B%22message%22%3A%22Page%20detected%20as%20HTML%2C%20but%20does%20not%20have%20a%20'lang'%20attribute%22%2C%22snippet%22%3A%22%3Chtml%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22FAIL%22%5D%2C%22reasonId%22%3A%22Fail_3%22%2C%22ruleId%22%3A%22html_lang_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -37,7 +37,7 @@ "dom": "/html[1]", "aria": "/document[1]" }, - "ruleTime": 0, + "ruleTime": 1, "reasonId": "Potential_1", "message": "Verify there is a way to bypass blocks of content that are repeated on multiple Web pages", "messageArgs": [], @@ -50,8 +50,8 @@ }, "snippet": "", "category": "Accessibility", - "ignored": true, "level": "potentialviolation", + "ignored": true, "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/html_skipnav_exists.html#%7B%22message%22%3A%22Verify%20there%20is%20a%20way%20to%20bypass%20blocks%20of%20content%20that%20are%20repeated%20on%20multiple%20Web%20pages%22%2C%22snippet%22%3A%22%3Chtml%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22POTENTIAL%22%5D%2C%22reasonId%22%3A%22Potential_1%22%2C%22ruleId%22%3A%22html_skipnav_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -77,8 +77,8 @@ }, "snippet": "", "category": "Accessibility", - "ignored": true, "level": "violation", + "ignored": true, "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/page_title_exists.html#%7B%22message%22%3A%22Missing%20%3Ctitle%3E%20element%20in%20%3Chead%3E%20element%22%2C%22snippet%22%3A%22%3Chtml%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22FAIL%22%5D%2C%22reasonId%22%3A%22Fail_2%22%2C%22ruleId%22%3A%22page_title_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -91,7 +91,7 @@ "dom": "/html[1]", "aria": "/document[1]" }, - "ruleTime": 0, + "ruleTime": 2, "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], @@ -104,8 +104,8 @@ }, "snippet": "", "category": "Accessibility", - "ignored": false, "level": "pass", + "ignored": false, "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Chtml%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -131,8 +131,8 @@ }, "snippet": "", "category": "Accessibility", - "ignored": false, "level": "pass", + "ignored": false, "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_background.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Chtml%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_background%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -158,8 +158,8 @@ }, "snippet": "", "category": "Accessibility", - "ignored": false, "level": "pass", + "ignored": false, "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Chead%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -185,8 +185,8 @@ }, "snippet": "", "category": "Accessibility", - "ignored": true, "level": "violation", + "ignored": true, "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/skip_main_exists.html#%7B%22message%22%3A%22The%20page%20does%20not%20provide%20a%20way%20to%20quickly%20navigate%20to%20the%20main%20content%20(ARIA%20%5C%22main%5C%22%20landmark%20or%20a%20skip%20link)%22%2C%22snippet%22%3A%22%3Cbody%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22FAIL%22%5D%2C%22reasonId%22%3A%22Fail_1%22%2C%22ruleId%22%3A%22skip_main_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -212,8 +212,8 @@ }, "snippet": "", "category": "Accessibility", - "ignored": false, "level": "pass", + "ignored": false, "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cbody%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -239,8 +239,8 @@ }, "snippet": "", "category": "Accessibility", - "ignored": false, "level": "pass", + "ignored": false, "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_background.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cbody%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_background%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -253,7 +253,7 @@ "dom": "/html[1]/body[1]", "aria": "/document[1]" }, - "ruleTime": 1, + "ruleTime": 0, "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], @@ -266,8 +266,8 @@ }, "snippet": "", "category": "Accessibility", - "ignored": false, "level": "pass", + "ignored": false, "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_quoted_correctly.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cbody%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22text_quoted_correctly%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -293,8 +293,8 @@ }, "snippet": "", "category": "Accessibility", - "ignored": false, "level": "pass", + "ignored": false, "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_whitespace_valid.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cbody%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22text_whitespace_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -320,8 +320,8 @@ }, "snippet": "", "category": "Accessibility", - "ignored": false, "level": "pass", + "ignored": false, "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_misuse.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20id%3D%5C%22ace%5C%22%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_misuse%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -347,8 +347,8 @@ }, "snippet": "", "category": "Accessibility", - "ignored": true, "level": "violation", + "ignored": true, "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_valid.html#%7B%22message%22%3A%22The%20image%20has%20neither%20an%20accessible%20name%20nor%20is%20marked%20as%20decorative%20or%20redundant%22%2C%22snippet%22%3A%22%3Cimg%20id%3D%5C%22ace%5C%22%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22FAIL%22%5D%2C%22reasonId%22%3A%22fail_no_alt%22%2C%22ruleId%22%3A%22img_alt_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -374,8 +374,8 @@ }, "snippet": "", "category": "Accessibility", - "ignored": false, "level": "pass", + "ignored": false, "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20id%3D%5C%22ace%5C%22%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -401,8 +401,8 @@ }, "snippet": "", "category": "Accessibility", - "ignored": false, "level": "pass", + "ignored": false, "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/element_id_unique.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20id%3D%5C%22ace%5C%22%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22element_id_unique%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -428,8 +428,8 @@ }, "snippet": "", "category": "Accessibility", - "ignored": false, "level": "pass", + "ignored": false, "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_background.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20id%3D%5C%22ace%5C%22%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_background%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -455,8 +455,8 @@ }, "snippet": "", "category": "Accessibility", - "ignored": false, "level": "pass", + "ignored": false, "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_quoted_correctly.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20id%3D%5C%22ace%5C%22%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22text_quoted_correctly%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -482,39 +482,9 @@ }, "snippet": "", "category": "Accessibility", - "ignored": false, "level": "pass", - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_whitespace_valid.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20id%3D%5C%22ace%5C%22%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22text_whitespace_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" - }, - { - "ruleId": "aria_accessiblename_exists", - "value": [ - "RECOMMENDATION", - "FAIL" - ], - "path": { - "dom": "/html[1]/body[1]/img[1]", - "aria": "/document[1]/img[1]" - }, - "ruleTime": 0, - "reasonId": "fail_no_accessible_name", - "message": "Element with \"img\" role has no accessible name", - "messageArgs": [ - "img", - "img" - ], - "apiArgs": [], - "bounds": { - "left": 8, - "top": 8, - "height": 0, - "width": 0 - }, - "snippet": "", - "category": "Accessibility", "ignored": false, - "level": "recommendation", - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_accessiblename_exists.html#%7B%22message%22%3A%22Element%20%3Cimg%3E%20with%20%5C%22img%5C%22%20role%20has%20no%20accessible%20name%22%2C%22snippet%22%3A%22%3Cimg%20id%3D%5C%22ace%5C%22%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22FAIL%22%5D%2C%22reasonId%22%3A%22fail_no_accessible_name%22%2C%22ruleId%22%3A%22aria_accessiblename_exists%22%2C%22msgArgs%22%3A%5B%22img%22%2C%22img%22%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_whitespace_valid.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20id%3D%5C%22ace%5C%22%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22text_whitespace_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { "ruleId": "aria_descendant_valid", @@ -526,7 +496,7 @@ "dom": "/html[1]/body[1]/img[1]", "aria": "/document[1]/img[1]" }, - "ruleTime": 0, + "ruleTime": 1, "reasonId": "pass", "message": "The element contains valid descendants", "messageArgs": [], @@ -539,13 +509,13 @@ }, "snippet": "", "category": "Accessibility", - "ignored": false, "level": "pass", + "ignored": false, "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_descendant_valid.html#%7B%22message%22%3A%22The%20element%20contains%20valid%20descendants%22%2C%22snippet%22%3A%22%3Cimg%20id%3D%5C%22ace%5C%22%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22aria_descendant_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" } ], - "numExecuted": 20, - "ruleTime": 2, + "numExecuted": 19, + "ruleTime": 5, "nls": { "html_lang_exists": { "0": "Page must identify the default language of the document with a 'lang' attribute", @@ -591,10 +561,6 @@ "0": "Element 'id' attribute values must be unique within a document", "Pass_0": "Rule Passed" }, - "aria_accessiblename_exists": { - "0": "Elements with certain roles should have accessible names", - "fail_no_accessible_name": "Element <{0}> with \"{1}\" role has no accessible name" - }, "aria_descendant_valid": { "0": "Browsers ignore the explicit and implicit ARIA roles of the descendants of certain elements", "pass": "The element contains valid descendants" @@ -602,18 +568,18 @@ }, "summary": { "counts": { + "ignored": 5, + "elements": 4, + "elementsViolation": 0, + "elementsViolationReview": 0, "violation": 0, "potentialviolation": 0, - "recommendation": 1, + "recommendation": 0, "potentialrecommendation": 0, "manual": 0, - "pass": 14, - "ignored": 5, - "elements": 4, - "elementsViolation": 0, - "elementsViolationReview": 0 + "pass": 14 }, - "scanTime": 28, + "scanTime": 39, "ruleArchive": "Preview Rules (preview)", "policies": [ "IBM_Accessibility", @@ -627,10 +593,10 @@ "manual", "pass" ], - "startScan": 1729695667976, + "startScan": 1732551661984, "URL": "data:text/html;charset=utf-8,%3C!--%0A%20%20%20%20%20%2F******************************************************************************%0A%20%20%20%20%20Copyright%3A%3A%202020-%20IBM%2C%20Inc%0A%0A%20%20%20%20Licensed%20under%20the%20Apache%20License%2C%20Version%202.0%20(the%20%22License%22)%3B%0A%20%20%20%20you%20may%20not%20use%20this%20file%20except%20in%20compliance%20with%20the%20License.%0A%20%20%20%20You%20may%20obtain%20a%20copy%20of%20the%20License%20at%0A%0A%20%20%20%20http%3A%2F%2Fwww.apache.org%2Flicenses%2FLICENSE-2.0%0A%0A%20%20%20%20Unless%20required%20by%20applicable%20law%20or%20agreed%20to%20in%20writing%2C%20software%0A%20%20%20%20distributed%20under%20the%20License%20is%20distributed%20on%20an%20%22AS%20IS%22%20BASIS%2C%0A%20%20%20%20WITHOUT%20WARRANTIES%20OR%20CONDITIONS%20OF%20ANY%20KIND%2C%20either%20express%20or%20implied.%0A%20%20%20%20See%20the%20License%20for%20the%20specific%20language%20governing%20permissions%20and%0A%20%20%20%20limitations%20under%20the%20License.%0A%20%20*****************************************************************************%2F%0A%0A--%3E%20%20%20%20%0A%20%20%20%20%3Chtml%3E%0A%20%20%20%20%3Cbody%3E%0A%20%20%20%20%20%20%20%20%3Cimg%20src%3D%22fail.png%22%20id%3D%22ace%22%3E%0A%20%20%20%20%3C%2Fbody%3E%0A%3C%2Fhtml%3E" }, - "scanID": "773dc15c-5eb9-43e3-886c-4a0c472ab819", + "scanID": "a01c61b9-e72b-42c8-a0fd-f3f91a9e7c59", "toolID": "accessibility-checker-v3.0.0", "label": "Baseline_aChecker.Baseline.html" } \ No newline at end of file diff --git a/accessibility-checker/test/baselines/Baseline_aChecker.Baseline2.html.json b/accessibility-checker/test/baselines/Baseline_aChecker.Baseline2.html.json index 8043478bb..f7d79e03d 100644 --- a/accessibility-checker/test/baselines/Baseline_aChecker.Baseline2.html.json +++ b/accessibility-checker/test/baselines/Baseline_aChecker.Baseline2.html.json @@ -1,7 +1,7 @@ { "results": [ { - "ruleId": "WCAG20_Doc_HasTitle", + "ruleId": "html_lang_exists", "value": [ "VIOLATION", "FAIL" @@ -11,653 +11,111 @@ "aria": "/document[1]" }, "ruleTime": 0, - "reasonId": "Fail_2", - "message": "Missing element in <head> element", - "messageArgs": [], - "apiArgs": [], - "bounds": { - "left": 0, - "top": 0, - "height": 600, - "width": 800 - }, - "snippet": "<html>", - "category": "Accessibility", - "ignored": false, - "level": "violation" - }, - { - "ruleId": "WCAG20_Body_FirstASkips_Native_Host_Sematics", - "value": [ - "VIOLATION", - "FAIL" - ], - "path": { - "dom": "/html[1]/body[1]", - "aria": "/document[1]" - }, - "ruleTime": 0, - "reasonId": "Fail_1", - "message": "The page does not provide a way to quickly navigate to the main content (ARIA \"main\" landmark or a skip link)", - "messageArgs": [], - "apiArgs": [], - "bounds": { - "left": 8, - "top": 8, - "height": 584, - "width": 784 - }, - "snippet": "<body>", - "category": "Accessibility", - "ignored": false, - "level": "violation" - }, - { - "ruleId": "WCAG20_Img_HasAlt", - "value": [ - "VIOLATION", - "FAIL" - ], - "path": { - "dom": "/html[1]/body[1]/img[1]", - "aria": "/document[1]/img[1]" - }, - "ruleTime": 0, - "reasonId": "Fail_2", - "message": "Image does not have an 'alt' attribute short text alternative", - "messageArgs": [], - "apiArgs": [], - "bounds": { - "left": 8, - "top": 22, - "height": 0, - "width": 0 - }, - "snippet": "<img src=\"fail.png\">", - "category": "Accessibility", - "ignored": false, - "level": "violation" - }, - { - "ruleId": "WCAG20_Img_HasAlt", - "value": [ - "VIOLATION", - "FAIL" - ], - "path": { - "dom": "/html[1]/body[1]/img[2]", - "aria": "/document[1]/img[2]" - }, - "ruleTime": 0, - "reasonId": "Fail_2", - "message": "Image does not have an 'alt' attribute short text alternative", - "messageArgs": [], - "apiArgs": [], - "bounds": { - "left": 12, - "top": 22, - "height": 0, - "width": 0 - }, - "snippet": "<img src=\"fail.png\">", - "category": "Accessibility", - "ignored": false, - "level": "violation" - }, - { - "ruleId": "RPT_Html_SkipNav", - "value": [ - "VIOLATION", - "POTENTIAL" - ], - "path": { - "dom": "/html[1]", - "aria": "/document[1]" - }, - "ruleTime": 0, - "reasonId": "Potential_1", - "message": "Verify there is a way to bypass blocks of content that are repeated on multiple Web pages", - "messageArgs": [], - "apiArgs": [], - "bounds": { - "left": 0, - "top": 0, - "height": 600, - "width": 800 - }, - "snippet": "<html>", - "category": "Accessibility", - "ignored": false, - "level": "potentialviolation" - }, - { - "ruleId": "HAAC_BackgroundImg_HasTextOrTitle", - "value": [ - "RECOMMENDATION", - "PASS" - ], - "path": { - "dom": "/html[1]", - "aria": "/document[1]" - }, - "ruleTime": 0, - "reasonId": "Pass_0", - "message": "Rule Passed", - "messageArgs": [], - "apiArgs": [], - "bounds": { - "left": 0, - "top": 0, - "height": 600, - "width": 800 - }, - "snippet": "<html>", - "category": "Accessibility", - "ignored": false, - "level": "pass" - }, - { - "ruleId": "Rpt_Aria_OrphanedContent_Native_Host_Sematics", - "value": [ - "VIOLATION", - "PASS" - ], - "path": { - "dom": "/html[1]", - "aria": "/document[1]" - }, - "ruleTime": 0, - "reasonId": "Pass_0", - "message": "Rule Passed", - "messageArgs": [], - "apiArgs": [], - "bounds": { - "left": 0, - "top": 0, - "height": 600, - "width": 800 - }, - "snippet": "<html>", - "category": "Accessibility", - "ignored": false, - "level": "pass" - }, - { - "ruleId": "RPT_List_UseMarkup", - "value": [ - "VIOLATION", - "PASS" - ], - "path": { - "dom": "/html[1]", - "aria": "/document[1]" - }, - "ruleTime": 0, - "reasonId": "Pass_0", - "message": "Rule Passed", - "messageArgs": [], - "apiArgs": [], - "bounds": { - "left": 0, - "top": 0, - "height": 600, - "width": 800 - }, - "snippet": "<html>", - "category": "Accessibility", - "ignored": false, - "level": "pass" - }, - { - "ruleId": "RPT_Text_SensoryReference", - "value": [ - "VIOLATION", - "PASS" - ], - "path": { - "dom": "/html[1]", - "aria": "/document[1]" - }, - "ruleTime": 0, - "reasonId": "Pass_0", - "message": "Rule Passed", - "messageArgs": [], - "apiArgs": [], - "bounds": { - "left": 0, - "top": 0, - "height": 600, - "width": 800 - }, - "snippet": "<html>", - "category": "Accessibility", - "ignored": false, - "level": "pass" - }, - { - "ruleId": "WCAG20_Text_Emoticons", - "value": [ - "VIOLATION", - "PASS" - ], - "path": { - "dom": "/html[1]", - "aria": "/document[1]" - }, - "ruleTime": 0, - "reasonId": "Pass_0", - "message": "Rule Passed", - "messageArgs": [], - "apiArgs": [], - "bounds": { - "left": 0, - "top": 0, - "height": 600, - "width": 800 - }, - "snippet": "<html>", - "category": "Accessibility", - "ignored": false, - "level": "pass" - }, - { - "ruleId": "WCAG20_Text_LetterSpacing", - "value": [ - "VIOLATION", - "PASS" - ], - "path": { - "dom": "/html[1]", - "aria": "/document[1]" - }, - "ruleTime": 0, - "reasonId": "Pass_0", - "message": "Rule Passed", - "messageArgs": [], - "apiArgs": [], - "bounds": { - "left": 0, - "top": 0, - "height": 600, - "width": 800 - }, - "snippet": "<html>", - "category": "Accessibility", - "ignored": false, - "level": "pass" - }, - { - "ruleId": "text_quoted_correctly", - "value": [ - "VIOLATION", - "PASS" - ], - "path": { - "dom": "/html[1]", - "aria": "/document[1]" - }, - "ruleTime": 0, - "reasonId": "Pass_0", - "message": "Rule Passed", - "messageArgs": [], - "apiArgs": [], - "bounds": { - "left": 0, - "top": 0, - "height": 600, - "width": 800 - }, - "snippet": "<html>", - "category": "Accessibility", - "ignored": false, - "level": "pass" - }, - { - "ruleId": "IBMA_Color_Contrast_WCAG2AA_PV", - "value": [ - "VIOLATION", - "PASS" - ], - "path": { - "dom": "/html[1]", - "aria": "/document[1]" - }, - "ruleTime": 0, - "reasonId": "Pass_0", - "message": "Rule Passed", - "messageArgs": [], - "apiArgs": [], - "bounds": { - "left": 0, - "top": 0, - "height": 600, - "width": 800 - }, - "snippet": "<html>", - "category": "Accessibility", - "ignored": false, - "level": "pass" - }, - { - "ruleId": "HAAC_Aria_Native_Host_Semantics", - "value": [ - "VIOLATION", - "PASS" - ], - "path": { - "dom": "/html[1]", - "aria": "/document[1]" - }, - "ruleTime": 0, - "reasonId": "Pass_0", - "message": "Rule Passed", + "reasonId": "Fail_3", + "message": "Page detected as HTML, but does not have a 'lang' attribute", "messageArgs": [], "apiArgs": [], "bounds": { "left": 0, "top": 0, - "height": 600, - "width": 800 - }, - "snippet": "<html>", - "category": "Accessibility", - "ignored": false, - "level": "pass" - }, - { - "ruleId": "HAAC_BackgroundImg_HasTextOrTitle", - "value": [ - "RECOMMENDATION", - "PASS" - ], - "path": { - "dom": "/html[1]/head[1]", - "aria": "/document[1]" - }, - "ruleTime": 0, - "reasonId": "Pass_0", - "message": "Rule Passed", - "messageArgs": [], - "apiArgs": [], - "bounds": { - "left": 0, - "top": 0, - "height": 0, - "width": 0 - }, - "snippet": "<head>", - "category": "Accessibility", - "ignored": false, - "level": "pass" - }, - { - "ruleId": "Rpt_Aria_OrphanedContent_Native_Host_Sematics", - "value": [ - "VIOLATION", - "PASS" - ], - "path": { - "dom": "/html[1]/head[1]", - "aria": "/document[1]" - }, - "ruleTime": 0, - "reasonId": "Pass_0", - "message": "Rule Passed", - "messageArgs": [], - "apiArgs": [], - "bounds": { - "left": 0, - "top": 0, - "height": 0, - "width": 0 - }, - "snippet": "<head>", - "category": "Accessibility", - "ignored": false, - "level": "pass" - }, - { - "ruleId": "RPT_List_UseMarkup", - "value": [ - "VIOLATION", - "PASS" - ], - "path": { - "dom": "/html[1]/head[1]", - "aria": "/document[1]" - }, - "ruleTime": 0, - "reasonId": "Pass_0", - "message": "Rule Passed", - "messageArgs": [], - "apiArgs": [], - "bounds": { - "left": 0, - "top": 0, - "height": 0, - "width": 0 - }, - "snippet": "<head>", - "category": "Accessibility", - "ignored": false, - "level": "pass" - }, - { - "ruleId": "RPT_Text_SensoryReference", - "value": [ - "VIOLATION", - "PASS" - ], - "path": { - "dom": "/html[1]/head[1]", - "aria": "/document[1]" - }, - "ruleTime": 0, - "reasonId": "Pass_0", - "message": "Rule Passed", - "messageArgs": [], - "apiArgs": [], - "bounds": { - "left": 0, - "top": 0, - "height": 0, - "width": 0 - }, - "snippet": "<head>", - "category": "Accessibility", - "ignored": false, - "level": "pass" - }, - { - "ruleId": "WCAG20_Text_Emoticons", - "value": [ - "VIOLATION", - "PASS" - ], - "path": { - "dom": "/html[1]/head[1]", - "aria": "/document[1]" - }, - "ruleTime": 0, - "reasonId": "Pass_0", - "message": "Rule Passed", - "messageArgs": [], - "apiArgs": [], - "bounds": { - "left": 0, - "top": 0, - "height": 0, - "width": 0 - }, - "snippet": "<head>", - "category": "Accessibility", - "ignored": false, - "level": "pass" - }, - { - "ruleId": "WCAG20_Text_LetterSpacing", - "value": [ - "VIOLATION", - "PASS" - ], - "path": { - "dom": "/html[1]/head[1]", - "aria": "/document[1]" - }, - "ruleTime": 0, - "reasonId": "Pass_0", - "message": "Rule Passed", - "messageArgs": [], - "apiArgs": [], - "bounds": { - "left": 0, - "top": 0, - "height": 0, - "width": 0 - }, - "snippet": "<head>", - "category": "Accessibility", - "ignored": false, - "level": "pass" - }, - { - "ruleId": "text_quoted_correctly", - "value": [ - "VIOLATION", - "PASS" - ], - "path": { - "dom": "/html[1]/head[1]", - "aria": "/document[1]" - }, - "ruleTime": 0, - "reasonId": "Pass_0", - "message": "Rule Passed", - "messageArgs": [], - "apiArgs": [], - "bounds": { - "left": 0, - "top": 0, - "height": 0, - "width": 0 - }, - "snippet": "<head>", - "category": "Accessibility", - "ignored": false, - "level": "pass" - }, - { - "ruleId": "HAAC_Aria_Native_Host_Semantics", - "value": [ - "VIOLATION", - "PASS" - ], - "path": { - "dom": "/html[1]/head[1]", - "aria": "/document[1]" - }, - "ruleTime": 0, - "reasonId": "Pass_0", - "message": "Rule Passed", - "messageArgs": [], - "apiArgs": [], - "bounds": { - "left": 0, - "top": 0, - "height": 0, - "width": 0 + "height": 600, + "width": 800 }, - "snippet": "<head>", + "snippet": "<html>", "category": "Accessibility", - "ignored": false, - "level": "pass" + "level": "violation", + "ignored": true, + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/html_lang_exists.html#%7B%22message%22%3A%22Page%20detected%20as%20HTML%2C%20but%20does%20not%20have%20a%20'lang'%20attribute%22%2C%22snippet%22%3A%22%3Chtml%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22FAIL%22%5D%2C%22reasonId%22%3A%22Fail_3%22%2C%22ruleId%22%3A%22html_lang_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "HAAC_BackgroundImg_HasTextOrTitle", + "ruleId": "html_skipnav_exists", "value": [ - "RECOMMENDATION", - "PASS" + "VIOLATION", + "POTENTIAL" ], "path": { - "dom": "/html[1]/body[1]", + "dom": "/html[1]", "aria": "/document[1]" }, "ruleTime": 0, - "reasonId": "Pass_0", - "message": "Rule Passed", + "reasonId": "Potential_1", + "message": "Verify there is a way to bypass blocks of content that are repeated on multiple Web pages", "messageArgs": [], "apiArgs": [], "bounds": { - "left": 8, - "top": 8, - "height": 584, - "width": 784 + "left": 0, + "top": 0, + "height": 600, + "width": 800 }, - "snippet": "<body>", + "snippet": "<html>", "category": "Accessibility", - "ignored": false, - "level": "pass" + "level": "potentialviolation", + "ignored": true, + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/html_skipnav_exists.html#%7B%22message%22%3A%22Verify%20there%20is%20a%20way%20to%20bypass%20blocks%20of%20content%20that%20are%20repeated%20on%20multiple%20Web%20pages%22%2C%22snippet%22%3A%22%3Chtml%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22POTENTIAL%22%5D%2C%22reasonId%22%3A%22Potential_1%22%2C%22ruleId%22%3A%22html_skipnav_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "Rpt_Aria_OrphanedContent_Native_Host_Sematics", + "ruleId": "page_title_exists", "value": [ "VIOLATION", - "PASS" + "FAIL" ], "path": { - "dom": "/html[1]/body[1]", + "dom": "/html[1]", "aria": "/document[1]" }, "ruleTime": 0, - "reasonId": "Pass_0", - "message": "Rule Passed", + "reasonId": "Fail_2", + "message": "Missing <title> element in <head> element", "messageArgs": [], "apiArgs": [], "bounds": { - "left": 8, - "top": 8, - "height": 584, - "width": 784 + "left": 0, + "top": 0, + "height": 600, + "width": 800 }, - "snippet": "<body>", + "snippet": "<html>", "category": "Accessibility", - "ignored": false, - "level": "pass" + "level": "violation", + "ignored": true, + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/page_title_exists.html#%7B%22message%22%3A%22Missing%20%3Ctitle%3E%20element%20in%20%3Chead%3E%20element%22%2C%22snippet%22%3A%22%3Chtml%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22FAIL%22%5D%2C%22reasonId%22%3A%22Fail_2%22%2C%22ruleId%22%3A%22page_title_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "RPT_List_UseMarkup", + "ruleId": "aria_content_in_landmark", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]", + "dom": "/html[1]", "aria": "/document[1]" }, - "ruleTime": 0, + "ruleTime": 1, "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { - "left": 8, - "top": 8, - "height": 584, - "width": 784 + "left": 0, + "top": 0, + "height": 600, + "width": 800 }, - "snippet": "<body>", + "snippet": "<html>", "category": "Accessibility", + "level": "pass", "ignored": false, - "level": "pass" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Chtml%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "RPT_Text_SensoryReference", + "ruleId": "img_alt_background", "value": [ - "VIOLATION", + "RECOMMENDATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]", + "dom": "/html[1]", "aria": "/document[1]" }, "ruleTime": 0, @@ -666,24 +124,25 @@ "messageArgs": [], "apiArgs": [], "bounds": { - "left": 8, - "top": 8, - "height": 584, - "width": 784 + "left": 0, + "top": 0, + "height": 600, + "width": 800 }, - "snippet": "<body>", + "snippet": "<html>", "category": "Accessibility", + "level": "pass", "ignored": false, - "level": "pass" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_background.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Chtml%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_background%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "WCAG20_Text_Emoticons", + "ruleId": "aria_content_in_landmark", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]", + "dom": "/html[1]/head[1]", "aria": "/document[1]" }, "ruleTime": 0, @@ -692,29 +151,30 @@ "messageArgs": [], "apiArgs": [], "bounds": { - "left": 8, - "top": 8, - "height": 584, - "width": 784 + "left": 0, + "top": 0, + "height": 0, + "width": 0 }, - "snippet": "<body>", + "snippet": "<head>", "category": "Accessibility", + "level": "pass", "ignored": false, - "level": "pass" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Chead%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "WCAG20_Text_LetterSpacing", + "ruleId": "skip_main_exists", "value": [ "VIOLATION", - "PASS" + "FAIL" ], "path": { "dom": "/html[1]/body[1]", "aria": "/document[1]" }, "ruleTime": 0, - "reasonId": "Pass_0", - "message": "Rule Passed", + "reasonId": "Fail_1", + "message": "The page does not provide a way to quickly navigate to the main content (ARIA \"main\" landmark or a skip link)", "messageArgs": [], "apiArgs": [], "bounds": { @@ -725,11 +185,12 @@ }, "snippet": "<body>", "category": "Accessibility", - "ignored": false, - "level": "pass" + "level": "violation", + "ignored": true, + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/skip_main_exists.html#%7B%22message%22%3A%22The%20page%20does%20not%20provide%20a%20way%20to%20quickly%20navigate%20to%20the%20main%20content%20(ARIA%20%5C%22main%5C%22%20landmark%20or%20a%20skip%20link)%22%2C%22snippet%22%3A%22%3Cbody%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22FAIL%22%5D%2C%22reasonId%22%3A%22Fail_1%22%2C%22ruleId%22%3A%22skip_main_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "text_quoted_correctly", + "ruleId": "aria_content_in_landmark", "value": [ "VIOLATION", "PASS" @@ -738,7 +199,7 @@ "dom": "/html[1]/body[1]", "aria": "/document[1]" }, - "ruleTime": 0, + "ruleTime": 1, "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], @@ -751,13 +212,14 @@ }, "snippet": "<body>", "category": "Accessibility", + "level": "pass", "ignored": false, - "level": "pass" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cbody%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "IBMA_Color_Contrast_WCAG2AA_PV", + "ruleId": "img_alt_background", "value": [ - "VIOLATION", + "RECOMMENDATION", "PASS" ], "path": { @@ -777,11 +239,12 @@ }, "snippet": "<body>", "category": "Accessibility", + "level": "pass", "ignored": false, - "level": "pass" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_background.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cbody%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_background%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "HAAC_Aria_Native_Host_Semantics", + "ruleId": "text_quoted_correctly", "value": [ "VIOLATION", "PASS" @@ -803,89 +266,39 @@ }, "snippet": "<body>", "category": "Accessibility", + "level": "pass", "ignored": false, - "level": "pass" - }, - { - "ruleId": "RPT_Img_AltCommonMisuse", - "value": [ - "VIOLATION", - "PASS" - ], - "path": { - "dom": "/html[1]/body[1]/img[1]", - "aria": "/document[1]/img[1]" - }, - "ruleTime": 0, - "reasonId": "Pass_0", - "message": "Rule Passed", - "messageArgs": [], - "apiArgs": [], - "bounds": { - "left": 8, - "top": 22, - "height": 0, - "width": 0 - }, - "snippet": "<img src=\"fail.png\">", - "category": "Accessibility", - "ignored": false, - "level": "pass" - }, - { - "ruleId": "HAAC_BackgroundImg_HasTextOrTitle", - "value": [ - "RECOMMENDATION", - "PASS" - ], - "path": { - "dom": "/html[1]/body[1]/img[1]", - "aria": "/document[1]/img[1]" - }, - "ruleTime": 0, - "reasonId": "Pass_0", - "message": "Rule Passed", - "messageArgs": [], - "apiArgs": [], - "bounds": { - "left": 8, - "top": 22, - "height": 0, - "width": 0 - }, - "snippet": "<img src=\"fail.png\">", - "category": "Accessibility", - "ignored": false, - "level": "pass" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_quoted_correctly.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cbody%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22text_quoted_correctly%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "Rpt_Aria_OrphanedContent_Native_Host_Sematics", + "ruleId": "text_whitespace_valid", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/img[1]", - "aria": "/document[1]/img[1]" + "dom": "/html[1]/body[1]", + "aria": "/document[1]" }, "ruleTime": 0, - "reasonId": "Pass_0", + "reasonId": "pass", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 22, - "height": 0, - "width": 0 + "top": 8, + "height": 584, + "width": 784 }, - "snippet": "<img src=\"fail.png\">", + "snippet": "<body>", "category": "Accessibility", + "level": "pass", "ignored": false, - "level": "pass" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_whitespace_valid.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cbody%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22text_whitespace_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "RPT_List_UseMarkup", + "ruleId": "img_alt_misuse", "value": [ "VIOLATION", "PASS" @@ -901,43 +314,45 @@ "apiArgs": [], "bounds": { "left": 8, - "top": 22, + "top": 23, "height": 0, "width": 0 }, "snippet": "<img src=\"fail.png\">", "category": "Accessibility", + "level": "pass", "ignored": false, - "level": "pass" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_misuse.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_misuse%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "RPT_Text_SensoryReference", + "ruleId": "img_alt_valid", "value": [ "VIOLATION", - "PASS" + "FAIL" ], "path": { "dom": "/html[1]/body[1]/img[1]", "aria": "/document[1]/img[1]" }, "ruleTime": 0, - "reasonId": "Pass_0", - "message": "Rule Passed", + "reasonId": "fail_no_alt", + "message": "The image has neither an accessible name nor is marked as decorative or redundant", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 22, + "top": 23, "height": 0, "width": 0 }, "snippet": "<img src=\"fail.png\">", "category": "Accessibility", - "ignored": false, - "level": "pass" + "level": "violation", + "ignored": true, + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_valid.html#%7B%22message%22%3A%22The%20image%20has%20neither%20an%20accessible%20name%20nor%20is%20marked%20as%20decorative%20or%20redundant%22%2C%22snippet%22%3A%22%3Cimg%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22FAIL%22%5D%2C%22reasonId%22%3A%22fail_no_alt%22%2C%22ruleId%22%3A%22img_alt_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "WCAG20_Text_Emoticons", + "ruleId": "aria_content_in_landmark", "value": [ "VIOLATION", "PASS" @@ -946,26 +361,27 @@ "dom": "/html[1]/body[1]/img[1]", "aria": "/document[1]/img[1]" }, - "ruleTime": 0, + "ruleTime": 1, "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 22, + "top": 23, "height": 0, "width": 0 }, "snippet": "<img src=\"fail.png\">", "category": "Accessibility", + "level": "pass", "ignored": false, - "level": "pass" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "WCAG20_Text_LetterSpacing", + "ruleId": "img_alt_background", "value": [ - "VIOLATION", + "RECOMMENDATION", "PASS" ], "path": { @@ -979,14 +395,15 @@ "apiArgs": [], "bounds": { "left": 8, - "top": 22, + "top": 23, "height": 0, "width": 0 }, "snippet": "<img src=\"fail.png\">", "category": "Accessibility", + "level": "pass", "ignored": false, - "level": "pass" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_background.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_background%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { "ruleId": "text_quoted_correctly", @@ -1005,17 +422,18 @@ "apiArgs": [], "bounds": { "left": 8, - "top": 22, + "top": 23, "height": 0, "width": 0 }, "snippet": "<img src=\"fail.png\">", "category": "Accessibility", + "level": "pass", "ignored": false, - "level": "pass" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_quoted_correctly.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22text_quoted_correctly%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "IBMA_Color_Contrast_WCAG2AA_PV", + "ruleId": "text_whitespace_valid", "value": [ "VIOLATION", "PASS" @@ -1025,23 +443,24 @@ "aria": "/document[1]/img[1]" }, "ruleTime": 0, - "reasonId": "Pass_0", + "reasonId": "pass", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 22, + "top": 23, "height": 0, "width": 0 }, "snippet": "<img src=\"fail.png\">", "category": "Accessibility", + "level": "pass", "ignored": false, - "level": "pass" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_whitespace_valid.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22text_whitespace_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "HAAC_Aria_Native_Host_Semantics", + "ruleId": "aria_descendant_valid", "value": [ "VIOLATION", "PASS" @@ -1051,101 +470,24 @@ "aria": "/document[1]/img[1]" }, "ruleTime": 0, - "reasonId": "Pass_0", - "message": "Rule Passed", + "reasonId": "pass", + "message": "The element contains valid descendants", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 22, - "height": 0, - "width": 0 - }, - "snippet": "<img src=\"fail.png\">", - "category": "Accessibility", - "ignored": false, - "level": "pass" - }, - { - "ruleId": "RPT_Img_AltCommonMisuse", - "value": [ - "VIOLATION", - "PASS" - ], - "path": { - "dom": "/html[1]/body[1]/img[2]", - "aria": "/document[1]/img[2]" - }, - "ruleTime": 0, - "reasonId": "Pass_0", - "message": "Rule Passed", - "messageArgs": [], - "apiArgs": [], - "bounds": { - "left": 12, - "top": 22, - "height": 0, - "width": 0 - }, - "snippet": "<img src=\"fail.png\">", - "category": "Accessibility", - "ignored": false, - "level": "pass" - }, - { - "ruleId": "HAAC_BackgroundImg_HasTextOrTitle", - "value": [ - "RECOMMENDATION", - "PASS" - ], - "path": { - "dom": "/html[1]/body[1]/img[2]", - "aria": "/document[1]/img[2]" - }, - "ruleTime": 0, - "reasonId": "Pass_0", - "message": "Rule Passed", - "messageArgs": [], - "apiArgs": [], - "bounds": { - "left": 12, - "top": 22, - "height": 0, - "width": 0 - }, - "snippet": "<img src=\"fail.png\">", - "category": "Accessibility", - "ignored": false, - "level": "pass" - }, - { - "ruleId": "Rpt_Aria_OrphanedContent_Native_Host_Sematics", - "value": [ - "VIOLATION", - "PASS" - ], - "path": { - "dom": "/html[1]/body[1]/img[2]", - "aria": "/document[1]/img[2]" - }, - "ruleTime": 0, - "reasonId": "Pass_0", - "message": "Rule Passed", - "messageArgs": [], - "apiArgs": [], - "bounds": { - "left": 12, - "top": 22, + "top": 23, "height": 0, "width": 0 }, "snippet": "<img src=\"fail.png\">", "category": "Accessibility", + "level": "pass", "ignored": false, - "level": "pass" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_descendant_valid.html#%7B%22message%22%3A%22The%20element%20contains%20valid%20descendants%22%2C%22snippet%22%3A%22%3Cimg%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22aria_descendant_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "RPT_List_UseMarkup", + "ruleId": "img_alt_misuse", "value": [ "VIOLATION", "PASS" @@ -1161,43 +503,45 @@ "apiArgs": [], "bounds": { "left": 12, - "top": 22, + "top": 23, "height": 0, "width": 0 }, "snippet": "<img src=\"fail.png\">", "category": "Accessibility", + "level": "pass", "ignored": false, - "level": "pass" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_misuse.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_misuse%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "RPT_Text_SensoryReference", + "ruleId": "img_alt_valid", "value": [ "VIOLATION", - "PASS" + "FAIL" ], "path": { "dom": "/html[1]/body[1]/img[2]", "aria": "/document[1]/img[2]" }, "ruleTime": 0, - "reasonId": "Pass_0", - "message": "Rule Passed", + "reasonId": "fail_no_alt", + "message": "The image has neither an accessible name nor is marked as decorative or redundant", "messageArgs": [], "apiArgs": [], "bounds": { "left": 12, - "top": 22, + "top": 23, "height": 0, "width": 0 }, "snippet": "<img src=\"fail.png\">", "category": "Accessibility", - "ignored": false, - "level": "pass" + "level": "violation", + "ignored": true, + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_valid.html#%7B%22message%22%3A%22The%20image%20has%20neither%20an%20accessible%20name%20nor%20is%20marked%20as%20decorative%20or%20redundant%22%2C%22snippet%22%3A%22%3Cimg%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22FAIL%22%5D%2C%22reasonId%22%3A%22fail_no_alt%22%2C%22ruleId%22%3A%22img_alt_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "WCAG20_Text_Emoticons", + "ruleId": "aria_content_in_landmark", "value": [ "VIOLATION", "PASS" @@ -1213,19 +557,20 @@ "apiArgs": [], "bounds": { "left": 12, - "top": 22, + "top": 23, "height": 0, "width": 0 }, "snippet": "<img src=\"fail.png\">", "category": "Accessibility", + "level": "pass", "ignored": false, - "level": "pass" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "WCAG20_Text_LetterSpacing", + "ruleId": "img_alt_background", "value": [ - "VIOLATION", + "RECOMMENDATION", "PASS" ], "path": { @@ -1239,14 +584,15 @@ "apiArgs": [], "bounds": { "left": 12, - "top": 22, + "top": 23, "height": 0, "width": 0 }, "snippet": "<img src=\"fail.png\">", "category": "Accessibility", + "level": "pass", "ignored": false, - "level": "pass" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_background.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_background%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { "ruleId": "text_quoted_correctly", @@ -1265,17 +611,18 @@ "apiArgs": [], "bounds": { "left": 12, - "top": 22, + "top": 23, "height": 0, "width": 0 }, "snippet": "<img src=\"fail.png\">", "category": "Accessibility", + "level": "pass", "ignored": false, - "level": "pass" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_quoted_correctly.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22text_quoted_correctly%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "IBMA_Color_Contrast_WCAG2AA_PV", + "ruleId": "text_whitespace_valid", "value": [ "VIOLATION", "PASS" @@ -1285,23 +632,24 @@ "aria": "/document[1]/img[2]" }, "ruleTime": 0, - "reasonId": "Pass_0", + "reasonId": "pass", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 12, - "top": 22, + "top": 23, "height": 0, "width": 0 }, "snippet": "<img src=\"fail.png\">", "category": "Accessibility", + "level": "pass", "ignored": false, - "level": "pass" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_whitespace_valid.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22text_whitespace_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "HAAC_Aria_Native_Host_Semantics", + "ruleId": "aria_descendant_valid", "value": [ "VIOLATION", "PASS" @@ -1311,84 +659,89 @@ "aria": "/document[1]/img[2]" }, "ruleTime": 0, - "reasonId": "Pass_0", - "message": "Rule Passed", + "reasonId": "pass", + "message": "The element contains valid descendants", "messageArgs": [], "apiArgs": [], "bounds": { "left": 12, - "top": 22, + "top": 23, "height": 0, "width": 0 }, "snippet": "<img src=\"fail.png\">", "category": "Accessibility", + "level": "pass", "ignored": false, - "level": "pass" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_descendant_valid.html#%7B%22message%22%3A%22The%20element%20contains%20valid%20descendants%22%2C%22snippet%22%3A%22%3Cimg%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22aria_descendant_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" } ], - "numExecuted": 52, + "numExecuted": 25, + "ruleTime": 3, "nls": { - "WCAG20_Html_HasLang": { + "html_lang_exists": { + "0": "Page must identify the default language of the document with a 'lang' attribute", "Fail_3": "Page detected as HTML, but does not have a 'lang' attribute" }, - "RPT_Html_SkipNav": { + "html_skipnav_exists": { + "0": "Provide a way to bypass blocks of content that are repeated on multiple Web pages", "Potential_1": "Verify there is a way to bypass blocks of content that are repeated on multiple Web pages" }, - "WCAG20_Doc_HasTitle": { + "page_title_exists": { + "0": "The page should have a title that correctly identifies the subject of the page", "Fail_2": "Missing <title> element in <head> element" }, - "HAAC_BackgroundImg_HasTextOrTitle": { - "Pass_0": "Rule Passed" - }, - "Rpt_Aria_OrphanedContent_Native_Host_Sematics": { - "Pass_0": "Rule Passed" - }, - "RPT_List_UseMarkup": { + "aria_content_in_landmark": { + "0": "All content must reside within an element with a landmark role", "Pass_0": "Rule Passed" }, - "RPT_Text_SensoryReference": { + "img_alt_background": { + "0": "Background images that convey important information must have a text alternative that describes the image", "Pass_0": "Rule Passed" }, - "WCAG20_Text_Emoticons": { - "Pass_0": "Rule Passed" - }, - "WCAG20_Text_LetterSpacing": { - "Pass_0": "Rule Passed" + "skip_main_exists": { + "0": "Pages must provide a way to skip directly to the main content", + "Fail_1": "The page does not provide a way to quickly navigate to the main content (ARIA \"main\" landmark or a skip link)" }, "text_quoted_correctly": { + "0": "Quotations should be marked with <q> or <blockquote> elements", "Pass_0": "Rule Passed" }, - "IBMA_Color_Contrast_WCAG2AA_PV": { - "Pass_0": "Rule Passed" + "text_whitespace_valid": { + "0": "Space characters should not be used to control spacing within a word", + "pass": "Rule Passed" }, - "HAAC_Aria_Native_Host_Semantics": { + "img_alt_misuse": { + "0": "'alt' attribute value must be a good inline replacement for the image", "Pass_0": "Rule Passed" }, - "WCAG20_Body_FirstASkips_Native_Host_Sematics": { - "Fail_1": "The page does not provide a way to quickly navigate to the main content (ARIA \"main\" landmark or a skip link)" - }, - "WCAG20_Img_HasAlt": { - "Fail_2": "Image does not have an 'alt' attribute short text alternative" + "img_alt_valid": { + "0": "Images must have accessible names unless they are decorative or redundant", + "fail_no_alt": "The image has neither an accessible name nor is marked as decorative or redundant" }, - "RPT_Img_AltCommonMisuse": { - "Pass_0": "Rule Passed" + "aria_descendant_valid": { + "0": "Browsers ignore the explicit and implicit ARIA roles of the descendants of certain elements", + "pass": "The element contains valid descendants" } }, "summary": { "counts": { - "violation": 5, - "potentialviolation": 1, + "ignored": 6, + "elements": 5, + "elementsViolation": 0, + "elementsViolationReview": 0, + "violation": 0, + "potentialviolation": 0, "recommendation": 0, "potentialrecommendation": 0, "manual": 0, - "pass": 46, - "ignored": 0 + "pass": 19 }, - "scanTime": 5, - "ruleArchive": "", + "scanTime": 34, + "ruleArchive": "Preview Rules (preview)", "policies": [ - "IBM_Accessibility" + "IBM_Accessibility", + "WCAG_2_2" ], "reportLevels": [ "violation", @@ -1398,10 +751,10 @@ "manual", "pass" ], - "startScan": 1582566852099, + "startScan": 1732551895968, "URL": "data:text/html;charset=utf-8,%3C!--%0A%20%20%20%20%20%2F******************************************************************************%0A%20%20%20%20%20Copyright%3A%3A%202020-%20IBM%2C%20Inc%0A%0A%20%20%20%20Licensed%20under%20the%20Apache%20License%2C%20Version%202.0%20(the%20%22License%22)%3B%0A%20%20%20%20you%20may%20not%20use%20this%20file%20except%20in%20compliance%20with%20the%20License.%0A%20%20%20%20You%20may%20obtain%20a%20copy%20of%20the%20License%20at%0A%0A%20%20%20%20http%3A%2F%2Fwww.apache.org%2Flicenses%2FLICENSE-2.0%0A%0A%20%20%20%20Unless%20required%20by%20applicable%20law%20or%20agreed%20to%20in%20writing%2C%20software%0A%20%20%20%20distributed%20under%20the%20License%20is%20distributed%20on%20an%20%22AS%20IS%22%20BASIS%2C%0A%20%20%20%20WITHOUT%20WARRANTIES%20OR%20CONDITIONS%20OF%20ANY%20KIND%2C%20either%20express%20or%20implied.%0A%20%20%20%20See%20the%20License%20for%20the%20specific%20language%20governing%20permissions%20and%0A%20%20%20%20limitations%20under%20the%20License.%0A%20%20*****************************************************************************%2F%0A%0A--%3E%20%0A%3Chtml%3E%0A%20%20%20%20%3Cbody%3E%0A%20%20%20%20%20%20%20%20%3Cimg%20src%3D%22fail.png%22%3E%0A%20%20%20%20%20%20%20%20%3Cimg%20src%3D%22fail.png%22%3E%0A%20%20%20%20%3C%2Fbody%3E%0A%3C%2Fhtml%3E" }, - "scanID": "00b5c4de-a980-4344-92c9-856172c4e903", + "scanID": "6371e2d2-3117-4468-9fb7-7d53bc205e7c", "toolID": "accessibility-checker-v3.0.0", "label": "Baseline_aChecker.Baseline2.html" } \ No newline at end of file diff --git a/accessibility-checker/test/mocha/aChecker.Fast/aChecker.Baselines/aChecker.Baseline.test.js b/accessibility-checker/test/mocha/aChecker.Fast/aChecker.Baselines/aChecker.Baseline.test.js index 37bf99992..d856de3b9 100644 --- a/accessibility-checker/test/mocha/aChecker.Fast/aChecker.Baselines/aChecker.Baseline.test.js +++ b/accessibility-checker/test/mocha/aChecker.Fast/aChecker.Baselines/aChecker.Baseline.test.js @@ -76,7 +76,7 @@ describe("Baseline testing", function () { var labelName = unitTestFile.substring(Math.max(unitTestFile.lastIndexOf("/"), unitTestFile.lastIndexOf("\\")) + 1); // Perform the accessibility scan using the IBMaScan Wrapper let result = await aChecker.getCompliance(unitTestDataFileContent, "Baseline_" + labelName); - let assertVal = aChecker.assertCompliance(result.report); + let assertVal = aChecker.assertCompliance(result.report);console.log("report="+JSON.stringify(result.report)); if (assertVal !== codes[unitTestFile]) { console.log("inspect result", util.inspect(result.report, null, 6)); } From 86c53d1a1ebd8ec22ef5b1df9a4e9375f825e4fb Mon Sep 17 00:00:00 2001 From: Shunguo <shunguoy@us.ibm.com> Date: Sun, 1 Dec 2024 19:01:16 -0600 Subject: [PATCH 05/18] update the test case #2090 --- .../v4/rules/aria_accessiblename_exists.ts | 2 +- .../act-fail-2.html | 42 ------------------- 2 files changed, 1 insertion(+), 43 deletions(-) delete mode 100755 accessibility-checker-engine/test/v2/checker/accessibility/rules/aria_accessiblename_exists_ruleunit/act-fail-2.html diff --git a/accessibility-checker-engine/src/v4/rules/aria_accessiblename_exists.ts b/accessibility-checker-engine/src/v4/rules/aria_accessiblename_exists.ts index 5efea7429..7a16d3771 100644 --- a/accessibility-checker-engine/src/v4/rules/aria_accessiblename_exists.ts +++ b/accessibility-checker-engine/src/v4/rules/aria_accessiblename_exists.ts @@ -77,7 +77,7 @@ export const aria_accessiblename_exists: Rule = { let role = AriaUtil.getResolvedRole(ruleContext); const name_pair = AccNameUtil.computeAccessibleName(ruleContext); - if (!name_pair || !name_pair.name || name_pair.name.trim().length === 0) { + if (!name_pair || !name_pair.name || name_pair.name.trim().length === 0) {console.log("role="+role+", pair="+JSON.stringify(name_pair)); if (role === 'img' || role === 'image') return RuleFail("fail_no_accessible_name_image", [ruleContext.nodeName.toLowerCase(), role]); return RuleFail("fail_no_accessible_name", [ruleContext.nodeName.toLowerCase(), role]); diff --git a/accessibility-checker-engine/test/v2/checker/accessibility/rules/aria_accessiblename_exists_ruleunit/act-fail-2.html b/accessibility-checker-engine/test/v2/checker/accessibility/rules/aria_accessiblename_exists_ruleunit/act-fail-2.html deleted file mode 100755 index 1d5905ece..000000000 --- a/accessibility-checker-engine/test/v2/checker/accessibility/rules/aria_accessiblename_exists_ruleunit/act-fail-2.html +++ /dev/null @@ -1,42 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> - - -<html lang="en"> - -<head> - <title>ACT Test case - - - - -
- - - - - From 61319ff00f065844ec8cc4611fb8deb34142b803 Mon Sep 17 00:00:00 2001 From: Shunguo Date: Sun, 1 Dec 2024 19:10:07 -0600 Subject: [PATCH 06/18] code clean up #2090 --- .../src/v4/rules/aria_accessiblename_exists.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/accessibility-checker-engine/src/v4/rules/aria_accessiblename_exists.ts b/accessibility-checker-engine/src/v4/rules/aria_accessiblename_exists.ts index 7a16d3771..5efea7429 100644 --- a/accessibility-checker-engine/src/v4/rules/aria_accessiblename_exists.ts +++ b/accessibility-checker-engine/src/v4/rules/aria_accessiblename_exists.ts @@ -77,7 +77,7 @@ export const aria_accessiblename_exists: Rule = { let role = AriaUtil.getResolvedRole(ruleContext); const name_pair = AccNameUtil.computeAccessibleName(ruleContext); - if (!name_pair || !name_pair.name || name_pair.name.trim().length === 0) {console.log("role="+role+", pair="+JSON.stringify(name_pair)); + if (!name_pair || !name_pair.name || name_pair.name.trim().length === 0) { if (role === 'img' || role === 'image') return RuleFail("fail_no_accessible_name_image", [ruleContext.nodeName.toLowerCase(), role]); return RuleFail("fail_no_accessible_name", [ruleContext.nodeName.toLowerCase(), role]); From 027088244745cb82f4b855e9448f3232d1419975 Mon Sep 17 00:00:00 2001 From: Shunguo Date: Sun, 1 Dec 2024 19:32:12 -0600 Subject: [PATCH 07/18] undo change #2090 --- .../Baseline_aChecker.Baseline.html.json | 102 +- .../Baseline_aChecker.Baseline2.html.json | 1029 ++++++++++++++--- .../aChecker.Baseline.test.js | 2 +- 3 files changed, 907 insertions(+), 226 deletions(-) diff --git a/accessibility-checker/test/baselines/Baseline_aChecker.Baseline.html.json b/accessibility-checker/test/baselines/Baseline_aChecker.Baseline.html.json index 4acc5acad..67d335c32 100644 --- a/accessibility-checker/test/baselines/Baseline_aChecker.Baseline.html.json +++ b/accessibility-checker/test/baselines/Baseline_aChecker.Baseline.html.json @@ -23,8 +23,8 @@ }, "snippet": "", "category": "Accessibility", - "level": "violation", "ignored": true, + "level": "violation", "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/html_lang_exists.html#%7B%22message%22%3A%22Page%20detected%20as%20HTML%2C%20but%20does%20not%20have%20a%20'lang'%20attribute%22%2C%22snippet%22%3A%22%3Chtml%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22FAIL%22%5D%2C%22reasonId%22%3A%22Fail_3%22%2C%22ruleId%22%3A%22html_lang_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -37,7 +37,7 @@ "dom": "/html[1]", "aria": "/document[1]" }, - "ruleTime": 1, + "ruleTime": 0, "reasonId": "Potential_1", "message": "Verify there is a way to bypass blocks of content that are repeated on multiple Web pages", "messageArgs": [], @@ -50,8 +50,8 @@ }, "snippet": "", "category": "Accessibility", - "level": "potentialviolation", "ignored": true, + "level": "potentialviolation", "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/html_skipnav_exists.html#%7B%22message%22%3A%22Verify%20there%20is%20a%20way%20to%20bypass%20blocks%20of%20content%20that%20are%20repeated%20on%20multiple%20Web%20pages%22%2C%22snippet%22%3A%22%3Chtml%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22POTENTIAL%22%5D%2C%22reasonId%22%3A%22Potential_1%22%2C%22ruleId%22%3A%22html_skipnav_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -77,8 +77,8 @@ }, "snippet": "", "category": "Accessibility", - "level": "violation", "ignored": true, + "level": "violation", "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/page_title_exists.html#%7B%22message%22%3A%22Missing%20%3Ctitle%3E%20element%20in%20%3Chead%3E%20element%22%2C%22snippet%22%3A%22%3Chtml%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22FAIL%22%5D%2C%22reasonId%22%3A%22Fail_2%22%2C%22ruleId%22%3A%22page_title_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -91,7 +91,7 @@ "dom": "/html[1]", "aria": "/document[1]" }, - "ruleTime": 2, + "ruleTime": 0, "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], @@ -104,8 +104,8 @@ }, "snippet": "", "category": "Accessibility", - "level": "pass", "ignored": false, + "level": "pass", "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Chtml%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -131,8 +131,8 @@ }, "snippet": "", "category": "Accessibility", - "level": "pass", "ignored": false, + "level": "pass", "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_background.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Chtml%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_background%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -158,8 +158,8 @@ }, "snippet": "", "category": "Accessibility", - "level": "pass", "ignored": false, + "level": "pass", "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Chead%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -185,8 +185,8 @@ }, "snippet": "", "category": "Accessibility", - "level": "violation", "ignored": true, + "level": "violation", "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/skip_main_exists.html#%7B%22message%22%3A%22The%20page%20does%20not%20provide%20a%20way%20to%20quickly%20navigate%20to%20the%20main%20content%20(ARIA%20%5C%22main%5C%22%20landmark%20or%20a%20skip%20link)%22%2C%22snippet%22%3A%22%3Cbody%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22FAIL%22%5D%2C%22reasonId%22%3A%22Fail_1%22%2C%22ruleId%22%3A%22skip_main_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -212,8 +212,8 @@ }, "snippet": "", "category": "Accessibility", - "level": "pass", "ignored": false, + "level": "pass", "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cbody%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -239,8 +239,8 @@ }, "snippet": "", "category": "Accessibility", - "level": "pass", "ignored": false, + "level": "pass", "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_background.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cbody%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_background%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -253,7 +253,7 @@ "dom": "/html[1]/body[1]", "aria": "/document[1]" }, - "ruleTime": 0, + "ruleTime": 1, "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], @@ -266,8 +266,8 @@ }, "snippet": "", "category": "Accessibility", - "level": "pass", "ignored": false, + "level": "pass", "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_quoted_correctly.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cbody%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22text_quoted_correctly%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -293,8 +293,8 @@ }, "snippet": "", "category": "Accessibility", - "level": "pass", "ignored": false, + "level": "pass", "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_whitespace_valid.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cbody%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22text_whitespace_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -320,8 +320,8 @@ }, "snippet": "", "category": "Accessibility", - "level": "pass", "ignored": false, + "level": "pass", "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_misuse.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20id%3D%5C%22ace%5C%22%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_misuse%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -347,8 +347,8 @@ }, "snippet": "", "category": "Accessibility", - "level": "violation", "ignored": true, + "level": "violation", "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_valid.html#%7B%22message%22%3A%22The%20image%20has%20neither%20an%20accessible%20name%20nor%20is%20marked%20as%20decorative%20or%20redundant%22%2C%22snippet%22%3A%22%3Cimg%20id%3D%5C%22ace%5C%22%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22FAIL%22%5D%2C%22reasonId%22%3A%22fail_no_alt%22%2C%22ruleId%22%3A%22img_alt_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -374,8 +374,8 @@ }, "snippet": "", "category": "Accessibility", - "level": "pass", "ignored": false, + "level": "pass", "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20id%3D%5C%22ace%5C%22%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -401,8 +401,8 @@ }, "snippet": "", "category": "Accessibility", - "level": "pass", "ignored": false, + "level": "pass", "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/element_id_unique.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20id%3D%5C%22ace%5C%22%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22element_id_unique%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -428,8 +428,8 @@ }, "snippet": "", "category": "Accessibility", - "level": "pass", "ignored": false, + "level": "pass", "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_background.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20id%3D%5C%22ace%5C%22%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_background%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -455,8 +455,8 @@ }, "snippet": "", "category": "Accessibility", - "level": "pass", "ignored": false, + "level": "pass", "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_quoted_correctly.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20id%3D%5C%22ace%5C%22%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22text_quoted_correctly%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -482,10 +482,40 @@ }, "snippet": "", "category": "Accessibility", - "level": "pass", "ignored": false, + "level": "pass", "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_whitespace_valid.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20id%3D%5C%22ace%5C%22%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22text_whitespace_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" }, + { + "ruleId": "aria_accessiblename_exists", + "value": [ + "RECOMMENDATION", + "FAIL" + ], + "path": { + "dom": "/html[1]/body[1]/img[1]", + "aria": "/document[1]/img[1]" + }, + "ruleTime": 0, + "reasonId": "fail_no_accessible_name", + "message": "Element with \"img\" role has no accessible name", + "messageArgs": [ + "img", + "img" + ], + "apiArgs": [], + "bounds": { + "left": 8, + "top": 8, + "height": 0, + "width": 0 + }, + "snippet": "", + "category": "Accessibility", + "ignored": false, + "level": "recommendation", + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_accessiblename_exists.html#%7B%22message%22%3A%22Element%20%3Cimg%3E%20with%20%5C%22img%5C%22%20role%20has%20no%20accessible%20name%22%2C%22snippet%22%3A%22%3Cimg%20id%3D%5C%22ace%5C%22%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22FAIL%22%5D%2C%22reasonId%22%3A%22fail_no_accessible_name%22%2C%22ruleId%22%3A%22aria_accessiblename_exists%22%2C%22msgArgs%22%3A%5B%22img%22%2C%22img%22%5D%7D" + }, { "ruleId": "aria_descendant_valid", "value": [ @@ -496,7 +526,7 @@ "dom": "/html[1]/body[1]/img[1]", "aria": "/document[1]/img[1]" }, - "ruleTime": 1, + "ruleTime": 0, "reasonId": "pass", "message": "The element contains valid descendants", "messageArgs": [], @@ -509,13 +539,13 @@ }, "snippet": "", "category": "Accessibility", - "level": "pass", "ignored": false, + "level": "pass", "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_descendant_valid.html#%7B%22message%22%3A%22The%20element%20contains%20valid%20descendants%22%2C%22snippet%22%3A%22%3Cimg%20id%3D%5C%22ace%5C%22%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22aria_descendant_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" } ], - "numExecuted": 19, - "ruleTime": 5, + "numExecuted": 20, + "ruleTime": 2, "nls": { "html_lang_exists": { "0": "Page must identify the default language of the document with a 'lang' attribute", @@ -561,6 +591,10 @@ "0": "Element 'id' attribute values must be unique within a document", "Pass_0": "Rule Passed" }, + "aria_accessiblename_exists": { + "0": "Elements with certain roles should have accessible names", + "fail_no_accessible_name": "Element <{0}> with \"{1}\" role has no accessible name" + }, "aria_descendant_valid": { "0": "Browsers ignore the explicit and implicit ARIA roles of the descendants of certain elements", "pass": "The element contains valid descendants" @@ -568,18 +602,18 @@ }, "summary": { "counts": { - "ignored": 5, - "elements": 4, - "elementsViolation": 0, - "elementsViolationReview": 0, "violation": 0, "potentialviolation": 0, - "recommendation": 0, + "recommendation": 1, "potentialrecommendation": 0, "manual": 0, - "pass": 14 + "pass": 14, + "ignored": 5, + "elements": 4, + "elementsViolation": 0, + "elementsViolationReview": 0 }, - "scanTime": 39, + "scanTime": 28, "ruleArchive": "Preview Rules (preview)", "policies": [ "IBM_Accessibility", @@ -593,10 +627,10 @@ "manual", "pass" ], - "startScan": 1732551661984, + "startScan": 1729695667976, "URL": "data:text/html;charset=utf-8,%3C!--%0A%20%20%20%20%20%2F******************************************************************************%0A%20%20%20%20%20Copyright%3A%3A%202020-%20IBM%2C%20Inc%0A%0A%20%20%20%20Licensed%20under%20the%20Apache%20License%2C%20Version%202.0%20(the%20%22License%22)%3B%0A%20%20%20%20you%20may%20not%20use%20this%20file%20except%20in%20compliance%20with%20the%20License.%0A%20%20%20%20You%20may%20obtain%20a%20copy%20of%20the%20License%20at%0A%0A%20%20%20%20http%3A%2F%2Fwww.apache.org%2Flicenses%2FLICENSE-2.0%0A%0A%20%20%20%20Unless%20required%20by%20applicable%20law%20or%20agreed%20to%20in%20writing%2C%20software%0A%20%20%20%20distributed%20under%20the%20License%20is%20distributed%20on%20an%20%22AS%20IS%22%20BASIS%2C%0A%20%20%20%20WITHOUT%20WARRANTIES%20OR%20CONDITIONS%20OF%20ANY%20KIND%2C%20either%20express%20or%20implied.%0A%20%20%20%20See%20the%20License%20for%20the%20specific%20language%20governing%20permissions%20and%0A%20%20%20%20limitations%20under%20the%20License.%0A%20%20*****************************************************************************%2F%0A%0A--%3E%20%20%20%20%0A%20%20%20%20%3Chtml%3E%0A%20%20%20%20%3Cbody%3E%0A%20%20%20%20%20%20%20%20%3Cimg%20src%3D%22fail.png%22%20id%3D%22ace%22%3E%0A%20%20%20%20%3C%2Fbody%3E%0A%3C%2Fhtml%3E" }, - "scanID": "a01c61b9-e72b-42c8-a0fd-f3f91a9e7c59", + "scanID": "773dc15c-5eb9-43e3-886c-4a0c472ab819", "toolID": "accessibility-checker-v3.0.0", "label": "Baseline_aChecker.Baseline.html" } \ No newline at end of file diff --git a/accessibility-checker/test/baselines/Baseline_aChecker.Baseline2.html.json b/accessibility-checker/test/baselines/Baseline_aChecker.Baseline2.html.json index f7d79e03d..8043478bb 100644 --- a/accessibility-checker/test/baselines/Baseline_aChecker.Baseline2.html.json +++ b/accessibility-checker/test/baselines/Baseline_aChecker.Baseline2.html.json @@ -1,7 +1,7 @@ { "results": [ { - "ruleId": "html_lang_exists", + "ruleId": "WCAG20_Doc_HasTitle", "value": [ "VIOLATION", "FAIL" @@ -11,8 +11,8 @@ "aria": "/document[1]" }, "ruleTime": 0, - "reasonId": "Fail_3", - "message": "Page detected as HTML, but does not have a 'lang' attribute", + "reasonId": "Fail_2", + "message": "Missing element in <head> element", "messageArgs": [], "apiArgs": [], "bounds": { @@ -23,12 +23,89 @@ }, "snippet": "<html>", "category": "Accessibility", - "level": "violation", - "ignored": true, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/html_lang_exists.html#%7B%22message%22%3A%22Page%20detected%20as%20HTML%2C%20but%20does%20not%20have%20a%20'lang'%20attribute%22%2C%22snippet%22%3A%22%3Chtml%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22FAIL%22%5D%2C%22reasonId%22%3A%22Fail_3%22%2C%22ruleId%22%3A%22html_lang_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" + "ignored": false, + "level": "violation" + }, + { + "ruleId": "WCAG20_Body_FirstASkips_Native_Host_Sematics", + "value": [ + "VIOLATION", + "FAIL" + ], + "path": { + "dom": "/html[1]/body[1]", + "aria": "/document[1]" + }, + "ruleTime": 0, + "reasonId": "Fail_1", + "message": "The page does not provide a way to quickly navigate to the main content (ARIA \"main\" landmark or a skip link)", + "messageArgs": [], + "apiArgs": [], + "bounds": { + "left": 8, + "top": 8, + "height": 584, + "width": 784 + }, + "snippet": "<body>", + "category": "Accessibility", + "ignored": false, + "level": "violation" + }, + { + "ruleId": "WCAG20_Img_HasAlt", + "value": [ + "VIOLATION", + "FAIL" + ], + "path": { + "dom": "/html[1]/body[1]/img[1]", + "aria": "/document[1]/img[1]" + }, + "ruleTime": 0, + "reasonId": "Fail_2", + "message": "Image does not have an 'alt' attribute short text alternative", + "messageArgs": [], + "apiArgs": [], + "bounds": { + "left": 8, + "top": 22, + "height": 0, + "width": 0 + }, + "snippet": "<img src=\"fail.png\">", + "category": "Accessibility", + "ignored": false, + "level": "violation" + }, + { + "ruleId": "WCAG20_Img_HasAlt", + "value": [ + "VIOLATION", + "FAIL" + ], + "path": { + "dom": "/html[1]/body[1]/img[2]", + "aria": "/document[1]/img[2]" + }, + "ruleTime": 0, + "reasonId": "Fail_2", + "message": "Image does not have an 'alt' attribute short text alternative", + "messageArgs": [], + "apiArgs": [], + "bounds": { + "left": 12, + "top": 22, + "height": 0, + "width": 0 + }, + "snippet": "<img src=\"fail.png\">", + "category": "Accessibility", + "ignored": false, + "level": "violation" }, { - "ruleId": "html_skipnav_exists", + "ruleId": "RPT_Html_SkipNav", "value": [ "VIOLATION", "POTENTIAL" @@ -38,84 +115,523 @@ "aria": "/document[1]" }, "ruleTime": 0, - "reasonId": "Potential_1", - "message": "Verify there is a way to bypass blocks of content that are repeated on multiple Web pages", + "reasonId": "Potential_1", + "message": "Verify there is a way to bypass blocks of content that are repeated on multiple Web pages", + "messageArgs": [], + "apiArgs": [], + "bounds": { + "left": 0, + "top": 0, + "height": 600, + "width": 800 + }, + "snippet": "<html>", + "category": "Accessibility", + "ignored": false, + "level": "potentialviolation" + }, + { + "ruleId": "HAAC_BackgroundImg_HasTextOrTitle", + "value": [ + "RECOMMENDATION", + "PASS" + ], + "path": { + "dom": "/html[1]", + "aria": "/document[1]" + }, + "ruleTime": 0, + "reasonId": "Pass_0", + "message": "Rule Passed", + "messageArgs": [], + "apiArgs": [], + "bounds": { + "left": 0, + "top": 0, + "height": 600, + "width": 800 + }, + "snippet": "<html>", + "category": "Accessibility", + "ignored": false, + "level": "pass" + }, + { + "ruleId": "Rpt_Aria_OrphanedContent_Native_Host_Sematics", + "value": [ + "VIOLATION", + "PASS" + ], + "path": { + "dom": "/html[1]", + "aria": "/document[1]" + }, + "ruleTime": 0, + "reasonId": "Pass_0", + "message": "Rule Passed", + "messageArgs": [], + "apiArgs": [], + "bounds": { + "left": 0, + "top": 0, + "height": 600, + "width": 800 + }, + "snippet": "<html>", + "category": "Accessibility", + "ignored": false, + "level": "pass" + }, + { + "ruleId": "RPT_List_UseMarkup", + "value": [ + "VIOLATION", + "PASS" + ], + "path": { + "dom": "/html[1]", + "aria": "/document[1]" + }, + "ruleTime": 0, + "reasonId": "Pass_0", + "message": "Rule Passed", + "messageArgs": [], + "apiArgs": [], + "bounds": { + "left": 0, + "top": 0, + "height": 600, + "width": 800 + }, + "snippet": "<html>", + "category": "Accessibility", + "ignored": false, + "level": "pass" + }, + { + "ruleId": "RPT_Text_SensoryReference", + "value": [ + "VIOLATION", + "PASS" + ], + "path": { + "dom": "/html[1]", + "aria": "/document[1]" + }, + "ruleTime": 0, + "reasonId": "Pass_0", + "message": "Rule Passed", + "messageArgs": [], + "apiArgs": [], + "bounds": { + "left": 0, + "top": 0, + "height": 600, + "width": 800 + }, + "snippet": "<html>", + "category": "Accessibility", + "ignored": false, + "level": "pass" + }, + { + "ruleId": "WCAG20_Text_Emoticons", + "value": [ + "VIOLATION", + "PASS" + ], + "path": { + "dom": "/html[1]", + "aria": "/document[1]" + }, + "ruleTime": 0, + "reasonId": "Pass_0", + "message": "Rule Passed", + "messageArgs": [], + "apiArgs": [], + "bounds": { + "left": 0, + "top": 0, + "height": 600, + "width": 800 + }, + "snippet": "<html>", + "category": "Accessibility", + "ignored": false, + "level": "pass" + }, + { + "ruleId": "WCAG20_Text_LetterSpacing", + "value": [ + "VIOLATION", + "PASS" + ], + "path": { + "dom": "/html[1]", + "aria": "/document[1]" + }, + "ruleTime": 0, + "reasonId": "Pass_0", + "message": "Rule Passed", + "messageArgs": [], + "apiArgs": [], + "bounds": { + "left": 0, + "top": 0, + "height": 600, + "width": 800 + }, + "snippet": "<html>", + "category": "Accessibility", + "ignored": false, + "level": "pass" + }, + { + "ruleId": "text_quoted_correctly", + "value": [ + "VIOLATION", + "PASS" + ], + "path": { + "dom": "/html[1]", + "aria": "/document[1]" + }, + "ruleTime": 0, + "reasonId": "Pass_0", + "message": "Rule Passed", + "messageArgs": [], + "apiArgs": [], + "bounds": { + "left": 0, + "top": 0, + "height": 600, + "width": 800 + }, + "snippet": "<html>", + "category": "Accessibility", + "ignored": false, + "level": "pass" + }, + { + "ruleId": "IBMA_Color_Contrast_WCAG2AA_PV", + "value": [ + "VIOLATION", + "PASS" + ], + "path": { + "dom": "/html[1]", + "aria": "/document[1]" + }, + "ruleTime": 0, + "reasonId": "Pass_0", + "message": "Rule Passed", + "messageArgs": [], + "apiArgs": [], + "bounds": { + "left": 0, + "top": 0, + "height": 600, + "width": 800 + }, + "snippet": "<html>", + "category": "Accessibility", + "ignored": false, + "level": "pass" + }, + { + "ruleId": "HAAC_Aria_Native_Host_Semantics", + "value": [ + "VIOLATION", + "PASS" + ], + "path": { + "dom": "/html[1]", + "aria": "/document[1]" + }, + "ruleTime": 0, + "reasonId": "Pass_0", + "message": "Rule Passed", + "messageArgs": [], + "apiArgs": [], + "bounds": { + "left": 0, + "top": 0, + "height": 600, + "width": 800 + }, + "snippet": "<html>", + "category": "Accessibility", + "ignored": false, + "level": "pass" + }, + { + "ruleId": "HAAC_BackgroundImg_HasTextOrTitle", + "value": [ + "RECOMMENDATION", + "PASS" + ], + "path": { + "dom": "/html[1]/head[1]", + "aria": "/document[1]" + }, + "ruleTime": 0, + "reasonId": "Pass_0", + "message": "Rule Passed", + "messageArgs": [], + "apiArgs": [], + "bounds": { + "left": 0, + "top": 0, + "height": 0, + "width": 0 + }, + "snippet": "<head>", + "category": "Accessibility", + "ignored": false, + "level": "pass" + }, + { + "ruleId": "Rpt_Aria_OrphanedContent_Native_Host_Sematics", + "value": [ + "VIOLATION", + "PASS" + ], + "path": { + "dom": "/html[1]/head[1]", + "aria": "/document[1]" + }, + "ruleTime": 0, + "reasonId": "Pass_0", + "message": "Rule Passed", + "messageArgs": [], + "apiArgs": [], + "bounds": { + "left": 0, + "top": 0, + "height": 0, + "width": 0 + }, + "snippet": "<head>", + "category": "Accessibility", + "ignored": false, + "level": "pass" + }, + { + "ruleId": "RPT_List_UseMarkup", + "value": [ + "VIOLATION", + "PASS" + ], + "path": { + "dom": "/html[1]/head[1]", + "aria": "/document[1]" + }, + "ruleTime": 0, + "reasonId": "Pass_0", + "message": "Rule Passed", + "messageArgs": [], + "apiArgs": [], + "bounds": { + "left": 0, + "top": 0, + "height": 0, + "width": 0 + }, + "snippet": "<head>", + "category": "Accessibility", + "ignored": false, + "level": "pass" + }, + { + "ruleId": "RPT_Text_SensoryReference", + "value": [ + "VIOLATION", + "PASS" + ], + "path": { + "dom": "/html[1]/head[1]", + "aria": "/document[1]" + }, + "ruleTime": 0, + "reasonId": "Pass_0", + "message": "Rule Passed", + "messageArgs": [], + "apiArgs": [], + "bounds": { + "left": 0, + "top": 0, + "height": 0, + "width": 0 + }, + "snippet": "<head>", + "category": "Accessibility", + "ignored": false, + "level": "pass" + }, + { + "ruleId": "WCAG20_Text_Emoticons", + "value": [ + "VIOLATION", + "PASS" + ], + "path": { + "dom": "/html[1]/head[1]", + "aria": "/document[1]" + }, + "ruleTime": 0, + "reasonId": "Pass_0", + "message": "Rule Passed", + "messageArgs": [], + "apiArgs": [], + "bounds": { + "left": 0, + "top": 0, + "height": 0, + "width": 0 + }, + "snippet": "<head>", + "category": "Accessibility", + "ignored": false, + "level": "pass" + }, + { + "ruleId": "WCAG20_Text_LetterSpacing", + "value": [ + "VIOLATION", + "PASS" + ], + "path": { + "dom": "/html[1]/head[1]", + "aria": "/document[1]" + }, + "ruleTime": 0, + "reasonId": "Pass_0", + "message": "Rule Passed", + "messageArgs": [], + "apiArgs": [], + "bounds": { + "left": 0, + "top": 0, + "height": 0, + "width": 0 + }, + "snippet": "<head>", + "category": "Accessibility", + "ignored": false, + "level": "pass" + }, + { + "ruleId": "text_quoted_correctly", + "value": [ + "VIOLATION", + "PASS" + ], + "path": { + "dom": "/html[1]/head[1]", + "aria": "/document[1]" + }, + "ruleTime": 0, + "reasonId": "Pass_0", + "message": "Rule Passed", + "messageArgs": [], + "apiArgs": [], + "bounds": { + "left": 0, + "top": 0, + "height": 0, + "width": 0 + }, + "snippet": "<head>", + "category": "Accessibility", + "ignored": false, + "level": "pass" + }, + { + "ruleId": "HAAC_Aria_Native_Host_Semantics", + "value": [ + "VIOLATION", + "PASS" + ], + "path": { + "dom": "/html[1]/head[1]", + "aria": "/document[1]" + }, + "ruleTime": 0, + "reasonId": "Pass_0", + "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 0, "top": 0, - "height": 600, - "width": 800 + "height": 0, + "width": 0 }, - "snippet": "<html>", + "snippet": "<head>", "category": "Accessibility", - "level": "potentialviolation", - "ignored": true, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/html_skipnav_exists.html#%7B%22message%22%3A%22Verify%20there%20is%20a%20way%20to%20bypass%20blocks%20of%20content%20that%20are%20repeated%20on%20multiple%20Web%20pages%22%2C%22snippet%22%3A%22%3Chtml%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22POTENTIAL%22%5D%2C%22reasonId%22%3A%22Potential_1%22%2C%22ruleId%22%3A%22html_skipnav_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" + "ignored": false, + "level": "pass" }, { - "ruleId": "page_title_exists", + "ruleId": "HAAC_BackgroundImg_HasTextOrTitle", "value": [ - "VIOLATION", - "FAIL" + "RECOMMENDATION", + "PASS" ], "path": { - "dom": "/html[1]", + "dom": "/html[1]/body[1]", "aria": "/document[1]" }, "ruleTime": 0, - "reasonId": "Fail_2", - "message": "Missing <title> element in <head> element", + "reasonId": "Pass_0", + "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { - "left": 0, - "top": 0, - "height": 600, - "width": 800 + "left": 8, + "top": 8, + "height": 584, + "width": 784 }, - "snippet": "<html>", + "snippet": "<body>", "category": "Accessibility", - "level": "violation", - "ignored": true, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/page_title_exists.html#%7B%22message%22%3A%22Missing%20%3Ctitle%3E%20element%20in%20%3Chead%3E%20element%22%2C%22snippet%22%3A%22%3Chtml%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22FAIL%22%5D%2C%22reasonId%22%3A%22Fail_2%22%2C%22ruleId%22%3A%22page_title_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" + "ignored": false, + "level": "pass" }, { - "ruleId": "aria_content_in_landmark", + "ruleId": "Rpt_Aria_OrphanedContent_Native_Host_Sematics", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]", + "dom": "/html[1]/body[1]", "aria": "/document[1]" }, - "ruleTime": 1, + "ruleTime": 0, "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { - "left": 0, - "top": 0, - "height": 600, - "width": 800 + "left": 8, + "top": 8, + "height": 584, + "width": 784 }, - "snippet": "<html>", + "snippet": "<body>", "category": "Accessibility", - "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Chtml%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" + "level": "pass" }, { - "ruleId": "img_alt_background", + "ruleId": "RPT_List_UseMarkup", "value": [ - "RECOMMENDATION", + "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]", + "dom": "/html[1]/body[1]", "aria": "/document[1]" }, "ruleTime": 0, @@ -124,25 +640,24 @@ "messageArgs": [], "apiArgs": [], "bounds": { - "left": 0, - "top": 0, - "height": 600, - "width": 800 + "left": 8, + "top": 8, + "height": 584, + "width": 784 }, - "snippet": "<html>", + "snippet": "<body>", "category": "Accessibility", - "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_background.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Chtml%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_background%22%2C%22msgArgs%22%3A%5B%5D%7D" + "level": "pass" }, { - "ruleId": "aria_content_in_landmark", + "ruleId": "RPT_Text_SensoryReference", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/head[1]", + "dom": "/html[1]/body[1]", "aria": "/document[1]" }, "ruleTime": 0, @@ -151,30 +666,29 @@ "messageArgs": [], "apiArgs": [], "bounds": { - "left": 0, - "top": 0, - "height": 0, - "width": 0 + "left": 8, + "top": 8, + "height": 584, + "width": 784 }, - "snippet": "<head>", + "snippet": "<body>", "category": "Accessibility", - "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Chead%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" + "level": "pass" }, { - "ruleId": "skip_main_exists", + "ruleId": "WCAG20_Text_Emoticons", "value": [ "VIOLATION", - "FAIL" + "PASS" ], "path": { "dom": "/html[1]/body[1]", "aria": "/document[1]" }, "ruleTime": 0, - "reasonId": "Fail_1", - "message": "The page does not provide a way to quickly navigate to the main content (ARIA \"main\" landmark or a skip link)", + "reasonId": "Pass_0", + "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { @@ -185,12 +699,11 @@ }, "snippet": "<body>", "category": "Accessibility", - "level": "violation", - "ignored": true, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/skip_main_exists.html#%7B%22message%22%3A%22The%20page%20does%20not%20provide%20a%20way%20to%20quickly%20navigate%20to%20the%20main%20content%20(ARIA%20%5C%22main%5C%22%20landmark%20or%20a%20skip%20link)%22%2C%22snippet%22%3A%22%3Cbody%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22FAIL%22%5D%2C%22reasonId%22%3A%22Fail_1%22%2C%22ruleId%22%3A%22skip_main_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" + "ignored": false, + "level": "pass" }, { - "ruleId": "aria_content_in_landmark", + "ruleId": "WCAG20_Text_LetterSpacing", "value": [ "VIOLATION", "PASS" @@ -199,7 +712,7 @@ "dom": "/html[1]/body[1]", "aria": "/document[1]" }, - "ruleTime": 1, + "ruleTime": 0, "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], @@ -212,14 +725,13 @@ }, "snippet": "<body>", "category": "Accessibility", - "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cbody%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" + "level": "pass" }, { - "ruleId": "img_alt_background", + "ruleId": "text_quoted_correctly", "value": [ - "RECOMMENDATION", + "VIOLATION", "PASS" ], "path": { @@ -239,12 +751,11 @@ }, "snippet": "<body>", "category": "Accessibility", - "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_background.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cbody%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_background%22%2C%22msgArgs%22%3A%5B%5D%7D" + "level": "pass" }, { - "ruleId": "text_quoted_correctly", + "ruleId": "IBMA_Color_Contrast_WCAG2AA_PV", "value": [ "VIOLATION", "PASS" @@ -266,12 +777,11 @@ }, "snippet": "<body>", "category": "Accessibility", - "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_quoted_correctly.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cbody%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22text_quoted_correctly%22%2C%22msgArgs%22%3A%5B%5D%7D" + "level": "pass" }, { - "ruleId": "text_whitespace_valid", + "ruleId": "HAAC_Aria_Native_Host_Semantics", "value": [ "VIOLATION", "PASS" @@ -281,7 +791,7 @@ "aria": "/document[1]" }, "ruleTime": 0, - "reasonId": "pass", + "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], @@ -293,12 +803,11 @@ }, "snippet": "<body>", "category": "Accessibility", - "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_whitespace_valid.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cbody%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22text_whitespace_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" + "level": "pass" }, { - "ruleId": "img_alt_misuse", + "ruleId": "RPT_Img_AltCommonMisuse", "value": [ "VIOLATION", "PASS" @@ -314,45 +823,69 @@ "apiArgs": [], "bounds": { "left": 8, - "top": 23, + "top": 22, + "height": 0, + "width": 0 + }, + "snippet": "<img src=\"fail.png\">", + "category": "Accessibility", + "ignored": false, + "level": "pass" + }, + { + "ruleId": "HAAC_BackgroundImg_HasTextOrTitle", + "value": [ + "RECOMMENDATION", + "PASS" + ], + "path": { + "dom": "/html[1]/body[1]/img[1]", + "aria": "/document[1]/img[1]" + }, + "ruleTime": 0, + "reasonId": "Pass_0", + "message": "Rule Passed", + "messageArgs": [], + "apiArgs": [], + "bounds": { + "left": 8, + "top": 22, "height": 0, "width": 0 }, "snippet": "<img src=\"fail.png\">", "category": "Accessibility", - "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_misuse.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_misuse%22%2C%22msgArgs%22%3A%5B%5D%7D" + "level": "pass" }, { - "ruleId": "img_alt_valid", + "ruleId": "Rpt_Aria_OrphanedContent_Native_Host_Sematics", "value": [ "VIOLATION", - "FAIL" + "PASS" ], "path": { "dom": "/html[1]/body[1]/img[1]", "aria": "/document[1]/img[1]" }, "ruleTime": 0, - "reasonId": "fail_no_alt", - "message": "The image has neither an accessible name nor is marked as decorative or redundant", + "reasonId": "Pass_0", + "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 23, + "top": 22, "height": 0, "width": 0 }, "snippet": "<img src=\"fail.png\">", "category": "Accessibility", - "level": "violation", - "ignored": true, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_valid.html#%7B%22message%22%3A%22The%20image%20has%20neither%20an%20accessible%20name%20nor%20is%20marked%20as%20decorative%20or%20redundant%22%2C%22snippet%22%3A%22%3Cimg%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22FAIL%22%5D%2C%22reasonId%22%3A%22fail_no_alt%22%2C%22ruleId%22%3A%22img_alt_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" + "ignored": false, + "level": "pass" }, { - "ruleId": "aria_content_in_landmark", + "ruleId": "RPT_List_UseMarkup", "value": [ "VIOLATION", "PASS" @@ -361,27 +894,78 @@ "dom": "/html[1]/body[1]/img[1]", "aria": "/document[1]/img[1]" }, - "ruleTime": 1, + "ruleTime": 0, "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 23, + "top": 22, "height": 0, "width": 0 }, "snippet": "<img src=\"fail.png\">", "category": "Accessibility", - "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" + "level": "pass" }, { - "ruleId": "img_alt_background", + "ruleId": "RPT_Text_SensoryReference", "value": [ - "RECOMMENDATION", + "VIOLATION", + "PASS" + ], + "path": { + "dom": "/html[1]/body[1]/img[1]", + "aria": "/document[1]/img[1]" + }, + "ruleTime": 0, + "reasonId": "Pass_0", + "message": "Rule Passed", + "messageArgs": [], + "apiArgs": [], + "bounds": { + "left": 8, + "top": 22, + "height": 0, + "width": 0 + }, + "snippet": "<img src=\"fail.png\">", + "category": "Accessibility", + "ignored": false, + "level": "pass" + }, + { + "ruleId": "WCAG20_Text_Emoticons", + "value": [ + "VIOLATION", + "PASS" + ], + "path": { + "dom": "/html[1]/body[1]/img[1]", + "aria": "/document[1]/img[1]" + }, + "ruleTime": 0, + "reasonId": "Pass_0", + "message": "Rule Passed", + "messageArgs": [], + "apiArgs": [], + "bounds": { + "left": 8, + "top": 22, + "height": 0, + "width": 0 + }, + "snippet": "<img src=\"fail.png\">", + "category": "Accessibility", + "ignored": false, + "level": "pass" + }, + { + "ruleId": "WCAG20_Text_LetterSpacing", + "value": [ + "VIOLATION", "PASS" ], "path": { @@ -395,15 +979,14 @@ "apiArgs": [], "bounds": { "left": 8, - "top": 23, + "top": 22, "height": 0, "width": 0 }, "snippet": "<img src=\"fail.png\">", "category": "Accessibility", - "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_background.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_background%22%2C%22msgArgs%22%3A%5B%5D%7D" + "level": "pass" }, { "ruleId": "text_quoted_correctly", @@ -422,18 +1005,17 @@ "apiArgs": [], "bounds": { "left": 8, - "top": 23, + "top": 22, "height": 0, "width": 0 }, "snippet": "<img src=\"fail.png\">", "category": "Accessibility", - "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_quoted_correctly.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22text_quoted_correctly%22%2C%22msgArgs%22%3A%5B%5D%7D" + "level": "pass" }, { - "ruleId": "text_whitespace_valid", + "ruleId": "IBMA_Color_Contrast_WCAG2AA_PV", "value": [ "VIOLATION", "PASS" @@ -443,24 +1025,23 @@ "aria": "/document[1]/img[1]" }, "ruleTime": 0, - "reasonId": "pass", + "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 23, + "top": 22, "height": 0, "width": 0 }, "snippet": "<img src=\"fail.png\">", "category": "Accessibility", - "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_whitespace_valid.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22text_whitespace_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" + "level": "pass" }, { - "ruleId": "aria_descendant_valid", + "ruleId": "HAAC_Aria_Native_Host_Semantics", "value": [ "VIOLATION", "PASS" @@ -470,24 +1051,23 @@ "aria": "/document[1]/img[1]" }, "ruleTime": 0, - "reasonId": "pass", - "message": "The element contains valid descendants", + "reasonId": "Pass_0", + "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 23, + "top": 22, "height": 0, "width": 0 }, "snippet": "<img src=\"fail.png\">", "category": "Accessibility", - "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_descendant_valid.html#%7B%22message%22%3A%22The%20element%20contains%20valid%20descendants%22%2C%22snippet%22%3A%22%3Cimg%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22aria_descendant_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" + "level": "pass" }, { - "ruleId": "img_alt_misuse", + "ruleId": "RPT_Img_AltCommonMisuse", "value": [ "VIOLATION", "PASS" @@ -503,45 +1083,95 @@ "apiArgs": [], "bounds": { "left": 12, - "top": 23, + "top": 22, + "height": 0, + "width": 0 + }, + "snippet": "<img src=\"fail.png\">", + "category": "Accessibility", + "ignored": false, + "level": "pass" + }, + { + "ruleId": "HAAC_BackgroundImg_HasTextOrTitle", + "value": [ + "RECOMMENDATION", + "PASS" + ], + "path": { + "dom": "/html[1]/body[1]/img[2]", + "aria": "/document[1]/img[2]" + }, + "ruleTime": 0, + "reasonId": "Pass_0", + "message": "Rule Passed", + "messageArgs": [], + "apiArgs": [], + "bounds": { + "left": 12, + "top": 22, "height": 0, "width": 0 }, "snippet": "<img src=\"fail.png\">", "category": "Accessibility", - "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_misuse.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_misuse%22%2C%22msgArgs%22%3A%5B%5D%7D" + "level": "pass" }, { - "ruleId": "img_alt_valid", + "ruleId": "Rpt_Aria_OrphanedContent_Native_Host_Sematics", "value": [ "VIOLATION", - "FAIL" + "PASS" + ], + "path": { + "dom": "/html[1]/body[1]/img[2]", + "aria": "/document[1]/img[2]" + }, + "ruleTime": 0, + "reasonId": "Pass_0", + "message": "Rule Passed", + "messageArgs": [], + "apiArgs": [], + "bounds": { + "left": 12, + "top": 22, + "height": 0, + "width": 0 + }, + "snippet": "<img src=\"fail.png\">", + "category": "Accessibility", + "ignored": false, + "level": "pass" + }, + { + "ruleId": "RPT_List_UseMarkup", + "value": [ + "VIOLATION", + "PASS" ], "path": { "dom": "/html[1]/body[1]/img[2]", "aria": "/document[1]/img[2]" }, "ruleTime": 0, - "reasonId": "fail_no_alt", - "message": "The image has neither an accessible name nor is marked as decorative or redundant", + "reasonId": "Pass_0", + "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 12, - "top": 23, + "top": 22, "height": 0, "width": 0 }, "snippet": "<img src=\"fail.png\">", "category": "Accessibility", - "level": "violation", - "ignored": true, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_valid.html#%7B%22message%22%3A%22The%20image%20has%20neither%20an%20accessible%20name%20nor%20is%20marked%20as%20decorative%20or%20redundant%22%2C%22snippet%22%3A%22%3Cimg%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22FAIL%22%5D%2C%22reasonId%22%3A%22fail_no_alt%22%2C%22ruleId%22%3A%22img_alt_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" + "ignored": false, + "level": "pass" }, { - "ruleId": "aria_content_in_landmark", + "ruleId": "RPT_Text_SensoryReference", "value": [ "VIOLATION", "PASS" @@ -557,20 +1187,45 @@ "apiArgs": [], "bounds": { "left": 12, - "top": 23, + "top": 22, "height": 0, "width": 0 }, "snippet": "<img src=\"fail.png\">", "category": "Accessibility", - "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" + "level": "pass" }, { - "ruleId": "img_alt_background", + "ruleId": "WCAG20_Text_Emoticons", "value": [ - "RECOMMENDATION", + "VIOLATION", + "PASS" + ], + "path": { + "dom": "/html[1]/body[1]/img[2]", + "aria": "/document[1]/img[2]" + }, + "ruleTime": 0, + "reasonId": "Pass_0", + "message": "Rule Passed", + "messageArgs": [], + "apiArgs": [], + "bounds": { + "left": 12, + "top": 22, + "height": 0, + "width": 0 + }, + "snippet": "<img src=\"fail.png\">", + "category": "Accessibility", + "ignored": false, + "level": "pass" + }, + { + "ruleId": "WCAG20_Text_LetterSpacing", + "value": [ + "VIOLATION", "PASS" ], "path": { @@ -584,15 +1239,14 @@ "apiArgs": [], "bounds": { "left": 12, - "top": 23, + "top": 22, "height": 0, "width": 0 }, "snippet": "<img src=\"fail.png\">", "category": "Accessibility", - "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_background.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_background%22%2C%22msgArgs%22%3A%5B%5D%7D" + "level": "pass" }, { "ruleId": "text_quoted_correctly", @@ -611,18 +1265,17 @@ "apiArgs": [], "bounds": { "left": 12, - "top": 23, + "top": 22, "height": 0, "width": 0 }, "snippet": "<img src=\"fail.png\">", "category": "Accessibility", - "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_quoted_correctly.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22text_quoted_correctly%22%2C%22msgArgs%22%3A%5B%5D%7D" + "level": "pass" }, { - "ruleId": "text_whitespace_valid", + "ruleId": "IBMA_Color_Contrast_WCAG2AA_PV", "value": [ "VIOLATION", "PASS" @@ -632,24 +1285,23 @@ "aria": "/document[1]/img[2]" }, "ruleTime": 0, - "reasonId": "pass", + "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 12, - "top": 23, + "top": 22, "height": 0, "width": 0 }, "snippet": "<img src=\"fail.png\">", "category": "Accessibility", - "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_whitespace_valid.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22text_whitespace_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" + "level": "pass" }, { - "ruleId": "aria_descendant_valid", + "ruleId": "HAAC_Aria_Native_Host_Semantics", "value": [ "VIOLATION", "PASS" @@ -659,89 +1311,84 @@ "aria": "/document[1]/img[2]" }, "ruleTime": 0, - "reasonId": "pass", - "message": "The element contains valid descendants", + "reasonId": "Pass_0", + "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 12, - "top": 23, + "top": 22, "height": 0, "width": 0 }, "snippet": "<img src=\"fail.png\">", "category": "Accessibility", - "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_descendant_valid.html#%7B%22message%22%3A%22The%20element%20contains%20valid%20descendants%22%2C%22snippet%22%3A%22%3Cimg%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22aria_descendant_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" + "level": "pass" } ], - "numExecuted": 25, - "ruleTime": 3, + "numExecuted": 52, "nls": { - "html_lang_exists": { - "0": "Page must identify the default language of the document with a 'lang' attribute", + "WCAG20_Html_HasLang": { "Fail_3": "Page detected as HTML, but does not have a 'lang' attribute" }, - "html_skipnav_exists": { - "0": "Provide a way to bypass blocks of content that are repeated on multiple Web pages", + "RPT_Html_SkipNav": { "Potential_1": "Verify there is a way to bypass blocks of content that are repeated on multiple Web pages" }, - "page_title_exists": { - "0": "The page should have a title that correctly identifies the subject of the page", + "WCAG20_Doc_HasTitle": { "Fail_2": "Missing <title> element in <head> element" }, - "aria_content_in_landmark": { - "0": "All content must reside within an element with a landmark role", + "HAAC_BackgroundImg_HasTextOrTitle": { "Pass_0": "Rule Passed" }, - "img_alt_background": { - "0": "Background images that convey important information must have a text alternative that describes the image", + "Rpt_Aria_OrphanedContent_Native_Host_Sematics": { "Pass_0": "Rule Passed" }, - "skip_main_exists": { - "0": "Pages must provide a way to skip directly to the main content", - "Fail_1": "The page does not provide a way to quickly navigate to the main content (ARIA \"main\" landmark or a skip link)" + "RPT_List_UseMarkup": { + "Pass_0": "Rule Passed" + }, + "RPT_Text_SensoryReference": { + "Pass_0": "Rule Passed" + }, + "WCAG20_Text_Emoticons": { + "Pass_0": "Rule Passed" + }, + "WCAG20_Text_LetterSpacing": { + "Pass_0": "Rule Passed" }, "text_quoted_correctly": { - "0": "Quotations should be marked with <q> or <blockquote> elements", "Pass_0": "Rule Passed" }, - "text_whitespace_valid": { - "0": "Space characters should not be used to control spacing within a word", - "pass": "Rule Passed" + "IBMA_Color_Contrast_WCAG2AA_PV": { + "Pass_0": "Rule Passed" }, - "img_alt_misuse": { - "0": "'alt' attribute value must be a good inline replacement for the image", + "HAAC_Aria_Native_Host_Semantics": { "Pass_0": "Rule Passed" }, - "img_alt_valid": { - "0": "Images must have accessible names unless they are decorative or redundant", - "fail_no_alt": "The image has neither an accessible name nor is marked as decorative or redundant" + "WCAG20_Body_FirstASkips_Native_Host_Sematics": { + "Fail_1": "The page does not provide a way to quickly navigate to the main content (ARIA \"main\" landmark or a skip link)" + }, + "WCAG20_Img_HasAlt": { + "Fail_2": "Image does not have an 'alt' attribute short text alternative" }, - "aria_descendant_valid": { - "0": "Browsers ignore the explicit and implicit ARIA roles of the descendants of certain elements", - "pass": "The element contains valid descendants" + "RPT_Img_AltCommonMisuse": { + "Pass_0": "Rule Passed" } }, "summary": { "counts": { - "ignored": 6, - "elements": 5, - "elementsViolation": 0, - "elementsViolationReview": 0, - "violation": 0, - "potentialviolation": 0, + "violation": 5, + "potentialviolation": 1, "recommendation": 0, "potentialrecommendation": 0, "manual": 0, - "pass": 19 + "pass": 46, + "ignored": 0 }, - "scanTime": 34, - "ruleArchive": "Preview Rules (preview)", + "scanTime": 5, + "ruleArchive": "", "policies": [ - "IBM_Accessibility", - "WCAG_2_2" + "IBM_Accessibility" ], "reportLevels": [ "violation", @@ -751,10 +1398,10 @@ "manual", "pass" ], - "startScan": 1732551895968, + "startScan": 1582566852099, "URL": "data:text/html;charset=utf-8,%3C!--%0A%20%20%20%20%20%2F******************************************************************************%0A%20%20%20%20%20Copyright%3A%3A%202020-%20IBM%2C%20Inc%0A%0A%20%20%20%20Licensed%20under%20the%20Apache%20License%2C%20Version%202.0%20(the%20%22License%22)%3B%0A%20%20%20%20you%20may%20not%20use%20this%20file%20except%20in%20compliance%20with%20the%20License.%0A%20%20%20%20You%20may%20obtain%20a%20copy%20of%20the%20License%20at%0A%0A%20%20%20%20http%3A%2F%2Fwww.apache.org%2Flicenses%2FLICENSE-2.0%0A%0A%20%20%20%20Unless%20required%20by%20applicable%20law%20or%20agreed%20to%20in%20writing%2C%20software%0A%20%20%20%20distributed%20under%20the%20License%20is%20distributed%20on%20an%20%22AS%20IS%22%20BASIS%2C%0A%20%20%20%20WITHOUT%20WARRANTIES%20OR%20CONDITIONS%20OF%20ANY%20KIND%2C%20either%20express%20or%20implied.%0A%20%20%20%20See%20the%20License%20for%20the%20specific%20language%20governing%20permissions%20and%0A%20%20%20%20limitations%20under%20the%20License.%0A%20%20*****************************************************************************%2F%0A%0A--%3E%20%0A%3Chtml%3E%0A%20%20%20%20%3Cbody%3E%0A%20%20%20%20%20%20%20%20%3Cimg%20src%3D%22fail.png%22%3E%0A%20%20%20%20%20%20%20%20%3Cimg%20src%3D%22fail.png%22%3E%0A%20%20%20%20%3C%2Fbody%3E%0A%3C%2Fhtml%3E" }, - "scanID": "6371e2d2-3117-4468-9fb7-7d53bc205e7c", + "scanID": "00b5c4de-a980-4344-92c9-856172c4e903", "toolID": "accessibility-checker-v3.0.0", "label": "Baseline_aChecker.Baseline2.html" } \ No newline at end of file diff --git a/accessibility-checker/test/mocha/aChecker.Fast/aChecker.Baselines/aChecker.Baseline.test.js b/accessibility-checker/test/mocha/aChecker.Fast/aChecker.Baselines/aChecker.Baseline.test.js index d856de3b9..37bf99992 100644 --- a/accessibility-checker/test/mocha/aChecker.Fast/aChecker.Baselines/aChecker.Baseline.test.js +++ b/accessibility-checker/test/mocha/aChecker.Fast/aChecker.Baselines/aChecker.Baseline.test.js @@ -76,7 +76,7 @@ describe("Baseline testing", function () { var labelName = unitTestFile.substring(Math.max(unitTestFile.lastIndexOf("/"), unitTestFile.lastIndexOf("\\")) + 1); // Perform the accessibility scan using the IBMaScan Wrapper let result = await aChecker.getCompliance(unitTestDataFileContent, "Baseline_" + labelName); - let assertVal = aChecker.assertCompliance(result.report);console.log("report="+JSON.stringify(result.report)); + let assertVal = aChecker.assertCompliance(result.report); if (assertVal !== codes[unitTestFile]) { console.log("inspect result", util.inspect(result.report, null, 6)); } From fea29b23040f7efc83116d85e6f54c91352590dd Mon Sep 17 00:00:00 2001 From: Shunguo <shunguoy@us.ibm.com> Date: Sun, 1 Dec 2024 19:47:56 -0600 Subject: [PATCH 08/18] Update Baseline_aChecker.Baseline.html.json --- .../Baseline_aChecker.Baseline.html.json | 106 ++++++------------ 1 file changed, 36 insertions(+), 70 deletions(-) diff --git a/accessibility-checker/test/baselines/Baseline_aChecker.Baseline.html.json b/accessibility-checker/test/baselines/Baseline_aChecker.Baseline.html.json index 67d335c32..25a6c138c 100644 --- a/accessibility-checker/test/baselines/Baseline_aChecker.Baseline.html.json +++ b/accessibility-checker/test/baselines/Baseline_aChecker.Baseline.html.json @@ -23,8 +23,8 @@ }, "snippet": "<html>", "category": "Accessibility", - "ignored": true, "level": "violation", + "ignored": true, "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/html_lang_exists.html#%7B%22message%22%3A%22Page%20detected%20as%20HTML%2C%20but%20does%20not%20have%20a%20'lang'%20attribute%22%2C%22snippet%22%3A%22%3Chtml%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22FAIL%22%5D%2C%22reasonId%22%3A%22Fail_3%22%2C%22ruleId%22%3A%22html_lang_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -50,8 +50,8 @@ }, "snippet": "<html>", "category": "Accessibility", - "ignored": true, "level": "potentialviolation", + "ignored": true, "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/html_skipnav_exists.html#%7B%22message%22%3A%22Verify%20there%20is%20a%20way%20to%20bypass%20blocks%20of%20content%20that%20are%20repeated%20on%20multiple%20Web%20pages%22%2C%22snippet%22%3A%22%3Chtml%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22POTENTIAL%22%5D%2C%22reasonId%22%3A%22Potential_1%22%2C%22ruleId%22%3A%22html_skipnav_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -77,8 +77,8 @@ }, "snippet": "<html>", "category": "Accessibility", - "ignored": true, "level": "violation", + "ignored": true, "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/page_title_exists.html#%7B%22message%22%3A%22Missing%20%3Ctitle%3E%20element%20in%20%3Chead%3E%20element%22%2C%22snippet%22%3A%22%3Chtml%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22FAIL%22%5D%2C%22reasonId%22%3A%22Fail_2%22%2C%22ruleId%22%3A%22page_title_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -91,7 +91,7 @@ "dom": "/html[1]", "aria": "/document[1]" }, - "ruleTime": 0, + "ruleTime": 1, "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], @@ -104,8 +104,8 @@ }, "snippet": "<html>", "category": "Accessibility", - "ignored": false, "level": "pass", + "ignored": false, "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Chtml%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -131,8 +131,8 @@ }, "snippet": "<html>", "category": "Accessibility", - "ignored": false, "level": "pass", + "ignored": false, "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_background.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Chtml%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_background%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -158,8 +158,8 @@ }, "snippet": "<head>", "category": "Accessibility", - "ignored": false, "level": "pass", + "ignored": false, "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Chead%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -172,7 +172,7 @@ "dom": "/html[1]/body[1]", "aria": "/document[1]" }, - "ruleTime": 0, + "ruleTime": 1, "reasonId": "Fail_1", "message": "The page does not provide a way to quickly navigate to the main content (ARIA \"main\" landmark or a skip link)", "messageArgs": [], @@ -185,8 +185,8 @@ }, "snippet": "<body>", "category": "Accessibility", - "ignored": true, "level": "violation", + "ignored": true, "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/skip_main_exists.html#%7B%22message%22%3A%22The%20page%20does%20not%20provide%20a%20way%20to%20quickly%20navigate%20to%20the%20main%20content%20(ARIA%20%5C%22main%5C%22%20landmark%20or%20a%20skip%20link)%22%2C%22snippet%22%3A%22%3Cbody%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22FAIL%22%5D%2C%22reasonId%22%3A%22Fail_1%22%2C%22ruleId%22%3A%22skip_main_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -212,8 +212,8 @@ }, "snippet": "<body>", "category": "Accessibility", - "ignored": false, "level": "pass", + "ignored": false, "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cbody%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -239,8 +239,8 @@ }, "snippet": "<body>", "category": "Accessibility", - "ignored": false, "level": "pass", + "ignored": false, "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_background.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cbody%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_background%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -253,7 +253,7 @@ "dom": "/html[1]/body[1]", "aria": "/document[1]" }, - "ruleTime": 1, + "ruleTime": 0, "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], @@ -266,8 +266,8 @@ }, "snippet": "<body>", "category": "Accessibility", - "ignored": false, "level": "pass", + "ignored": false, "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_quoted_correctly.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cbody%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22text_quoted_correctly%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -280,7 +280,7 @@ "dom": "/html[1]/body[1]", "aria": "/document[1]" }, - "ruleTime": 1, + "ruleTime": 0, "reasonId": "pass", "message": "Rule Passed", "messageArgs": [], @@ -293,8 +293,8 @@ }, "snippet": "<body>", "category": "Accessibility", - "ignored": false, "level": "pass", + "ignored": false, "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_whitespace_valid.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cbody%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22text_whitespace_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -320,8 +320,8 @@ }, "snippet": "<img id=\"ace\" src=\"fail.png\">", "category": "Accessibility", - "ignored": false, "level": "pass", + "ignored": false, "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_misuse.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20id%3D%5C%22ace%5C%22%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_misuse%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -347,8 +347,8 @@ }, "snippet": "<img id=\"ace\" src=\"fail.png\">", "category": "Accessibility", - "ignored": true, "level": "violation", + "ignored": true, "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_valid.html#%7B%22message%22%3A%22The%20image%20has%20neither%20an%20accessible%20name%20nor%20is%20marked%20as%20decorative%20or%20redundant%22%2C%22snippet%22%3A%22%3Cimg%20id%3D%5C%22ace%5C%22%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22FAIL%22%5D%2C%22reasonId%22%3A%22fail_no_alt%22%2C%22ruleId%22%3A%22img_alt_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -374,8 +374,8 @@ }, "snippet": "<img id=\"ace\" src=\"fail.png\">", "category": "Accessibility", - "ignored": false, "level": "pass", + "ignored": false, "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20id%3D%5C%22ace%5C%22%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -388,7 +388,7 @@ "dom": "/html[1]/body[1]/img[1]", "aria": "/document[1]/img[1]" }, - "ruleTime": 0, + "ruleTime": 1, "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], @@ -401,8 +401,8 @@ }, "snippet": "<img id=\"ace\" src=\"fail.png\">", "category": "Accessibility", - "ignored": false, "level": "pass", + "ignored": false, "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/element_id_unique.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20id%3D%5C%22ace%5C%22%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22element_id_unique%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -428,8 +428,8 @@ }, "snippet": "<img id=\"ace\" src=\"fail.png\">", "category": "Accessibility", - "ignored": false, "level": "pass", + "ignored": false, "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_background.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20id%3D%5C%22ace%5C%22%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_background%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -455,8 +455,8 @@ }, "snippet": "<img id=\"ace\" src=\"fail.png\">", "category": "Accessibility", - "ignored": false, "level": "pass", + "ignored": false, "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_quoted_correctly.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20id%3D%5C%22ace%5C%22%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22text_quoted_correctly%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { @@ -482,39 +482,9 @@ }, "snippet": "<img id=\"ace\" src=\"fail.png\">", "category": "Accessibility", - "ignored": false, "level": "pass", - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_whitespace_valid.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20id%3D%5C%22ace%5C%22%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22text_whitespace_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" - }, - { - "ruleId": "aria_accessiblename_exists", - "value": [ - "RECOMMENDATION", - "FAIL" - ], - "path": { - "dom": "/html[1]/body[1]/img[1]", - "aria": "/document[1]/img[1]" - }, - "ruleTime": 0, - "reasonId": "fail_no_accessible_name", - "message": "Element <img> with \"img\" role has no accessible name", - "messageArgs": [ - "img", - "img" - ], - "apiArgs": [], - "bounds": { - "left": 8, - "top": 8, - "height": 0, - "width": 0 - }, - "snippet": "<img id=\"ace\" src=\"fail.png\">", - "category": "Accessibility", "ignored": false, - "level": "recommendation", - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_accessiblename_exists.html#%7B%22message%22%3A%22Element%20%3Cimg%3E%20with%20%5C%22img%5C%22%20role%20has%20no%20accessible%20name%22%2C%22snippet%22%3A%22%3Cimg%20id%3D%5C%22ace%5C%22%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22FAIL%22%5D%2C%22reasonId%22%3A%22fail_no_accessible_name%22%2C%22ruleId%22%3A%22aria_accessiblename_exists%22%2C%22msgArgs%22%3A%5B%22img%22%2C%22img%22%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_whitespace_valid.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cimg%20id%3D%5C%22ace%5C%22%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22text_whitespace_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { "ruleId": "aria_descendant_valid", @@ -526,7 +496,7 @@ "dom": "/html[1]/body[1]/img[1]", "aria": "/document[1]/img[1]" }, - "ruleTime": 0, + "ruleTime": 1, "reasonId": "pass", "message": "The element contains valid descendants", "messageArgs": [], @@ -539,13 +509,13 @@ }, "snippet": "<img id=\"ace\" src=\"fail.png\">", "category": "Accessibility", - "ignored": false, "level": "pass", + "ignored": false, "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_descendant_valid.html#%7B%22message%22%3A%22The%20element%20contains%20valid%20descendants%22%2C%22snippet%22%3A%22%3Cimg%20id%3D%5C%22ace%5C%22%20src%3D%5C%22fail.png%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22aria_descendant_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" } ], - "numExecuted": 20, - "ruleTime": 2, + "numExecuted": 19, + "ruleTime": 4, "nls": { "html_lang_exists": { "0": "Page must identify the default language of the document with a 'lang' attribute", @@ -591,10 +561,6 @@ "0": "Element 'id' attribute values must be unique within a document", "Pass_0": "Rule Passed" }, - "aria_accessiblename_exists": { - "0": "Elements with certain roles should have accessible names", - "fail_no_accessible_name": "Element <{0}> with \"{1}\" role has no accessible name" - }, "aria_descendant_valid": { "0": "Browsers ignore the explicit and implicit ARIA roles of the descendants of certain elements", "pass": "The element contains valid descendants" @@ -602,18 +568,18 @@ }, "summary": { "counts": { + "ignored": 5, + "elements": 4, + "elementsViolation": 0, + "elementsViolationReview": 0, "violation": 0, "potentialviolation": 0, - "recommendation": 1, + "recommendation": 0, "potentialrecommendation": 0, "manual": 0, - "pass": 14, - "ignored": 5, - "elements": 4, - "elementsViolation": 0, - "elementsViolationReview": 0 + "pass": 14 }, - "scanTime": 28, + "scanTime": 41, "ruleArchive": "Preview Rules (preview)", "policies": [ "IBM_Accessibility", @@ -627,10 +593,10 @@ "manual", "pass" ], - "startScan": 1729695667976, + "startScan": 1733103906113, "URL": "data:text/html;charset=utf-8,%3C!--%0A%20%20%20%20%20%2F******************************************************************************%0A%20%20%20%20%20Copyright%3A%3A%202020-%20IBM%2C%20Inc%0A%0A%20%20%20%20Licensed%20under%20the%20Apache%20License%2C%20Version%202.0%20(the%20%22License%22)%3B%0A%20%20%20%20you%20may%20not%20use%20this%20file%20except%20in%20compliance%20with%20the%20License.%0A%20%20%20%20You%20may%20obtain%20a%20copy%20of%20the%20License%20at%0A%0A%20%20%20%20http%3A%2F%2Fwww.apache.org%2Flicenses%2FLICENSE-2.0%0A%0A%20%20%20%20Unless%20required%20by%20applicable%20law%20or%20agreed%20to%20in%20writing%2C%20software%0A%20%20%20%20distributed%20under%20the%20License%20is%20distributed%20on%20an%20%22AS%20IS%22%20BASIS%2C%0A%20%20%20%20WITHOUT%20WARRANTIES%20OR%20CONDITIONS%20OF%20ANY%20KIND%2C%20either%20express%20or%20implied.%0A%20%20%20%20See%20the%20License%20for%20the%20specific%20language%20governing%20permissions%20and%0A%20%20%20%20limitations%20under%20the%20License.%0A%20%20*****************************************************************************%2F%0A%0A--%3E%20%20%20%20%0A%20%20%20%20%3Chtml%3E%0A%20%20%20%20%3Cbody%3E%0A%20%20%20%20%20%20%20%20%3Cimg%20src%3D%22fail.png%22%20id%3D%22ace%22%3E%0A%20%20%20%20%3C%2Fbody%3E%0A%3C%2Fhtml%3E" }, - "scanID": "773dc15c-5eb9-43e3-886c-4a0c472ab819", + "scanID": "e069e82d-c157-4c5d-9ba5-bf8f5346c8ec", "toolID": "accessibility-checker-v3.0.0", "label": "Baseline_aChecker.Baseline.html" } \ No newline at end of file From 7dce8dd60561ba131963f386fe1756a64633a3fc Mon Sep 17 00:00:00 2001 From: Shunguo <shunguoy@us.ibm.com> Date: Sun, 1 Dec 2024 19:57:06 -0600 Subject: [PATCH 09/18] Update JSONObjectStructureVerification.html.json --- .../JSONObjectStructureVerification.html.json | 1305 ++++++++--------- 1 file changed, 620 insertions(+), 685 deletions(-) diff --git a/accessibility-checker/test/baselines/JSONObjectStructureVerification.html.json b/accessibility-checker/test/baselines/JSONObjectStructureVerification.html.json index 7ff700c3e..67bee4836 100644 --- a/accessibility-checker/test/baselines/JSONObjectStructureVerification.html.json +++ b/accessibility-checker/test/baselines/JSONObjectStructureVerification.html.json @@ -1,72 +1,43 @@ { "results": [ { - "ruleId": "html_lang_valid", - "value": [ - "VIOLATION", - "PASS" - ], - "path": { - "dom": "/html[1]", - "aria": "/document[1]" - }, - "ruleTime": 0, - "reasonId": "Pass_0", - "message": "Lang has a valid primary lang and conforms to BCP 47", - "messageArgs": [], - "apiArgs": [], - "bounds": { - "left": 0, - "top": 0, - "height": 144, - "width": 800 - }, - "snippet": "<html lang=\"en\">", - "category": "Accessibility", - "level": "pass", - "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/html_lang_valid.html#%7B%22message%22%3A%22Lang%20has%20a%20valid%20primary%20lang%20and%20conforms%20to%20BCP%2047%22%2C%22snippet%22%3A%22%3Chtml%20lang%3D%5C%22en%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22html_lang_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" - }, - { - "ruleId": "html_lang_exists", + "ruleId": "page_title_valid", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]", + "dom": "/html[1]/head[1]/title[1]", "aria": "/document[1]" }, - "ruleTime": 0, "reasonId": "Pass_0", - "message": "Page language detected as \"en\"", + "message": "Rule Passed", "messageArgs": [ - "en" + "Helo World" ], "apiArgs": [], "bounds": { "left": 0, "top": 0, - "height": 144, - "width": 800 + "height": 0, + "width": 0 }, - "snippet": "<html lang=\"en\">", + "snippet": "<title>", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/html_lang_exists.html#%7B%22message%22%3A%22Page%20language%20detected%20as%20%5C%22en%5C%22%22%2C%22snippet%22%3A%22%3Chtml%20lang%3D%5C%22en%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22html_lang_exists%22%2C%22msgArgs%22%3A%5B%22en%22%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/page_title_valid.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Ctitle%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22page_title_valid%22%2C%22msgArgs%22%3A%5B%22Helo%20World%22%5D%7D" }, { - "ruleId": "html_skipnav_exists", + "ruleId": "aria_content_in_landmark", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]", + "dom": "/html[1]/head[1]/title[1]", "aria": "/document[1]" }, - "ruleTime": 0, "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], @@ -74,26 +45,25 @@ "bounds": { "left": 0, "top": 0, - "height": 144, - "width": 800 + "height": 0, + "width": 0 }, - "snippet": "<html lang=\"en\">", + "snippet": "<title>", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/html_skipnav_exists.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Chtml%20lang%3D%5C%22en%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22html_skipnav_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Ctitle%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "page_title_exists", + "ruleId": "aria_content_in_landmark", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]", + "dom": "/html[1]/head[1]/meta[2]", "aria": "/document[1]" }, - "ruleTime": 1, "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], @@ -101,26 +71,25 @@ "bounds": { "left": 0, "top": 0, - "height": 144, - "width": 800 + "height": 0, + "width": 0 }, - "snippet": "<html lang=\"en\">", + "snippet": "<meta content=\"text\" name=\"Description\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/page_title_exists.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Chtml%20lang%3D%5C%22en%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22page_title_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cmeta%20content%3D%5C%22text%5C%22%20name%3D%5C%22Description%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "img_alt_background", + "ruleId": "aria_content_in_landmark", "value": [ - "RECOMMENDATION", + "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]", + "dom": "/html[1]/head[1]/meta[1]", "aria": "/document[1]" }, - "ruleTime": 0, "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], @@ -128,14 +97,14 @@ "bounds": { "left": 0, "top": 0, - "height": 144, - "width": 800 + "height": 0, + "width": 0 }, - "snippet": "<html lang=\"en\">", + "snippet": "<meta charset=\"utf-8\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_background.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Chtml%20lang%3D%5C%22en%5C%22%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_background%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cmeta%20charset%3D%5C%22utf-8%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { "ruleId": "aria_content_in_landmark", @@ -147,7 +116,6 @@ "dom": "/html[1]/head[1]", "aria": "/document[1]" }, - "ruleTime": 0, "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], @@ -165,222 +133,220 @@ "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Chead%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "page_title_valid", + "ruleId": "text_whitespace_valid", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/head[1]/title[1]", - "aria": "/document[1]" + "dom": "/html[1]/body[1]/div[2]/h1[1]", + "aria": "/document[1]/main[1]/heading[1]" }, - "ruleTime": 0, - "reasonId": "Pass_0", + "reasonId": "pass", "message": "Rule Passed", - "messageArgs": [ - "Helo World" - ], + "messageArgs": [], "apiArgs": [], "bounds": { - "left": 0, - "top": 0, - "height": 0, - "width": 0 + "left": 8, + "top": 48, + "height": 74, + "width": 784 }, - "snippet": "<title>", + "snippet": "<h1>", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/page_title_valid.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Ctitle%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22page_title_valid%22%2C%22msgArgs%22%3A%5B%22Helo%20World%22%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_whitespace_valid.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Ch1%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22text_whitespace_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "aria_content_in_landmark", + "ruleId": "text_quoted_correctly", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/head[1]/title[1]", - "aria": "/document[1]" + "dom": "/html[1]/body[1]/div[2]/h1[1]", + "aria": "/document[1]/main[1]/heading[1]" }, - "ruleTime": 0, "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { - "left": 0, - "top": 0, - "height": 0, - "width": 0 + "left": 8, + "top": 48, + "height": 74, + "width": 784 }, - "snippet": "<title>", + "snippet": "<h1>", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Ctitle%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_quoted_correctly.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Ch1%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22text_quoted_correctly%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "aria_content_in_landmark", + "ruleId": "text_contrast_sufficient", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/head[1]/meta[1]", - "aria": "/document[1]" + "dom": "/html[1]/body[1]/div[2]/h1[1]", + "aria": "/document[1]/main[1]/heading[1]" }, - "ruleTime": 0, - "reasonId": "Pass_0", - "message": "Rule Passed", - "messageArgs": [], + "reasonId": "pass", + "message": "The contrast ratio of text with its background meets WCAG AA requirements", + "messageArgs": [ + "21.00", + 32, + 700, + "#000000", + "#ffffff", + false, + false + ], "apiArgs": [], "bounds": { - "left": 0, - "top": 0, - "height": 0, - "width": 0 + "left": 8, + "top": 48, + "height": 74, + "width": 784 }, - "snippet": "<meta charset=\"utf-8\">", + "snippet": "<h1>", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cmeta%20charset%3D%5C%22utf-8%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_contrast_sufficient.html#%7B%22message%22%3A%22The%20contrast%20ratio%20of%20text%20with%20its%20background%20meets%20WCAG%20AA%20requirements%22%2C%22snippet%22%3A%22%3Ch1%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22text_contrast_sufficient%22%2C%22msgArgs%22%3A%5B%2221.00%22%2C32%2C700%2C%22%23000000%22%2C%22%23ffffff%22%2Cfalse%2Cfalse%5D%7D" }, { - "ruleId": "aria_content_in_landmark", + "ruleId": "img_alt_background", "value": [ - "VIOLATION", + "RECOMMENDATION", "PASS" ], "path": { - "dom": "/html[1]/head[1]/meta[2]", - "aria": "/document[1]" + "dom": "/html[1]/body[1]/div[2]/h1[1]", + "aria": "/document[1]/main[1]/heading[1]" }, - "ruleTime": 0, "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { - "left": 0, - "top": 0, - "height": 0, - "width": 0 + "left": 8, + "top": 48, + "height": 74, + "width": 784 }, - "snippet": "<meta content=\"text\" name=\"Description\">", + "snippet": "<h1>", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cmeta%20content%3D%5C%22text%5C%22%20name%3D%5C%22Description%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_background.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Ch1%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_background%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "skip_main_exists", + "ruleId": "heading_markup_misuse", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]", - "aria": "/document[1]" + "dom": "/html[1]/body[1]/div[2]/h1[1]", + "aria": "/document[1]/main[1]/heading[1]" }, - "ruleTime": 0, "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 8, - "height": 114, + "top": 48, + "height": 74, "width": 784 }, - "snippet": "<body>", + "snippet": "<h1>", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/skip_main_exists.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cbody%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22skip_main_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/heading_markup_misuse.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Ch1%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22heading_markup_misuse%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "skip_main_described", + "ruleId": "heading_content_exists", "value": [ - "VIOLATION", + "RECOMMENDATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]", - "aria": "/document[1]" + "dom": "/html[1]/body[1]/div[2]/h1[1]", + "aria": "/document[1]/main[1]/heading[1]" }, - "ruleTime": 0, "reasonId": "Pass_0", - "message": "Rule Passed", + "message": "Heading element has descriptive text", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 8, - "height": 114, + "top": 48, + "height": 74, "width": 784 }, - "snippet": "<body>", + "snippet": "<h1>", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/skip_main_described.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cbody%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22skip_main_described%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/heading_content_exists.html#%7B%22message%22%3A%22Heading%20element%20has%20descriptive%20text%22%2C%22snippet%22%3A%22%3Ch1%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22heading_content_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "img_alt_background", + "ruleId": "aria_content_in_landmark", "value": [ - "RECOMMENDATION", + "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]", - "aria": "/document[1]" + "dom": "/html[1]/body[1]/div[2]/h1[1]", + "aria": "/document[1]/main[1]/heading[1]" }, - "ruleTime": 0, "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 8, - "height": 114, + "top": 48, + "height": 74, "width": 784 }, - "snippet": "<body>", + "snippet": "<h1>", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_background.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cbody%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_background%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Ch1%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "text_quoted_correctly", + "ruleId": "aria_accessiblename_exists", "value": [ - "VIOLATION", + "INFORMATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]", - "aria": "/document[1]" + "dom": "/html[1]/body[1]/div[2]/h1[1]", + "aria": "/document[1]/main[1]/heading[1]" }, - "ruleTime": 1, - "reasonId": "Pass_0", - "message": "Rule Passed", + "reasonId": "pass", + "message": "An accessible name is provided for the element", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 8, - "height": 114, + "top": 48, + "height": 74, "width": 784 }, - "snippet": "<body>", + "snippet": "<h1>", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_quoted_correctly.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cbody%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22text_quoted_correctly%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_accessiblename_exists.html#%7B%22message%22%3A%22An%20accessible%20name%20is%20provided%20for%20the%20element%22%2C%22snippet%22%3A%22%3Ch1%3E%22%2C%22value%22%3A%5B%22INFORMATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22aria_accessiblename_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { "ruleId": "text_whitespace_valid", @@ -389,163 +355,157 @@ "PASS" ], "path": { - "dom": "/html[1]/body[1]", - "aria": "/document[1]" + "dom": "/html[1]/body[1]/div[2]/div[2]", + "aria": "/document[1]/main[1]" }, - "ruleTime": 0, "reasonId": "pass", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 8, - "height": 114, + "top": 144, + "height": 0, "width": 784 }, - "snippet": "<body>", + "snippet": "<div id=\"firstDiv\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_whitespace_valid.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cbody%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22text_whitespace_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_whitespace_valid.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20id%3D%5C%22firstDiv%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22text_whitespace_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "aria_role_allowed", + "ruleId": "text_quoted_correctly", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[1]", - "aria": "/document[1]/navigation[1]" + "dom": "/html[1]/body[1]/div[2]/div[2]", + "aria": "/document[1]/main[1]" }, - "ruleTime": 0, "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 8, - "height": 19, + "top": 144, + "height": 0, "width": 784 }, - "snippet": "<div role=\"navigation\">", + "snippet": "<div id=\"firstDiv\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_role_allowed.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20role%3D%5C%22navigation%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_role_allowed%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_quoted_correctly.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20id%3D%5C%22firstDiv%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22text_quoted_correctly%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "aria_keyboard_handler_exists", + "ruleId": "img_alt_background", "value": [ - "VIOLATION", + "RECOMMENDATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[1]", - "aria": "/document[1]/navigation[1]" + "dom": "/html[1]/body[1]/div[2]/div[2]", + "aria": "/document[1]/main[1]" }, - "ruleTime": 0, - "reasonId": "pass", + "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 8, - "height": 19, + "top": 144, + "height": 0, "width": 784 }, - "snippet": "<div role=\"navigation\">", + "snippet": "<div id=\"firstDiv\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_keyboard_handler_exists.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20role%3D%5C%22navigation%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22aria_keyboard_handler_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_background.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20id%3D%5C%22firstDiv%5C%22%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_background%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "aria_role_redundant", + "ruleId": "element_id_unique", "value": [ - "RECOMMENDATION", - "PASS" + "VIOLATION", + "FAIL" ], "path": { - "dom": "/html[1]/body[1]/div[1]", - "aria": "/document[1]/navigation[1]" + "dom": "/html[1]/body[1]/div[2]/div[2]", + "aria": "/document[1]/main[1]" }, - "ruleTime": 0, - "reasonId": "pass", - "message": "An explicitly-assigned ARIA role is not redundant with the implicit role of the element", - "messageArgs": [], + "reasonId": "Fail_2", + "message": "The <div> element has the id \"firstDiv\" that is already in use", + "messageArgs": [ + "div", + "firstDiv" + ], "apiArgs": [], "bounds": { "left": 8, - "top": 8, - "height": 19, + "top": 144, + "height": 0, "width": 784 }, - "snippet": "<div role=\"navigation\">", + "snippet": "<div id=\"firstDiv\">", "category": "Accessibility", - "level": "pass", - "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_role_redundant.html#%7B%22message%22%3A%22An%20explicitly-assigned%20ARIA%20role%20is%20not%20redundant%20with%20the%20implicit%20role%20of%20the%20element%22%2C%22snippet%22%3A%22%3Cdiv%20role%3D%5C%22navigation%5C%22%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22aria_role_redundant%22%2C%22msgArgs%22%3A%5B%5D%7D" + "level": "violation", + "ignored": true, + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/element_id_unique.html#%7B%22message%22%3A%22The%20%3Cdiv%3E%20element%20has%20the%20id%20%5C%22firstDiv%5C%22%20that%20is%20already%20in%20use%22%2C%22snippet%22%3A%22%3Cdiv%20id%3D%5C%22firstDiv%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22FAIL%22%5D%2C%22reasonId%22%3A%22Fail_2%22%2C%22ruleId%22%3A%22element_id_unique%22%2C%22msgArgs%22%3A%5B%22div%22%2C%22firstDiv%22%5D%7D" }, { - "ruleId": "aria_role_valid", + "ruleId": "aria_content_in_landmark", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[1]", - "aria": "/document[1]/navigation[1]" + "dom": "/html[1]/body[1]/div[2]/div[2]", + "aria": "/document[1]/main[1]" }, - "ruleTime": 0, "reasonId": "Pass_0", "message": "Rule Passed", - "messageArgs": [ - "navigation", - "div" - ], + "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 8, - "height": 19, + "top": 144, + "height": 0, "width": 784 }, - "snippet": "<div role=\"navigation\">", + "snippet": "<div id=\"firstDiv\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_role_valid.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20role%3D%5C%22navigation%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_role_valid%22%2C%22msgArgs%22%3A%5B%22navigation%22%2C%22div%22%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20id%3D%5C%22firstDiv%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "img_alt_background", + "ruleId": "text_whitespace_valid", "value": [ - "RECOMMENDATION", + "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[1]", - "aria": "/document[1]/navigation[1]" + "dom": "/html[1]/body[1]/div[2]/div[1]", + "aria": "/document[1]/main[1]" }, - "ruleTime": 0, - "reasonId": "Pass_0", + "reasonId": "pass", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 8, - "height": 19, + "top": 144, + "height": 0, "width": 784 }, - "snippet": "<div role=\"navigation\">", + "snippet": "<div id=\"firstDiv\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_background.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20role%3D%5C%22navigation%5C%22%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_background%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_whitespace_valid.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20id%3D%5C%22firstDiv%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22text_whitespace_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { "ruleId": "text_quoted_correctly", @@ -554,79 +514,76 @@ "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[1]", - "aria": "/document[1]/navigation[1]" + "dom": "/html[1]/body[1]/div[2]/div[1]", + "aria": "/document[1]/main[1]" }, - "ruleTime": 0, "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 8, - "height": 19, + "top": 144, + "height": 0, "width": 784 }, - "snippet": "<div role=\"navigation\">", + "snippet": "<div id=\"firstDiv\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_quoted_correctly.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20role%3D%5C%22navigation%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22text_quoted_correctly%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_quoted_correctly.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20id%3D%5C%22firstDiv%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22text_quoted_correctly%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "text_whitespace_valid", + "ruleId": "img_alt_background", "value": [ - "VIOLATION", + "RECOMMENDATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[1]", - "aria": "/document[1]/navigation[1]" + "dom": "/html[1]/body[1]/div[2]/div[1]", + "aria": "/document[1]/main[1]" }, - "ruleTime": 0, - "reasonId": "pass", + "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 8, - "height": 19, + "top": 144, + "height": 0, "width": 784 }, - "snippet": "<div role=\"navigation\">", + "snippet": "<div id=\"firstDiv\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_whitespace_valid.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20role%3D%5C%22navigation%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22text_whitespace_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_background.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20id%3D%5C%22firstDiv%5C%22%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_background%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "aria_attribute_required", + "ruleId": "element_id_unique", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[1]", - "aria": "/document[1]/navigation[1]" + "dom": "/html[1]/body[1]/div[2]/div[1]", + "aria": "/document[1]/main[1]" }, - "ruleTime": 1, - "reasonId": "pass", - "message": "The required attributes for the element with the role are defined", + "reasonId": "Pass_0", + "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 8, - "height": 19, + "top": 144, + "height": 0, "width": 784 }, - "snippet": "<div role=\"navigation\">", + "snippet": "<div id=\"firstDiv\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_attribute_required.html#%7B%22message%22%3A%22The%20required%20attributes%20for%20the%20element%20with%20the%20role%20are%20defined%22%2C%22snippet%22%3A%22%3Cdiv%20role%3D%5C%22navigation%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22aria_attribute_required%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/element_id_unique.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20id%3D%5C%22firstDiv%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22element_id_unique%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { "ruleId": "aria_content_in_landmark", @@ -635,79 +592,76 @@ "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[1]/a[1]", - "aria": "/document[1]/navigation[1]/link[1]" + "dom": "/html[1]/body[1]/div[2]/div[1]", + "aria": "/document[1]/main[1]" }, - "ruleTime": 0, "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 8, - "height": 18, - "width": 56 + "top": 144, + "height": 0, + "width": 784 }, - "snippet": "<a alt=\"skip to main content\" href=\"#navskip\">", + "snippet": "<div id=\"firstDiv\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Ca%20alt%3D%5C%22skip%20to%20main%20content%5C%22%20href%3D%5C%22%23navskip%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20id%3D%5C%22firstDiv%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "element_tabbable_unobscured", + "ruleId": "text_whitespace_valid", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[1]/a[1]", - "aria": "/document[1]/navigation[1]/link[1]" + "dom": "/html[1]/body[1]/div[2]/a[1]", + "aria": "/document[1]/main[1]" }, - "ruleTime": 1, "reasonId": "pass", - "message": "The element is not entirely covered by other content", + "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 8, - "height": 18, - "width": 56 + "top": 48, + "height": 0, + "width": 0 }, - "snippet": "<a alt=\"skip to main content\" href=\"#navskip\">", + "snippet": "<a name=\"navskip\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/element_tabbable_unobscured.html#%7B%22message%22%3A%22The%20element%20is%20not%20entirely%20covered%20by%20other%20content%22%2C%22snippet%22%3A%22%3Ca%20alt%3D%5C%22skip%20to%20main%20content%5C%22%20href%3D%5C%22%23navskip%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22element_tabbable_unobscured%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_whitespace_valid.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Ca%20name%3D%5C%22navskip%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22text_whitespace_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "element_tabbable_visible", + "ruleId": "text_quoted_correctly", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[1]/a[1]", - "aria": "/document[1]/navigation[1]/link[1]" + "dom": "/html[1]/body[1]/div[2]/a[1]", + "aria": "/document[1]/main[1]" }, - "ruleTime": 0, - "reasonId": "pass", - "message": "The tabbable element is visible on the screen", + "reasonId": "Pass_0", + "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 8, - "height": 18, - "width": 56 + "top": 48, + "height": 0, + "width": 0 }, - "snippet": "<a alt=\"skip to main content\" href=\"#navskip\">", + "snippet": "<a name=\"navskip\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/element_tabbable_visible.html#%7B%22message%22%3A%22The%20tabbable%20element%20is%20visible%20on%20the%20screen%22%2C%22snippet%22%3A%22%3Ca%20alt%3D%5C%22skip%20to%20main%20content%5C%22%20href%3D%5C%22%23navskip%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22element_tabbable_visible%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_quoted_correctly.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Ca%20name%3D%5C%22navskip%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22text_quoted_correctly%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { "ruleId": "img_alt_background", @@ -716,252 +670,238 @@ "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[1]/a[1]", - "aria": "/document[1]/navigation[1]/link[1]" + "dom": "/html[1]/body[1]/div[2]/a[1]", + "aria": "/document[1]/main[1]" }, - "ruleTime": 0, "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 8, - "height": 18, - "width": 56 + "top": 48, + "height": 0, + "width": 0 }, - "snippet": "<a alt=\"skip to main content\" href=\"#navskip\">", + "snippet": "<a name=\"navskip\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_background.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Ca%20alt%3D%5C%22skip%20to%20main%20content%5C%22%20href%3D%5C%22%23navskip%5C%22%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_background%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_background.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Ca%20name%3D%5C%22navskip%5C%22%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_background%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "style_focus_visible", + "ruleId": "aria_content_in_landmark", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[1]/a[1]", - "aria": "/document[1]/navigation[1]/link[1]" + "dom": "/html[1]/body[1]/div[2]/a[1]", + "aria": "/document[1]/main[1]" }, - "ruleTime": 0, - "reasonId": "pass_focus_visible", - "message": "The keyboard focus indicator is visible or is not changed from the browser default", + "reasonId": "Pass_0", + "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 8, - "height": 18, - "width": 56 + "top": 48, + "height": 0, + "width": 0 }, - "snippet": "<a alt=\"skip to main content\" href=\"#navskip\">", + "snippet": "<a name=\"navskip\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/style_focus_visible.html#%7B%22message%22%3A%22The%20keyboard%20focus%20indicator%20is%20visible%20or%20is%20not%20changed%20from%20the%20browser%20default%22%2C%22snippet%22%3A%22%3Ca%20alt%3D%5C%22skip%20to%20main%20content%5C%22%20href%3D%5C%22%23navskip%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass_focus_visible%22%2C%22ruleId%22%3A%22style_focus_visible%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Ca%20name%3D%5C%22navskip%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "target_spacing_sufficient", + "ruleId": "text_whitespace_valid", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[1]/a[1]", - "aria": "/document[1]/navigation[1]/link[1]" + "dom": "/html[1]/body[1]/div[2]", + "aria": "/document[1]/main[1]" }, - "ruleTime": 1, - "reasonId": "pass_default", - "message": "The target's size is determined by the user agent and is not modified by the author", + "reasonId": "pass", + "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 8, - "height": 18, - "width": 56 + "top": 48, + "height": 74, + "width": 784 }, - "snippet": "<a alt=\"skip to main content\" href=\"#navskip\">", + "snippet": "<div role=\"main\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/target_spacing_sufficient.html#%7B%22message%22%3A%22The%20target's%20size%20is%20determined%20by%20the%20user%20agent%20and%20is%20not%20modified%20by%20the%20author%22%2C%22snippet%22%3A%22%3Ca%20alt%3D%5C%22skip%20to%20main%20content%5C%22%20href%3D%5C%22%23navskip%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass_default%22%2C%22ruleId%22%3A%22target_spacing_sufficient%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_whitespace_valid.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20role%3D%5C%22main%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22text_whitespace_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "text_contrast_sufficient", + "ruleId": "text_quoted_correctly", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[1]/a[1]", - "aria": "/document[1]/navigation[1]/link[1]" + "dom": "/html[1]/body[1]/div[2]", + "aria": "/document[1]/main[1]" }, - "ruleTime": 2, - "reasonId": "pass", - "message": "The contrast ratio of text with its background meets WCAG AA requirements", - "messageArgs": [ - "9.40", - 16, - 400, - "#0000ee", - "#ffffff", - false, - false - ], + "reasonId": "Pass_0", + "message": "Rule Passed", + "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 8, - "height": 18, - "width": 56 + "top": 48, + "height": 74, + "width": 784 }, - "snippet": "<a alt=\"skip to main content\" href=\"#navskip\">", + "snippet": "<div role=\"main\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_contrast_sufficient.html#%7B%22message%22%3A%22The%20contrast%20ratio%20of%20text%20with%20its%20background%20meets%20WCAG%20AA%20requirements%22%2C%22snippet%22%3A%22%3Ca%20alt%3D%5C%22skip%20to%20main%20content%5C%22%20href%3D%5C%22%23navskip%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22text_contrast_sufficient%22%2C%22msgArgs%22%3A%5B%229.40%22%2C16%2C400%2C%22%230000ee%22%2C%22%23ffffff%22%2Cfalse%2Cfalse%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_quoted_correctly.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20role%3D%5C%22main%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22text_quoted_correctly%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "text_quoted_correctly", + "ruleId": "img_alt_background", "value": [ - "VIOLATION", + "RECOMMENDATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[1]/a[1]", - "aria": "/document[1]/navigation[1]/link[1]" + "dom": "/html[1]/body[1]/div[2]", + "aria": "/document[1]/main[1]" }, - "ruleTime": 0, "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 8, - "height": 18, - "width": 56 + "top": 48, + "height": 74, + "width": 784 }, - "snippet": "<a alt=\"skip to main content\" href=\"#navskip\">", + "snippet": "<div role=\"main\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_quoted_correctly.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Ca%20alt%3D%5C%22skip%20to%20main%20content%5C%22%20href%3D%5C%22%23navskip%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22text_quoted_correctly%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_background.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20role%3D%5C%22main%5C%22%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_background%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "text_whitespace_valid", + "ruleId": "aria_role_valid", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[1]/a[1]", - "aria": "/document[1]/navigation[1]/link[1]" + "dom": "/html[1]/body[1]/div[2]", + "aria": "/document[1]/main[1]" }, - "ruleTime": 1, - "reasonId": "pass", + "reasonId": "Pass_0", "message": "Rule Passed", - "messageArgs": [], + "messageArgs": [ + "main", + "div" + ], "apiArgs": [], "bounds": { "left": 8, - "top": 8, - "height": 18, - "width": 56 + "top": 48, + "height": 74, + "width": 784 }, - "snippet": "<a alt=\"skip to main content\" href=\"#navskip\">", + "snippet": "<div role=\"main\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_whitespace_valid.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Ca%20alt%3D%5C%22skip%20to%20main%20content%5C%22%20href%3D%5C%22%23navskip%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22text_whitespace_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_role_valid.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20role%3D%5C%22main%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_role_valid%22%2C%22msgArgs%22%3A%5B%22main%22%2C%22div%22%5D%7D" }, { - "ruleId": "a_text_purpose", + "ruleId": "aria_role_redundant", "value": [ - "VIOLATION", + "RECOMMENDATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[1]/a[1]", - "aria": "/document[1]/navigation[1]/link[1]" + "dom": "/html[1]/body[1]/div[2]", + "aria": "/document[1]/main[1]" }, - "ruleTime": 0, "reasonId": "pass", - "message": "Hyperlink has a description of its purpose", + "message": "An explicitly-assigned ARIA role is not redundant with the implicit role of the element", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 8, - "height": 18, - "width": 56 + "top": 48, + "height": 74, + "width": 784 }, - "snippet": "<a alt=\"skip to main content\" href=\"#navskip\">", + "snippet": "<div role=\"main\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/a_text_purpose.html#%7B%22message%22%3A%22Hyperlink%20has%20a%20description%20of%20its%20purpose%22%2C%22snippet%22%3A%22%3Ca%20alt%3D%5C%22skip%20to%20main%20content%5C%22%20href%3D%5C%22%23navskip%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22a_text_purpose%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_role_redundant.html#%7B%22message%22%3A%22An%20explicitly-assigned%20ARIA%20role%20is%20not%20redundant%20with%20the%20implicit%20role%20of%20the%20element%22%2C%22snippet%22%3A%22%3Cdiv%20role%3D%5C%22main%5C%22%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22aria_role_redundant%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "widget_tabbable_exists", + "ruleId": "aria_role_allowed", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[1]/a[1]", - "aria": "/document[1]/navigation[1]/link[1]" + "dom": "/html[1]/body[1]/div[2]", + "aria": "/document[1]/main[1]" }, - "ruleTime": 1, - "reasonId": "pass", + "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 8, - "height": 18, - "width": 56 + "top": 48, + "height": 74, + "width": 784 }, - "snippet": "<a alt=\"skip to main content\" href=\"#navskip\">", + "snippet": "<div role=\"main\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/widget_tabbable_exists.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Ca%20alt%3D%5C%22skip%20to%20main%20content%5C%22%20href%3D%5C%22%23navskip%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22widget_tabbable_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_role_allowed.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20role%3D%5C%22main%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_role_allowed%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "widget_tabbable_single", + "ruleId": "aria_keyboard_handler_exists", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[1]/a[1]", - "aria": "/document[1]/navigation[1]/link[1]" + "dom": "/html[1]/body[1]/div[2]", + "aria": "/document[1]/main[1]" }, - "ruleTime": 0, "reasonId": "pass", - "message": "Components with a widget role should have no more than one tabbable element", + "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 8, - "height": 18, - "width": 56 + "top": 48, + "height": 74, + "width": 784 }, - "snippet": "<a alt=\"skip to main content\" href=\"#navskip\">", + "snippet": "<div role=\"main\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/widget_tabbable_single.html#%7B%22message%22%3A%22Components%20with%20a%20widget%20role%20should%20have%20no%20more%20than%20one%20tabbable%20element%22%2C%22snippet%22%3A%22%3Ca%20alt%3D%5C%22skip%20to%20main%20content%5C%22%20href%3D%5C%22%23navskip%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22widget_tabbable_single%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_keyboard_handler_exists.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20role%3D%5C%22main%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22aria_keyboard_handler_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "aria_role_allowed", + "ruleId": "aria_attribute_required", "value": [ "VIOLATION", "PASS" @@ -970,9 +910,8 @@ "dom": "/html[1]/body[1]/div[2]", "aria": "/document[1]/main[1]" }, - "ruleTime": 0, - "reasonId": "Pass_0", - "message": "Rule Passed", + "reasonId": "pass", + "message": "The required attributes for the element with the role are defined", "messageArgs": [], "apiArgs": [], "bounds": { @@ -985,388 +924,379 @@ "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_role_allowed.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20role%3D%5C%22main%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_role_allowed%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_attribute_required.html#%7B%22message%22%3A%22The%20required%20attributes%20for%20the%20element%20with%20the%20role%20are%20defined%22%2C%22snippet%22%3A%22%3Cdiv%20role%3D%5C%22main%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22aria_attribute_required%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "aria_keyboard_handler_exists", + "ruleId": "widget_tabbable_single", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[2]", - "aria": "/document[1]/main[1]" + "dom": "/html[1]/body[1]/div[1]/a[1]", + "aria": "/document[1]/navigation[1]/link[1]" }, - "ruleTime": 0, "reasonId": "pass", - "message": "Rule Passed", + "message": "Components with a widget role should have no more than one tabbable element", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 48, - "height": 74, - "width": 784 + "top": 8, + "height": 18, + "width": 56 }, - "snippet": "<div role=\"main\">", + "snippet": "<a alt=\"skip to main content\" href=\"#navskip\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_keyboard_handler_exists.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20role%3D%5C%22main%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22aria_keyboard_handler_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/widget_tabbable_single.html#%7B%22message%22%3A%22Components%20with%20a%20widget%20role%20should%20have%20no%20more%20than%20one%20tabbable%20element%22%2C%22snippet%22%3A%22%3Ca%20alt%3D%5C%22skip%20to%20main%20content%5C%22%20href%3D%5C%22%23navskip%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22widget_tabbable_single%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "aria_role_redundant", + "ruleId": "widget_tabbable_exists", "value": [ - "RECOMMENDATION", + "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[2]", - "aria": "/document[1]/main[1]" + "dom": "/html[1]/body[1]/div[1]/a[1]", + "aria": "/document[1]/navigation[1]/link[1]" }, - "ruleTime": 0, "reasonId": "pass", - "message": "An explicitly-assigned ARIA role is not redundant with the implicit role of the element", + "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 48, - "height": 74, - "width": 784 + "top": 8, + "height": 18, + "width": 56 }, - "snippet": "<div role=\"main\">", + "snippet": "<a alt=\"skip to main content\" href=\"#navskip\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_role_redundant.html#%7B%22message%22%3A%22An%20explicitly-assigned%20ARIA%20role%20is%20not%20redundant%20with%20the%20implicit%20role%20of%20the%20element%22%2C%22snippet%22%3A%22%3Cdiv%20role%3D%5C%22main%5C%22%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22aria_role_redundant%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/widget_tabbable_exists.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Ca%20alt%3D%5C%22skip%20to%20main%20content%5C%22%20href%3D%5C%22%23navskip%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22widget_tabbable_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "aria_role_valid", + "ruleId": "text_whitespace_valid", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[2]", - "aria": "/document[1]/main[1]" + "dom": "/html[1]/body[1]/div[1]/a[1]", + "aria": "/document[1]/navigation[1]/link[1]" }, - "ruleTime": 1, - "reasonId": "Pass_0", + "reasonId": "pass", "message": "Rule Passed", - "messageArgs": [ - "main", - "div" - ], + "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 48, - "height": 74, - "width": 784 + "top": 8, + "height": 18, + "width": 56 }, - "snippet": "<div role=\"main\">", + "snippet": "<a alt=\"skip to main content\" href=\"#navskip\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_role_valid.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20role%3D%5C%22main%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_role_valid%22%2C%22msgArgs%22%3A%5B%22main%22%2C%22div%22%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_whitespace_valid.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Ca%20alt%3D%5C%22skip%20to%20main%20content%5C%22%20href%3D%5C%22%23navskip%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22text_whitespace_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "img_alt_background", + "ruleId": "text_quoted_correctly", "value": [ - "RECOMMENDATION", + "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[2]", - "aria": "/document[1]/main[1]" + "dom": "/html[1]/body[1]/div[1]/a[1]", + "aria": "/document[1]/navigation[1]/link[1]" }, - "ruleTime": 0, "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 48, - "height": 74, - "width": 784 + "top": 8, + "height": 18, + "width": 56 }, - "snippet": "<div role=\"main\">", + "snippet": "<a alt=\"skip to main content\" href=\"#navskip\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_background.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20role%3D%5C%22main%5C%22%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_background%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_quoted_correctly.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Ca%20alt%3D%5C%22skip%20to%20main%20content%5C%22%20href%3D%5C%22%23navskip%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22text_quoted_correctly%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "text_quoted_correctly", + "ruleId": "text_contrast_sufficient", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[2]", - "aria": "/document[1]/main[1]" + "dom": "/html[1]/body[1]/div[1]/a[1]", + "aria": "/document[1]/navigation[1]/link[1]" }, - "ruleTime": 1, - "reasonId": "Pass_0", - "message": "Rule Passed", - "messageArgs": [], + "reasonId": "pass", + "message": "The contrast ratio of text with its background meets WCAG AA requirements", + "messageArgs": [ + "9.40", + 16, + 400, + "#0000ee", + "#ffffff", + false, + false + ], "apiArgs": [], "bounds": { "left": 8, - "top": 48, - "height": 74, - "width": 784 + "top": 8, + "height": 18, + "width": 56 }, - "snippet": "<div role=\"main\">", + "snippet": "<a alt=\"skip to main content\" href=\"#navskip\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_quoted_correctly.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20role%3D%5C%22main%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22text_quoted_correctly%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_contrast_sufficient.html#%7B%22message%22%3A%22The%20contrast%20ratio%20of%20text%20with%20its%20background%20meets%20WCAG%20AA%20requirements%22%2C%22snippet%22%3A%22%3Ca%20alt%3D%5C%22skip%20to%20main%20content%5C%22%20href%3D%5C%22%23navskip%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22text_contrast_sufficient%22%2C%22msgArgs%22%3A%5B%229.40%22%2C16%2C400%2C%22%230000ee%22%2C%22%23ffffff%22%2Cfalse%2Cfalse%5D%7D" }, { - "ruleId": "text_whitespace_valid", + "ruleId": "target_spacing_sufficient", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[2]", - "aria": "/document[1]/main[1]" + "dom": "/html[1]/body[1]/div[1]/a[1]", + "aria": "/document[1]/navigation[1]/link[1]" }, - "ruleTime": 0, - "reasonId": "pass", - "message": "Rule Passed", + "reasonId": "pass_default", + "message": "The target's size is determined by the user agent and is not modified by the author", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 48, - "height": 74, - "width": 784 + "top": 8, + "height": 18, + "width": 56 }, - "snippet": "<div role=\"main\">", + "snippet": "<a alt=\"skip to main content\" href=\"#navskip\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_whitespace_valid.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20role%3D%5C%22main%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22text_whitespace_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/target_spacing_sufficient.html#%7B%22message%22%3A%22The%20target's%20size%20is%20determined%20by%20the%20user%20agent%20and%20is%20not%20modified%20by%20the%20author%22%2C%22snippet%22%3A%22%3Ca%20alt%3D%5C%22skip%20to%20main%20content%5C%22%20href%3D%5C%22%23navskip%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass_default%22%2C%22ruleId%22%3A%22target_spacing_sufficient%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "aria_attribute_required", + "ruleId": "style_focus_visible", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[2]", - "aria": "/document[1]/main[1]" + "dom": "/html[1]/body[1]/div[1]/a[1]", + "aria": "/document[1]/navigation[1]/link[1]" }, - "ruleTime": 0, - "reasonId": "pass", - "message": "The required attributes for the element with the role are defined", + "reasonId": "pass_focus_visible", + "message": "The keyboard focus indicator is visible or is not changed from the browser default", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 48, - "height": 74, - "width": 784 + "top": 8, + "height": 18, + "width": 56 }, - "snippet": "<div role=\"main\">", + "snippet": "<a alt=\"skip to main content\" href=\"#navskip\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_attribute_required.html#%7B%22message%22%3A%22The%20required%20attributes%20for%20the%20element%20with%20the%20role%20are%20defined%22%2C%22snippet%22%3A%22%3Cdiv%20role%3D%5C%22main%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22aria_attribute_required%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/style_focus_visible.html#%7B%22message%22%3A%22The%20keyboard%20focus%20indicator%20is%20visible%20or%20is%20not%20changed%20from%20the%20browser%20default%22%2C%22snippet%22%3A%22%3Ca%20alt%3D%5C%22skip%20to%20main%20content%5C%22%20href%3D%5C%22%23navskip%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass_focus_visible%22%2C%22ruleId%22%3A%22style_focus_visible%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "aria_content_in_landmark", + "ruleId": "img_alt_background", "value": [ - "VIOLATION", + "RECOMMENDATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[2]/a[1]", - "aria": "/document[1]/main[1]" + "dom": "/html[1]/body[1]/div[1]/a[1]", + "aria": "/document[1]/navigation[1]/link[1]" }, - "ruleTime": 0, "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 48, - "height": 0, - "width": 0 + "top": 8, + "height": 18, + "width": 56 }, - "snippet": "<a name=\"navskip\">", + "snippet": "<a alt=\"skip to main content\" href=\"#navskip\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Ca%20name%3D%5C%22navskip%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_background.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Ca%20alt%3D%5C%22skip%20to%20main%20content%5C%22%20href%3D%5C%22%23navskip%5C%22%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_background%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "img_alt_background", + "ruleId": "element_tabbable_visible", "value": [ - "RECOMMENDATION", + "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[2]/a[1]", - "aria": "/document[1]/main[1]" + "dom": "/html[1]/body[1]/div[1]/a[1]", + "aria": "/document[1]/navigation[1]/link[1]" }, - "ruleTime": 0, - "reasonId": "Pass_0", - "message": "Rule Passed", + "reasonId": "pass", + "message": "The tabbable element is visible on the screen", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 48, - "height": 0, - "width": 0 + "top": 8, + "height": 18, + "width": 56 }, - "snippet": "<a name=\"navskip\">", + "snippet": "<a alt=\"skip to main content\" href=\"#navskip\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_background.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Ca%20name%3D%5C%22navskip%5C%22%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_background%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/element_tabbable_visible.html#%7B%22message%22%3A%22The%20tabbable%20element%20is%20visible%20on%20the%20screen%22%2C%22snippet%22%3A%22%3Ca%20alt%3D%5C%22skip%20to%20main%20content%5C%22%20href%3D%5C%22%23navskip%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22element_tabbable_visible%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "text_quoted_correctly", + "ruleId": "element_tabbable_unobscured", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[2]/a[1]", - "aria": "/document[1]/main[1]" + "dom": "/html[1]/body[1]/div[1]/a[1]", + "aria": "/document[1]/navigation[1]/link[1]" }, - "ruleTime": 0, - "reasonId": "Pass_0", - "message": "Rule Passed", + "reasonId": "pass", + "message": "The element is not entirely covered by other content", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 48, - "height": 0, - "width": 0 + "top": 8, + "height": 18, + "width": 56 }, - "snippet": "<a name=\"navskip\">", + "snippet": "<a alt=\"skip to main content\" href=\"#navskip\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_quoted_correctly.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Ca%20name%3D%5C%22navskip%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22text_quoted_correctly%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/element_tabbable_unobscured.html#%7B%22message%22%3A%22The%20element%20is%20not%20entirely%20covered%20by%20other%20content%22%2C%22snippet%22%3A%22%3Ca%20alt%3D%5C%22skip%20to%20main%20content%5C%22%20href%3D%5C%22%23navskip%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22element_tabbable_unobscured%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "text_whitespace_valid", + "ruleId": "aria_content_in_landmark", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[2]/a[1]", - "aria": "/document[1]/main[1]" + "dom": "/html[1]/body[1]/div[1]/a[1]", + "aria": "/document[1]/navigation[1]/link[1]" }, - "ruleTime": 0, - "reasonId": "pass", + "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 48, - "height": 0, - "width": 0 + "top": 8, + "height": 18, + "width": 56 }, - "snippet": "<a name=\"navskip\">", + "snippet": "<a alt=\"skip to main content\" href=\"#navskip\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_whitespace_valid.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Ca%20name%3D%5C%22navskip%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22text_whitespace_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Ca%20alt%3D%5C%22skip%20to%20main%20content%5C%22%20href%3D%5C%22%23navskip%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "heading_content_exists", + "ruleId": "a_text_purpose", "value": [ - "RECOMMENDATION", + "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[2]/h1[1]", - "aria": "/document[1]/main[1]/heading[1]" + "dom": "/html[1]/body[1]/div[1]/a[1]", + "aria": "/document[1]/navigation[1]/link[1]" }, - "ruleTime": 0, - "reasonId": "Pass_0", - "message": "Heading element has descriptive text", + "reasonId": "pass", + "message": "Hyperlink has a description of its purpose", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 48, - "height": 74, - "width": 784 + "top": 8, + "height": 18, + "width": 56 }, - "snippet": "<h1>", + "snippet": "<a alt=\"skip to main content\" href=\"#navskip\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/heading_content_exists.html#%7B%22message%22%3A%22Heading%20element%20has%20descriptive%20text%22%2C%22snippet%22%3A%22%3Ch1%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22heading_content_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/a_text_purpose.html#%7B%22message%22%3A%22Hyperlink%20has%20a%20description%20of%20its%20purpose%22%2C%22snippet%22%3A%22%3Ca%20alt%3D%5C%22skip%20to%20main%20content%5C%22%20href%3D%5C%22%23navskip%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22a_text_purpose%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "heading_markup_misuse", + "ruleId": "text_whitespace_valid", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[2]/h1[1]", - "aria": "/document[1]/main[1]/heading[1]" + "dom": "/html[1]/body[1]/div[1]", + "aria": "/document[1]/navigation[1]" }, - "ruleTime": 0, - "reasonId": "Pass_0", + "reasonId": "pass", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 48, - "height": 74, + "top": 8, + "height": 19, "width": 784 }, - "snippet": "<h1>", + "snippet": "<div role=\"navigation\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/heading_markup_misuse.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Ch1%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22heading_markup_misuse%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_whitespace_valid.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20role%3D%5C%22navigation%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22text_whitespace_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "aria_content_in_landmark", + "ruleId": "text_quoted_correctly", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[2]/h1[1]", - "aria": "/document[1]/main[1]/heading[1]" + "dom": "/html[1]/body[1]/div[1]", + "aria": "/document[1]/navigation[1]" }, - "ruleTime": 0, "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 48, - "height": 74, + "top": 8, + "height": 19, "width": 784 }, - "snippet": "<h1>", + "snippet": "<div role=\"navigation\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Ch1%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_quoted_correctly.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20role%3D%5C%22navigation%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22text_quoted_correctly%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { "ruleId": "img_alt_background", @@ -1375,418 +1305,423 @@ "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[2]/h1[1]", - "aria": "/document[1]/main[1]/heading[1]" + "dom": "/html[1]/body[1]/div[1]", + "aria": "/document[1]/navigation[1]" }, - "ruleTime": 1, "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 48, - "height": 74, + "top": 8, + "height": 19, "width": 784 }, - "snippet": "<h1>", + "snippet": "<div role=\"navigation\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_background.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Ch1%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_background%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_background.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20role%3D%5C%22navigation%5C%22%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_background%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "text_contrast_sufficient", + "ruleId": "aria_role_valid", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[2]/h1[1]", - "aria": "/document[1]/main[1]/heading[1]" + "dom": "/html[1]/body[1]/div[1]", + "aria": "/document[1]/navigation[1]" }, - "ruleTime": 1, - "reasonId": "pass", - "message": "The contrast ratio of text with its background meets WCAG AA requirements", + "reasonId": "Pass_0", + "message": "Rule Passed", "messageArgs": [ - "21.00", - 32, - 700, - "#000000", - "#ffffff", - false, - false + "navigation", + "div" + ], + "apiArgs": [], + "bounds": { + "left": 8, + "top": 8, + "height": 19, + "width": 784 + }, + "snippet": "<div role=\"navigation\">", + "category": "Accessibility", + "level": "pass", + "ignored": false, + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_role_valid.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20role%3D%5C%22navigation%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_role_valid%22%2C%22msgArgs%22%3A%5B%22navigation%22%2C%22div%22%5D%7D" + }, + { + "ruleId": "aria_role_redundant", + "value": [ + "RECOMMENDATION", + "PASS" ], + "path": { + "dom": "/html[1]/body[1]/div[1]", + "aria": "/document[1]/navigation[1]" + }, + "reasonId": "pass", + "message": "An explicitly-assigned ARIA role is not redundant with the implicit role of the element", + "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 48, - "height": 74, + "top": 8, + "height": 19, "width": 784 }, - "snippet": "<h1>", + "snippet": "<div role=\"navigation\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_contrast_sufficient.html#%7B%22message%22%3A%22The%20contrast%20ratio%20of%20text%20with%20its%20background%20meets%20WCAG%20AA%20requirements%22%2C%22snippet%22%3A%22%3Ch1%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22text_contrast_sufficient%22%2C%22msgArgs%22%3A%5B%2221.00%22%2C32%2C700%2C%22%23000000%22%2C%22%23ffffff%22%2Cfalse%2Cfalse%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_role_redundant.html#%7B%22message%22%3A%22An%20explicitly-assigned%20ARIA%20role%20is%20not%20redundant%20with%20the%20implicit%20role%20of%20the%20element%22%2C%22snippet%22%3A%22%3Cdiv%20role%3D%5C%22navigation%5C%22%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22aria_role_redundant%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "text_quoted_correctly", + "ruleId": "aria_role_allowed", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[2]/h1[1]", - "aria": "/document[1]/main[1]/heading[1]" + "dom": "/html[1]/body[1]/div[1]", + "aria": "/document[1]/navigation[1]" }, - "ruleTime": 1, "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 48, - "height": 74, + "top": 8, + "height": 19, "width": 784 }, - "snippet": "<h1>", + "snippet": "<div role=\"navigation\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_quoted_correctly.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Ch1%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22text_quoted_correctly%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_role_allowed.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20role%3D%5C%22navigation%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_role_allowed%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "text_whitespace_valid", + "ruleId": "aria_keyboard_handler_exists", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[2]/h1[1]", - "aria": "/document[1]/main[1]/heading[1]" + "dom": "/html[1]/body[1]/div[1]", + "aria": "/document[1]/navigation[1]" }, - "ruleTime": 0, "reasonId": "pass", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 48, - "height": 74, + "top": 8, + "height": 19, "width": 784 }, - "snippet": "<h1>", + "snippet": "<div role=\"navigation\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_whitespace_valid.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Ch1%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22text_whitespace_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_keyboard_handler_exists.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20role%3D%5C%22navigation%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22aria_keyboard_handler_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "aria_accessiblename_exists", + "ruleId": "aria_attribute_required", "value": [ - "RECOMMENDATION", + "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[2]/h1[1]", - "aria": "/document[1]/main[1]/heading[1]" + "dom": "/html[1]/body[1]/div[1]", + "aria": "/document[1]/navigation[1]" }, - "ruleTime": 0, "reasonId": "pass", - "message": "An accessible name is provided for the element", + "message": "The required attributes for the element with the role are defined", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 48, - "height": 74, + "top": 8, + "height": 19, "width": 784 }, - "snippet": "<h1>", + "snippet": "<div role=\"navigation\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_accessiblename_exists.html#%7B%22message%22%3A%22An%20accessible%20name%20is%20provided%20for%20the%20element%22%2C%22snippet%22%3A%22%3Ch1%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22aria_accessiblename_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_attribute_required.html#%7B%22message%22%3A%22The%20required%20attributes%20for%20the%20element%20with%20the%20role%20are%20defined%22%2C%22snippet%22%3A%22%3Cdiv%20role%3D%5C%22navigation%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22aria_attribute_required%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "aria_content_in_landmark", + "ruleId": "text_whitespace_valid", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[2]/div[1]", - "aria": "/document[1]/main[1]" + "dom": "/html[1]/body[1]", + "aria": "/document[1]" }, - "ruleTime": 0, - "reasonId": "Pass_0", + "reasonId": "pass", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 144, - "height": 0, + "top": 8, + "height": 114, "width": 784 }, - "snippet": "<div id=\"firstDiv\">", + "snippet": "<body>", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20id%3D%5C%22firstDiv%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_whitespace_valid.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cbody%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22text_whitespace_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "element_id_unique", + "ruleId": "text_quoted_correctly", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[2]/div[1]", - "aria": "/document[1]/main[1]" + "dom": "/html[1]/body[1]", + "aria": "/document[1]" }, - "ruleTime": 0, "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 144, - "height": 0, + "top": 8, + "height": 114, "width": 784 }, - "snippet": "<div id=\"firstDiv\">", + "snippet": "<body>", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/element_id_unique.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20id%3D%5C%22firstDiv%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22element_id_unique%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_quoted_correctly.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cbody%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22text_quoted_correctly%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "img_alt_background", + "ruleId": "skip_main_exists", "value": [ - "RECOMMENDATION", + "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[2]/div[1]", - "aria": "/document[1]/main[1]" + "dom": "/html[1]/body[1]", + "aria": "/document[1]" }, - "ruleTime": 0, "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 144, - "height": 0, + "top": 8, + "height": 114, "width": 784 }, - "snippet": "<div id=\"firstDiv\">", + "snippet": "<body>", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_background.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20id%3D%5C%22firstDiv%5C%22%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_background%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/skip_main_exists.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cbody%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22skip_main_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "text_quoted_correctly", + "ruleId": "skip_main_described", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[2]/div[1]", - "aria": "/document[1]/main[1]" + "dom": "/html[1]/body[1]", + "aria": "/document[1]" }, - "ruleTime": 0, "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 144, - "height": 0, + "top": 8, + "height": 114, "width": 784 }, - "snippet": "<div id=\"firstDiv\">", + "snippet": "<body>", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_quoted_correctly.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20id%3D%5C%22firstDiv%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22text_quoted_correctly%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/skip_main_described.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cbody%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22skip_main_described%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "text_whitespace_valid", + "ruleId": "img_alt_background", "value": [ - "VIOLATION", + "RECOMMENDATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[2]/div[1]", - "aria": "/document[1]/main[1]" + "dom": "/html[1]/body[1]", + "aria": "/document[1]" }, - "ruleTime": 0, - "reasonId": "pass", + "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { "left": 8, - "top": 144, - "height": 0, + "top": 8, + "height": 114, "width": 784 }, - "snippet": "<div id=\"firstDiv\">", + "snippet": "<body>", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_whitespace_valid.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20id%3D%5C%22firstDiv%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22text_whitespace_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_background.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cbody%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_background%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "aria_content_in_landmark", + "ruleId": "page_title_exists", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[2]/div[2]", - "aria": "/document[1]/main[1]" + "dom": "/html[1]", + "aria": "/document[1]" }, - "ruleTime": 1, "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { - "left": 8, - "top": 144, - "height": 0, - "width": 784 + "left": 0, + "top": 0, + "height": 144, + "width": 800 }, - "snippet": "<div id=\"firstDiv\">", + "snippet": "<html lang=\"en\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_content_in_landmark.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20id%3D%5C%22firstDiv%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22aria_content_in_landmark%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/page_title_exists.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Chtml%20lang%3D%5C%22en%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22page_title_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "element_id_unique", + "ruleId": "img_alt_background", "value": [ - "VIOLATION", - "FAIL" + "RECOMMENDATION", + "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[2]/div[2]", - "aria": "/document[1]/main[1]" + "dom": "/html[1]", + "aria": "/document[1]" }, - "ruleTime": 0, - "reasonId": "Fail_2", - "message": "The <div> element has the id \"firstDiv\" that is already in use", - "messageArgs": [ - "div", - "firstDiv" - ], + "reasonId": "Pass_0", + "message": "Rule Passed", + "messageArgs": [], "apiArgs": [], "bounds": { - "left": 8, - "top": 144, - "height": 0, - "width": 784 + "left": 0, + "top": 0, + "height": 144, + "width": 800 }, - "snippet": "<div id=\"firstDiv\">", + "snippet": "<html lang=\"en\">", "category": "Accessibility", - "level": "violation", - "ignored": true, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/element_id_unique.html#%7B%22message%22%3A%22The%20%3Cdiv%3E%20element%20has%20the%20id%20%5C%22firstDiv%5C%22%20that%20is%20already%20in%20use%22%2C%22snippet%22%3A%22%3Cdiv%20id%3D%5C%22firstDiv%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22FAIL%22%5D%2C%22reasonId%22%3A%22Fail_2%22%2C%22ruleId%22%3A%22element_id_unique%22%2C%22msgArgs%22%3A%5B%22div%22%2C%22firstDiv%22%5D%7D" + "level": "pass", + "ignored": false, + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_background.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Chtml%20lang%3D%5C%22en%5C%22%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_background%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "img_alt_background", + "ruleId": "html_skipnav_exists", "value": [ - "RECOMMENDATION", + "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[2]/div[2]", - "aria": "/document[1]/main[1]" + "dom": "/html[1]", + "aria": "/document[1]" }, - "ruleTime": 0, "reasonId": "Pass_0", "message": "Rule Passed", "messageArgs": [], "apiArgs": [], "bounds": { - "left": 8, - "top": 144, - "height": 0, - "width": 784 + "left": 0, + "top": 0, + "height": 144, + "width": 800 }, - "snippet": "<div id=\"firstDiv\">", + "snippet": "<html lang=\"en\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/img_alt_background.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20id%3D%5C%22firstDiv%5C%22%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22img_alt_background%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/html_skipnav_exists.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Chtml%20lang%3D%5C%22en%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22html_skipnav_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "text_quoted_correctly", + "ruleId": "html_lang_valid", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[2]/div[2]", - "aria": "/document[1]/main[1]" + "dom": "/html[1]", + "aria": "/document[1]" }, - "ruleTime": 0, "reasonId": "Pass_0", - "message": "Rule Passed", + "message": "Lang has a valid primary lang and conforms to BCP 47", "messageArgs": [], "apiArgs": [], "bounds": { - "left": 8, - "top": 144, - "height": 0, - "width": 784 + "left": 0, + "top": 0, + "height": 144, + "width": 800 }, - "snippet": "<div id=\"firstDiv\">", + "snippet": "<html lang=\"en\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_quoted_correctly.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20id%3D%5C%22firstDiv%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22text_quoted_correctly%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/html_lang_valid.html#%7B%22message%22%3A%22Lang%20has%20a%20valid%20primary%20lang%20and%20conforms%20to%20BCP%2047%22%2C%22snippet%22%3A%22%3Chtml%20lang%3D%5C%22en%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22html_lang_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { - "ruleId": "text_whitespace_valid", + "ruleId": "html_lang_exists", "value": [ "VIOLATION", "PASS" ], "path": { - "dom": "/html[1]/body[1]/div[2]/div[2]", - "aria": "/document[1]/main[1]" + "dom": "/html[1]", + "aria": "/document[1]" }, - "ruleTime": 0, - "reasonId": "pass", - "message": "Rule Passed", - "messageArgs": [], + "reasonId": "Pass_0", + "message": "Page language detected as \"en\"", + "messageArgs": [ + "en" + ], "apiArgs": [], "bounds": { - "left": 8, - "top": 144, - "height": 0, - "width": 784 + "left": 0, + "top": 0, + "height": 144, + "width": 800 }, - "snippet": "<div id=\"firstDiv\">", + "snippet": "<html lang=\"en\">", "category": "Accessibility", "level": "pass", "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/text_whitespace_valid.html#%7B%22message%22%3A%22Rule%20Passed%22%2C%22snippet%22%3A%22%3Cdiv%20id%3D%5C%22firstDiv%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22text_whitespace_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/html_lang_exists.html#%7B%22message%22%3A%22Page%20language%20detected%20as%20%5C%22en%5C%22%22%2C%22snippet%22%3A%22%3Chtml%20lang%3D%5C%22en%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22Pass_0%22%2C%22ruleId%22%3A%22html_lang_exists%22%2C%22msgArgs%22%3A%5B%22en%22%5D%7D" } ], "numExecuted": 65, - "ruleTime": 15, + "ruleTime": 999, "nls": { "html_lang_valid": { "0": "The default human language of the page must be valid and specified in accordance with BCP 47", @@ -1915,7 +1850,7 @@ "manual": 0, "pass": 64 }, - "scanTime": 102, + "scanTime": 999, "ruleArchive": "Preview Rules (preview)", "policies": [ "IBM_Accessibility" @@ -1928,10 +1863,10 @@ "manual", "pass" ], - "startScan": 1730216530896, - "URL": "data:text/html;charset=utf-8,%3C!DOCTYPE%20html%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20HTML%204.01%20Transitional%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FTR%2Fhtml4%2Floose.dtd%22%3E%0A%3C!--%0A%20%20%20%20%20%2F******************************************************************************%0A%20%20%20%20%20Copyright%3A%3A%202020-%20IBM%2C%20Inc%0A%0A%20%20%20%20Licensed%20under%20the%20Apache%20License%2C%20Version%202.0%20(the%20%22License%22)%3B%0A%20%20%20%20you%20may%20not%20use%20this%20file%20except%20in%20compliance%20with%20the%20License.%0A%20%20%20%20You%20may%20obtain%20a%20copy%20of%20the%20License%20at%0A%0A%20%20%20%20http%3A%2F%2Fwww.apache.org%2Flicenses%2FLICENSE-2.0%0A%0A%20%20%20%20Unless%20required%20by%20applicable%20law%20or%20agreed%20to%20in%20writing%2C%20software%0A%20%20%20%20distributed%20under%20the%20License%20is%20distributed%20on%20an%20%22AS%20IS%22%20BASIS%2C%0A%20%20%20%20WITHOUT%20WARRANTIES%20OR%20CONDITIONS%20OF%20ANY%20KIND%2C%20either%20express%20or%20implied.%0A%20%20%20%20See%20the%20License%20for%20the%20specific%20language%20governing%20permissions%20and%0A%20%20%20%20limitations%20under%20the%20License.%0A%20%20*****************************************************************************%2F%0A%0A--%3E%20%0A%3Chtml%20lang%3D%22en%22%3E%0A%0A%3Chead%3E%0A%20%20%20%20%3Ctitle%3EHelo%20World%3C%2Ftitle%3E%0A%20%20%20%20%3Cmeta%20charset%3D%22utf-8%22%3E%0A%20%20%20%20%3Cmeta%20name%3D%22Description%22%20content%3D%22text%22%3E%0A%3C%2Fhead%3E%0A%0A%3Cbody%3E%0A%20%20%20%20%3Cdiv%20role%3D%22navigation%22%3E%0A%20%20%20%20%20%20%20%20%3Ca%20href%3D%22%23navskip%22%20alt%3D%22skip%20to%20main%20content%22%3E%20NavSkip%20%3C%2Fa%3E%0A%20%20%20%20%3C%2Fdiv%3E%0A%0A%20%20%20%20%3Cdiv%20role%3D%22main%22%3E%0A%20%20%20%20%20%20%20%20%3Ca%20name%3D%22navskip%22%3E%3C%2Fa%3E%0A%0A%20%20%20%20%20%20%20%20%3C!--%20xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx%20--%3E%0A%0A%20%20%20%20%20%20%20%20%3Ch1%3EThis%20is%20a%20basic%20file%20to%20test%20that%20the%20karma-ibma%20is%20scanning%20for%20accessibility%20violations...%3C%2Fh1%3E%0A%0A%20%20%20%20%20%20%20%20%3Cdiv%20id%3D%22firstDiv%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C!--%3Cimg%20src%3D%22somfile.png%22%2F%3E--%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C!--%3Cimg%20src%3D%22somfile.png%22%2F%3E--%3E%0A%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%3Cdiv%20id%3D%22firstDiv%22%3E%0A%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%3C%2Fdiv%3E%0A%3Cscript%20type%3D%22text%2Fjavascript%22%3E%0A%2F%2F%3C!%5BCDATA%5B%0A%20%20if%20(typeof(OpenAjax)%20%3D%3D%20'undefined')%20OpenAjax%20%3D%20%7B%7D%0A%20%20if%20(typeof(OpenAjax.a11y)%20%3D%3D%20'undefined')%20OpenAjax.a11y%20%3D%20%7B%7D%0A%20%20OpenAjax.a11y.ruleCoverage%20%3D%20%5B%0A%20%20%20%20%7B%0A%20%20%20%20%20%20ruleId%3A%20%221%22%2C%0A%20%20%20%20%20%20passedXpaths%3A%20%5B%0A%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20failedXpaths%3A%20%5B%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%7D%2C%0A%20%20%5D%3B%0A%2F%2F%5D%5D%3E%0A%3C%2Fscript%3E%20%20%20%20%0A%3C%2Fbody%3E%0A%0A%3C%2Fhtml%3E%0A" + "startScan": 99999999999, + "URL": "<URL>" }, - "scanID": "4c52c455-f4c2-4b51-816d-3ae99de4b8de", + "scanID": "uuid", "toolID": "accessibility-checker-v3.0.0", "label": "JSONObjectStructureVerification.html" } \ No newline at end of file From c0dfd5557c87e613ccd3d4d8307fff4d23c85cf5 Mon Sep 17 00:00:00 2001 From: Shunguo <shunguoy@us.ibm.com> Date: Sun, 1 Dec 2024 20:35:57 -0600 Subject: [PATCH 10/18] Update JSONObjectStructureVerificationSelenium.html.json --- .../JSONObjectStructureVerificationSelenium.html.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/accessibility-checker/test/baselines/JSONObjectStructureVerificationSelenium.html.json b/accessibility-checker/test/baselines/JSONObjectStructureVerificationSelenium.html.json index cfd47e5a7..270cb9d3d 100644 --- a/accessibility-checker/test/baselines/JSONObjectStructureVerificationSelenium.html.json +++ b/accessibility-checker/test/baselines/JSONObjectStructureVerificationSelenium.html.json @@ -458,11 +458,11 @@ "ruleId": "aria_accessiblename_exists", "snippet": "<h1>", "value": [ - "RECOMMENDATION", + "INFORMATION", "PASS" ], "ignored": false, - "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_accessiblename_exists.html#%7B%22message%22%3A%22An%20accessible%20name%20is%20provided%20for%20the%20element%22%2C%22snippet%22%3A%22%3Ch1%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22aria_accessiblename_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" + "help": "https://able.ibm.com/rules/archives/preview/doc/en-US/aria_accessiblename_exists.html#%7B%22message%22%3A%22An%20accessible%20name%20is%20provided%20for%20the%20element%22%2C%22snippet%22%3A%22%3Ch1%3E%22%2C%22value%22%3A%5B%22INFORMATION%22%2C%22PASS%22%5D%2C%22reasonId%22%3A%22pass%22%2C%22ruleId%22%3A%22aria_accessiblename_exists%22%2C%22msgArgs%22%3A%5B%5D%7D" }, { "apiArgs": [], From d78caa66de2738dd1dd06b0f589a398185114817 Mon Sep 17 00:00:00 2001 From: Shunguo <shunguoy@us.ibm.com> Date: Mon, 2 Dec 2024 19:55:20 -0600 Subject: [PATCH 11/18] Update achecker.cy.js --- .../test/cypress/e2e/achecker.cy.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cypress-accessibility-checker/test/cypress/e2e/achecker.cy.js b/cypress-accessibility-checker/test/cypress/e2e/achecker.cy.js index 835735ded..e46085f4b 100644 --- a/cypress-accessibility-checker/test/cypress/e2e/achecker.cy.js +++ b/cypress-accessibility-checker/test/cypress/e2e/achecker.cy.js @@ -44,7 +44,7 @@ context('Accessibility checker tests', () => { cy.visit('no-violations.html') .getCompliance('assert compliance rc 0 no baseline') .assertCompliance() - .then((rc) => { + .then((rc) => {console.warn("no-violations rc=" + rc); return expect(rc).to.equal(0) }); }); @@ -53,7 +53,7 @@ context('Accessibility checker tests', () => { cy.visit('violations.html') .getCompliance('violations') .assertCompliance(false) - .then((rc) => expect(rc).to.equal(0)); + .then((rc) => {console.warn("violations rc=" + rc); expect(rc).to.equal(0)}); }); it('Fails when the baselines dont match', () => { @@ -61,7 +61,7 @@ context('Accessibility checker tests', () => { cy.visit('violations.html') .getCompliance('violations-no-match') .assertCompliance(false) - .then((rc) => { + .then((rc) => { console.warn("violations no match rc=" + rc); expect(rc).to.equal(1); }) }); @@ -70,7 +70,7 @@ context('Accessibility checker tests', () => { cy.visit('violations.html') .getCompliance('assert compliance rc 2') .assertCompliance(false) // Don't actually run the assertion in the command so we can check the output - .then((rc) => expect(rc).to.equal(2)); + .then((rc) => {console.warn("violations rc2=" + rc);expect(rc).to.equal(2)}); }); }); From e1080bc8b320cd620ddb13e21eb4981f80747364 Mon Sep 17 00:00:00 2001 From: Shunguo <shunguoy@us.ibm.com> Date: Mon, 2 Dec 2024 20:34:16 -0600 Subject: [PATCH 12/18] Update achecker.cy.js --- cypress-accessibility-checker/test/cypress/e2e/achecker.cy.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cypress-accessibility-checker/test/cypress/e2e/achecker.cy.js b/cypress-accessibility-checker/test/cypress/e2e/achecker.cy.js index e46085f4b..f94c89602 100644 --- a/cypress-accessibility-checker/test/cypress/e2e/achecker.cy.js +++ b/cypress-accessibility-checker/test/cypress/e2e/achecker.cy.js @@ -85,13 +85,13 @@ context('Accessibility checker tests', () => { it('getDiffResults() should return diff between scan and baseline', () => { // Compare violations to a no-violations baseline cy.visit('violations.html') - .getCompliance('violations-no-match') + .getCompliance('violations-no-match-diff') .assertCompliance(false) .then((rc) => { expect(rc).to.equal(1); }) - cy.getDiffResults('violations-no-match').then((result) => { + cy.getDiffResults('violations-no-match-diff').then((result) => { expect(result).not.to.be.null; result.forEach((obj) => expect(obj.kind).not.to.be.null); // Check object is what we expect result.forEach((obj) => expect(obj.kind).not.to.be.undefined); From e0b6ab13120dbbb1fe526e21bdd59f0c19a73a87 Mon Sep 17 00:00:00 2001 From: Shunguo <shunguoy@us.ibm.com> Date: Mon, 2 Dec 2024 20:45:53 -0600 Subject: [PATCH 13/18] Create violations-no-match-diff.json --- .../baselines/violations-no-match-diff.json | 231 ++++++++++++++++++ 1 file changed, 231 insertions(+) create mode 100644 cypress-accessibility-checker/test/baselines/violations-no-match-diff.json diff --git a/cypress-accessibility-checker/test/baselines/violations-no-match-diff.json b/cypress-accessibility-checker/test/baselines/violations-no-match-diff.json new file mode 100644 index 000000000..188d7dc7a --- /dev/null +++ b/cypress-accessibility-checker/test/baselines/violations-no-match-diff.json @@ -0,0 +1,231 @@ +{ + "results": [ + { + "ruleId": "WCAG20_Html_HasLang", + "value": [ + "VIOLATION", + "FAIL" + ], + "path": { + "dom": "/html[1]", + "aria": "/document[1]" + }, + "ruleTime": 0, + "reasonId": "Fail_3", + "message": "Page detected as HTML, but does not have a 'lang' attribute", + "messageArgs": [], + "apiArgs": [], + "bounds": { + "left": 0, + "top": 0, + "height": 1320, + "width": 2000 + }, + "snippet": "<html>", + "category": "Accessibility", + "ignored": false, + "level": "violation" + }, + { + "ruleId": "WCAG20_Html_HasLang", + "value": [ + "VIOLATION", + "FAIL" + ], + "path": { + "dom": "/html[1]/body[1]", + "aria": "/document[1]" + }, + "ruleTime": 0, + "reasonId": "Fail_3", + "message": "Page detected as HTML, but does not have a 'lang' attribute", + "messageArgs": [], + "apiArgs": [], + "bounds": { + "left": 0, + "top": 0, + "height": 1320, + "width": 2000 + }, + "snippet": "<html>", + "category": "Accessibility", + "ignored": false, + "level": "violation" + }, + { + "ruleId": "WCAG20_Body_FirstASkips_Native_Host_Sematics", + "value": [ + "VIOLATION", + "FAIL" + ], + "path": { + "dom": "/html[1]/body[1]", + "aria": "/document[1]" + }, + "ruleTime": 0, + "reasonId": "Fail_1", + "message": "The page does not provide a way to quickly navigate to the main content (WAI-ARIA \"main\" landmark or a skip link)", + "messageArgs": [], + "apiArgs": [], + "bounds": { + "left": 16, + "top": 16, + "height": 1288, + "width": 1968 + }, + "snippet": "<body>", + "category": "Accessibility", + "ignored": false, + "level": "violation" + }, + { + "ruleId": "Rpt_Aria_OrphanedContent_Native_Host_Sematics", + "value": [ + "VIOLATION", + "FAIL" + ], + "path": { + "dom": "/html[1]/body[1]/h1[1]", + "aria": "/document[1]/heading[1]" + }, + "ruleTime": 0, + "reasonId": "Fail_1", + "message": "Content is not within a landmark element", + "messageArgs": [], + "apiArgs": [], + "bounds": { + "left": 16, + "top": 16, + "height": 74, + "width": 1968 + }, + "snippet": "<h1>", + "category": "Accessibility", + "ignored": false, + "level": "violation" + }, + { + "ruleId": "WCAG20_Img_HasAlt", + "value": [ + "VIOLATION", + "FAIL" + ], + "path": { + "dom": "/html[1]/body[1]/img[1]", + "aria": "/document[1]/img[1]" + }, + "ruleTime": 0, + "reasonId": "Fail_2", + "message": "Image does not have an 'alt' attribute short text alternative", + "messageArgs": [], + "apiArgs": [], + "bounds": { + "left": 16, + "top": 133, + "height": 32, + "width": 32 + }, + "snippet": "<img src=\"missing-alt.jpg\">", + "category": "Accessibility", + "ignored": false, + "level": "violation" + } + ], + "numExecuted": 68, + "nls": { + "WCAG20_Html_HasLang": { + "0": "Page must identify the default language of the document with a 'lang' attribute", + "Fail_3": "Page detected as HTML, but does not have a 'lang' attribute" + }, + "RPT_Html_SkipNav": { + "0": "Provide a way to bypass blocks of content that are repeated on multiple Web pages", + "Pass_0": "Rule Passed" + }, + "WCAG20_Doc_HasTitle": { + "0": "The page should have a title that correctly identifies the subject of the page", + "Pass_0": "Rule Passed" + }, + "HAAC_BackgroundImg_HasTextOrTitle": { + "0": "Background images that convey important information must have a text alternative that describes the image", + "Pass_0": "Rule Passed" + }, + "RPT_List_UseMarkup": { + "0": "Use proper HTML list elements to create lists", + "Pass_0": "Rule Passed" + }, + "RPT_Text_SensoryReference": { + "0": "Instructions must be meaningful without shape or location words", + "Pass_0": "Rule Passed" + }, + "WCAG20_Text_Emoticons": { + "0": "Emoticons must have a short text alternative that describes their purpose", + "Pass_0": "Rule Passed" + }, + "WCAG20_Text_LetterSpacing": { + "0": "Use CSS 'letter-spacing' to control spacing within a word", + "Pass_0": "Rule Passed" + }, + "text_quoted_correctly": { + "0": "Quotations should be marked with <q> or <blockquote> elements", + "Pass_0": "Rule Passed" + }, + "IBMA_Color_Contrast_WCAG2AA_PV": { + "0": "The contrast ratio of text with its background (i.e. background with a color gradient or a background image) must meet WCAG AA requirements", + "Pass_0": "Rule Passed" + }, + "Rpt_Aria_OrphanedContent_Native_Host_Sematics": { + "0": "All content must reside within an element with a landmark role", + "Pass_0": "Rule Passed", + "Fail_1": "Content is not within a landmark element" + }, + "RPT_Title_Valid": { + "0": "Page <title> should be a descriptive title, rather than a filename", + "Pass_0": "Rule Passed" + }, + "WCAG20_Body_FirstASkips_Native_Host_Sematics": { + "0": "Pages must provide a way to skip directly to the main content", + "Fail_1": "The page does not provide a way to quickly navigate to the main content (WAI-ARIA \"main\" landmark or a skip link)" + }, + "RPT_Header_HasContent": { + "0": "Heading elements must provide descriptive text", + "Pass_0": "Rule Passed" + }, + "IBMA_Color_Contrast_WCAG2AA": { + "0": "The contrast ratio of text with its background must meet WCAG AA requirements", + "Pass_0": "Rule Passed" + }, + "RPT_Headers_FewWords": { + "0": "Heading elements must not be used for presentation", + "Pass_0": "Rule Passed" + }, + "WCAG20_Img_HasAlt": { + "0": "Images must have an 'alt' attribute with a short text alternative if they convey meaning, or 'alt=\"\" if decorative", + "Fail_2": "Image does not have an 'alt' attribute short text alternative" + }, + "RPT_Img_AltCommonMisuse": { + "0": "'alt' attribute value must be a good inline replacement for the image", + "Pass_0": "Rule Passed" + } + }, + "summary": { + "counts": { + "violation": 4, + "potentialviolation": 0, + "ignored": 0 + }, + "scanTime": 8, + "ruleArchive": "Latest Deployment (latest)", + "policies": [ + "IBM_Accessibility" + ], + "reportLevels": [ + "violation", + "potentialviolation" + ], + "startScan": 1601312544640, + "URL": "http://localhost:8080/test/sample-html/violations.html" + }, + "scanID": "5773ad6e-e758-4656-8784-af63c59944fe", + "toolID": "cypress-accessibility-checker-v3.0.0", + "label": "violations-no-match" +} \ No newline at end of file From a4df4255e2287a02e65404079a74d443efdbe943 Mon Sep 17 00:00:00 2001 From: Shunguo <shunguoy@us.ibm.com> Date: Mon, 2 Dec 2024 21:07:09 -0600 Subject: [PATCH 14/18] clean up code #2090 --- .../baselines/violations-no-match-diff.json | 231 ------------------ .../test/cypress/e2e/achecker.cy.js | 4 +- 2 files changed, 2 insertions(+), 233 deletions(-) delete mode 100644 cypress-accessibility-checker/test/baselines/violations-no-match-diff.json diff --git a/cypress-accessibility-checker/test/baselines/violations-no-match-diff.json b/cypress-accessibility-checker/test/baselines/violations-no-match-diff.json deleted file mode 100644 index 188d7dc7a..000000000 --- a/cypress-accessibility-checker/test/baselines/violations-no-match-diff.json +++ /dev/null @@ -1,231 +0,0 @@ -{ - "results": [ - { - "ruleId": "WCAG20_Html_HasLang", - "value": [ - "VIOLATION", - "FAIL" - ], - "path": { - "dom": "/html[1]", - "aria": "/document[1]" - }, - "ruleTime": 0, - "reasonId": "Fail_3", - "message": "Page detected as HTML, but does not have a 'lang' attribute", - "messageArgs": [], - "apiArgs": [], - "bounds": { - "left": 0, - "top": 0, - "height": 1320, - "width": 2000 - }, - "snippet": "<html>", - "category": "Accessibility", - "ignored": false, - "level": "violation" - }, - { - "ruleId": "WCAG20_Html_HasLang", - "value": [ - "VIOLATION", - "FAIL" - ], - "path": { - "dom": "/html[1]/body[1]", - "aria": "/document[1]" - }, - "ruleTime": 0, - "reasonId": "Fail_3", - "message": "Page detected as HTML, but does not have a 'lang' attribute", - "messageArgs": [], - "apiArgs": [], - "bounds": { - "left": 0, - "top": 0, - "height": 1320, - "width": 2000 - }, - "snippet": "<html>", - "category": "Accessibility", - "ignored": false, - "level": "violation" - }, - { - "ruleId": "WCAG20_Body_FirstASkips_Native_Host_Sematics", - "value": [ - "VIOLATION", - "FAIL" - ], - "path": { - "dom": "/html[1]/body[1]", - "aria": "/document[1]" - }, - "ruleTime": 0, - "reasonId": "Fail_1", - "message": "The page does not provide a way to quickly navigate to the main content (WAI-ARIA \"main\" landmark or a skip link)", - "messageArgs": [], - "apiArgs": [], - "bounds": { - "left": 16, - "top": 16, - "height": 1288, - "width": 1968 - }, - "snippet": "<body>", - "category": "Accessibility", - "ignored": false, - "level": "violation" - }, - { - "ruleId": "Rpt_Aria_OrphanedContent_Native_Host_Sematics", - "value": [ - "VIOLATION", - "FAIL" - ], - "path": { - "dom": "/html[1]/body[1]/h1[1]", - "aria": "/document[1]/heading[1]" - }, - "ruleTime": 0, - "reasonId": "Fail_1", - "message": "Content is not within a landmark element", - "messageArgs": [], - "apiArgs": [], - "bounds": { - "left": 16, - "top": 16, - "height": 74, - "width": 1968 - }, - "snippet": "<h1>", - "category": "Accessibility", - "ignored": false, - "level": "violation" - }, - { - "ruleId": "WCAG20_Img_HasAlt", - "value": [ - "VIOLATION", - "FAIL" - ], - "path": { - "dom": "/html[1]/body[1]/img[1]", - "aria": "/document[1]/img[1]" - }, - "ruleTime": 0, - "reasonId": "Fail_2", - "message": "Image does not have an 'alt' attribute short text alternative", - "messageArgs": [], - "apiArgs": [], - "bounds": { - "left": 16, - "top": 133, - "height": 32, - "width": 32 - }, - "snippet": "<img src=\"missing-alt.jpg\">", - "category": "Accessibility", - "ignored": false, - "level": "violation" - } - ], - "numExecuted": 68, - "nls": { - "WCAG20_Html_HasLang": { - "0": "Page must identify the default language of the document with a 'lang' attribute", - "Fail_3": "Page detected as HTML, but does not have a 'lang' attribute" - }, - "RPT_Html_SkipNav": { - "0": "Provide a way to bypass blocks of content that are repeated on multiple Web pages", - "Pass_0": "Rule Passed" - }, - "WCAG20_Doc_HasTitle": { - "0": "The page should have a title that correctly identifies the subject of the page", - "Pass_0": "Rule Passed" - }, - "HAAC_BackgroundImg_HasTextOrTitle": { - "0": "Background images that convey important information must have a text alternative that describes the image", - "Pass_0": "Rule Passed" - }, - "RPT_List_UseMarkup": { - "0": "Use proper HTML list elements to create lists", - "Pass_0": "Rule Passed" - }, - "RPT_Text_SensoryReference": { - "0": "Instructions must be meaningful without shape or location words", - "Pass_0": "Rule Passed" - }, - "WCAG20_Text_Emoticons": { - "0": "Emoticons must have a short text alternative that describes their purpose", - "Pass_0": "Rule Passed" - }, - "WCAG20_Text_LetterSpacing": { - "0": "Use CSS 'letter-spacing' to control spacing within a word", - "Pass_0": "Rule Passed" - }, - "text_quoted_correctly": { - "0": "Quotations should be marked with <q> or <blockquote> elements", - "Pass_0": "Rule Passed" - }, - "IBMA_Color_Contrast_WCAG2AA_PV": { - "0": "The contrast ratio of text with its background (i.e. background with a color gradient or a background image) must meet WCAG AA requirements", - "Pass_0": "Rule Passed" - }, - "Rpt_Aria_OrphanedContent_Native_Host_Sematics": { - "0": "All content must reside within an element with a landmark role", - "Pass_0": "Rule Passed", - "Fail_1": "Content is not within a landmark element" - }, - "RPT_Title_Valid": { - "0": "Page <title> should be a descriptive title, rather than a filename", - "Pass_0": "Rule Passed" - }, - "WCAG20_Body_FirstASkips_Native_Host_Sematics": { - "0": "Pages must provide a way to skip directly to the main content", - "Fail_1": "The page does not provide a way to quickly navigate to the main content (WAI-ARIA \"main\" landmark or a skip link)" - }, - "RPT_Header_HasContent": { - "0": "Heading elements must provide descriptive text", - "Pass_0": "Rule Passed" - }, - "IBMA_Color_Contrast_WCAG2AA": { - "0": "The contrast ratio of text with its background must meet WCAG AA requirements", - "Pass_0": "Rule Passed" - }, - "RPT_Headers_FewWords": { - "0": "Heading elements must not be used for presentation", - "Pass_0": "Rule Passed" - }, - "WCAG20_Img_HasAlt": { - "0": "Images must have an 'alt' attribute with a short text alternative if they convey meaning, or 'alt=\"\" if decorative", - "Fail_2": "Image does not have an 'alt' attribute short text alternative" - }, - "RPT_Img_AltCommonMisuse": { - "0": "'alt' attribute value must be a good inline replacement for the image", - "Pass_0": "Rule Passed" - } - }, - "summary": { - "counts": { - "violation": 4, - "potentialviolation": 0, - "ignored": 0 - }, - "scanTime": 8, - "ruleArchive": "Latest Deployment (latest)", - "policies": [ - "IBM_Accessibility" - ], - "reportLevels": [ - "violation", - "potentialviolation" - ], - "startScan": 1601312544640, - "URL": "http://localhost:8080/test/sample-html/violations.html" - }, - "scanID": "5773ad6e-e758-4656-8784-af63c59944fe", - "toolID": "cypress-accessibility-checker-v3.0.0", - "label": "violations-no-match" -} \ No newline at end of file diff --git a/cypress-accessibility-checker/test/cypress/e2e/achecker.cy.js b/cypress-accessibility-checker/test/cypress/e2e/achecker.cy.js index f94c89602..e46085f4b 100644 --- a/cypress-accessibility-checker/test/cypress/e2e/achecker.cy.js +++ b/cypress-accessibility-checker/test/cypress/e2e/achecker.cy.js @@ -85,13 +85,13 @@ context('Accessibility checker tests', () => { it('getDiffResults() should return diff between scan and baseline', () => { // Compare violations to a no-violations baseline cy.visit('violations.html') - .getCompliance('violations-no-match-diff') + .getCompliance('violations-no-match') .assertCompliance(false) .then((rc) => { expect(rc).to.equal(1); }) - cy.getDiffResults('violations-no-match-diff').then((result) => { + cy.getDiffResults('violations-no-match').then((result) => { expect(result).not.to.be.null; result.forEach((obj) => expect(obj.kind).not.to.be.null); // Check object is what we expect result.forEach((obj) => expect(obj.kind).not.to.be.undefined); From a8f9d23e0f718ac31a5fd0fb57a485132ab8e152 Mon Sep 17 00:00:00 2001 From: Shunguo <shunguoy@us.ibm.com> Date: Mon, 2 Dec 2024 22:00:29 -0600 Subject: [PATCH 15/18] Update violations.json --- .../test/baselines/violations.json | 34 ------------------- 1 file changed, 34 deletions(-) diff --git a/cypress-accessibility-checker/test/baselines/violations.json b/cypress-accessibility-checker/test/baselines/violations.json index 48d3a1fab..0055e11f5 100644 --- a/cypress-accessibility-checker/test/baselines/violations.json +++ b/cypress-accessibility-checker/test/baselines/violations.json @@ -107,36 +107,6 @@ "level": "violation", "ignored": true, "help": "https://able.ibm.com/rules/archives/2024.10.01/doc/en-US/img_alt_valid.html#%7B%22message%22%3A%22The%20image%20has%20neither%20an%20accessible%20name%20nor%20is%20marked%20as%20decorative%20or%20redundant%22%2C%22snippet%22%3A%22%3Cimg%20src%3D%5C%22missing-alt.jpg%5C%22%3E%22%2C%22value%22%3A%5B%22VIOLATION%22%2C%22FAIL%22%5D%2C%22reasonId%22%3A%22fail_no_alt%22%2C%22ruleId%22%3A%22img_alt_valid%22%2C%22msgArgs%22%3A%5B%5D%7D" - }, - { - "ruleId": "aria_accessiblename_exists", - "value": [ - "RECOMMENDATION", - "FAIL" - ], - "path": { - "dom": "/html[1]/body[1]/img[1]", - "aria": "/document[1]/img[1]" - }, - "ruleTime": 0, - "reasonId": "fail_no_accessible_name", - "message": "Element <img> with \"img\" role has no accessible name", - "messageArgs": [ - "img", - "img" - ], - "apiArgs": [], - "bounds": { - "left": 16, - "top": 133, - "height": 32, - "width": 32 - }, - "snippet": "<img src=\"missing-alt.jpg\">", - "category": "Accessibility", - "level": "recommendation", - "ignored": false, - "help": "https://able.ibm.com/rules/archives/2024.10.01/doc/en-US/aria_accessiblename_exists.html#%7B%22message%22%3A%22Element%20%3Cimg%3E%20with%20%5C%22img%5C%22%20role%20has%20no%20accessible%20name%22%2C%22snippet%22%3A%22%3Cimg%20src%3D%5C%22missing-alt.jpg%5C%22%3E%22%2C%22value%22%3A%5B%22RECOMMENDATION%22%2C%22FAIL%22%5D%2C%22reasonId%22%3A%22fail_no_accessible_name%22%2C%22ruleId%22%3A%22aria_accessiblename_exists%22%2C%22msgArgs%22%3A%5B%22img%22%2C%22img%22%5D%7D" } ], "numExecuted": 28, @@ -154,10 +124,6 @@ "0": "Pages must provide a way to skip directly to the main content", "Fail_1": "The page does not provide a way to quickly navigate to the main content (ARIA \"main\" landmark or a skip link)" }, - "aria_accessiblename_exists": { - "0": "Elements with certain roles should have accessible names", - "fail_no_accessible_name": "Element <{0}> with \"{1}\" role has no accessible name" - }, "img_alt_valid": { "0": "Images must have accessible names unless they are decorative or redundant", "fail_no_alt": "The image has neither an accessible name nor is marked as decorative or redundant" From f2e233d66a75e9308fda2f7b8a7c6662359fb50c Mon Sep 17 00:00:00 2001 From: Shunguo <shunguoy@us.ibm.com> Date: Mon, 2 Dec 2024 22:14:37 -0600 Subject: [PATCH 16/18] Update achecker.cy.js --- .../test/cypress/e2e/achecker.cy.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cypress-accessibility-checker/test/cypress/e2e/achecker.cy.js b/cypress-accessibility-checker/test/cypress/e2e/achecker.cy.js index e46085f4b..835735ded 100644 --- a/cypress-accessibility-checker/test/cypress/e2e/achecker.cy.js +++ b/cypress-accessibility-checker/test/cypress/e2e/achecker.cy.js @@ -44,7 +44,7 @@ context('Accessibility checker tests', () => { cy.visit('no-violations.html') .getCompliance('assert compliance rc 0 no baseline') .assertCompliance() - .then((rc) => {console.warn("no-violations rc=" + rc); + .then((rc) => { return expect(rc).to.equal(0) }); }); @@ -53,7 +53,7 @@ context('Accessibility checker tests', () => { cy.visit('violations.html') .getCompliance('violations') .assertCompliance(false) - .then((rc) => {console.warn("violations rc=" + rc); expect(rc).to.equal(0)}); + .then((rc) => expect(rc).to.equal(0)); }); it('Fails when the baselines dont match', () => { @@ -61,7 +61,7 @@ context('Accessibility checker tests', () => { cy.visit('violations.html') .getCompliance('violations-no-match') .assertCompliance(false) - .then((rc) => { console.warn("violations no match rc=" + rc); + .then((rc) => { expect(rc).to.equal(1); }) }); @@ -70,7 +70,7 @@ context('Accessibility checker tests', () => { cy.visit('violations.html') .getCompliance('assert compliance rc 2') .assertCompliance(false) // Don't actually run the assertion in the command so we can check the output - .then((rc) => {console.warn("violations rc2=" + rc);expect(rc).to.equal(2)}); + .then((rc) => expect(rc).to.equal(2)); }); }); From b6265315f9f48eabedbdf3c33feda7f78f4cdaf5 Mon Sep 17 00:00:00 2001 From: Shunguo <shunguoy@us.ibm.com> Date: Tue, 10 Dec 2024 10:30:43 -0600 Subject: [PATCH 17/18] update ACT mapping #2090 --- .../src/v4/rules/aria_accessiblename_exists.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/accessibility-checker-engine/src/v4/rules/aria_accessiblename_exists.ts b/accessibility-checker-engine/src/v4/rules/aria_accessiblename_exists.ts index 5efea7429..4d6f6a7c9 100644 --- a/accessibility-checker-engine/src/v4/rules/aria_accessiblename_exists.ts +++ b/accessibility-checker-engine/src/v4/rules/aria_accessiblename_exists.ts @@ -50,7 +50,7 @@ export const aria_accessiblename_exists: Rule = { "toolkitLevel": eToolkitLevel.LEVEL_ONE, reasonCodes: ["fail_no_accessible_name_image"] }], - act: [], + act: [{"23a2a8": {"fail_no_accessible_name_image": "fail"}}], run: (context: RuleContext, options?: {}, contextHierarchies?: RuleContextHierarchy): RuleResult | RuleResult[] => { const ruleContext = context["dom"].node as Element; From ab2c1e66d5fbfe245dfd8bec2767767f90f2fb50 Mon Sep 17 00:00:00 2001 From: Shunguo <shunguoy@us.ibm.com> Date: Wed, 11 Dec 2024 14:16:57 -0600 Subject: [PATCH 18/18] update reasonCode mapping #1090 --- .../src/v4/checker/Checker.ts | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/accessibility-checker-engine/src/v4/checker/Checker.ts b/accessibility-checker-engine/src/v4/checker/Checker.ts index aaab4076e..78df46c9a 100644 --- a/accessibility-checker-engine/src/v4/checker/Checker.ts +++ b/accessibility-checker-engine/src/v4/checker/Checker.ts @@ -311,21 +311,27 @@ export class Checker implements IChecker { } for (const rsId of rsIds) { if (rsId in rsInfo) { - Object.keys(rsInfo[rsId]).forEach(code => { + const reCode = new RegExp(`(^|--)${reasonCode}($|--)`); + Object.keys(rsInfo[rsId]).forEach(code => { let level = null; - const reCode = new RegExp(`(^|--)${reasonCode}($|--)`); if (code === 'None') level = rsInfo[rsId]["None"]; else if (reCode.test(code)) - level = rsInfo[rsId][code]; - if (level === eRulePolicy.VIOLATION) { - retVal = eRulePolicy.VIOLATION; - } else if (level === eRulePolicy.RECOMMENDATION && retVal === null) { - retVal = eRulePolicy.RECOMMENDATION; - } else if (retVal === null) { - retVal = eRulePolicy.INFORMATION; - } - }); + level = rsInfo[rsId][code]; + + if (level !== null) { + if (level === eRulePolicy.VIOLATION) { + retVal = eRulePolicy.VIOLATION; + } else if (level === eRulePolicy.RECOMMENDATION && retVal === null) { + retVal = eRulePolicy.RECOMMENDATION; + } else if (retVal === null) { + retVal = eRulePolicy.INFORMATION; + } + } + }); + if (retVal === null) { + retVal = eRulePolicy.INFORMATION; + } } } }