{
 "fixture": "/benchmarks/tool-benchmark-fixture-2026-09.html",
 "runDate": "2026-10-14",
 "browser": "Chrome/155.0.8059.39",
 "tools": {
  "axe-core": "4.14.0 via @axe-core/puppeteer 4.13.0 (axeSource injected)",
  "lighthouse": "13.5.0",
  "pa11y": "10.0.0 (@pa11y/html_codesniffer 2.6.0), WCAG2AA",
  "accessibility-checker": "4.0.34, WCAG_2_2 policy"
 },
 "results": {
  "axe": {
   "version": "4.14.0",
   "violations": [
    {
     "id": "aria-required-attr",
     "tags": [
      "cat.aria",
      "wcag2a",
      "wcag412",
      "EN-301-549",
      "EN-9.4.1.2",
      "RGAAv4",
      "RGAA-7.1.1"
     ],
     "nodes": [
      "<span role=\"checkbox\">Checkbox role, no aria-checked (F18, 4.1.2)</span>"
     ]
    },
    {
     "id": "aria-roles",
     "tags": [
      "cat.aria",
      "wcag2a",
      "wcag412",
      "EN-301-549",
      "EN-9.4.1.2",
      "RGAAv4",
      "RGAA-7.1.1"
     ],
     "nodes": [
      "<div role=\"banana\">Invalid role (F20, 4.1.2)</div>"
     ]
    },
    {
     "id": "button-name",
     "tags": [
      "cat.name-role-value",
      "wcag2a",
      "wcag412",
      "section508",
      "section508.22.a",
      "TTv5",
      "TT6.a",
      "EN-301-549",
      "EN-9.4.1.2",
      "ACT",
      "RGAAv4",
      "RGAA-11.9.1"
     ],
     "nodes": [
      "<button></button>"
     ]
    },
    {
     "id": "color-contrast",
     "tags": [
      "cat.color",
      "wcag2aa",
      "wcag143",
      "TTv5",
      "TT13.c",
      "EN-301-549",
      "EN-9.1.4.3",
      "ACT",
      "RGAAv4",
      "RGAA-3.2.1"
     ],
     "nodes": [
      "<p class=\"low\">Low contrast text #999 on white (F04, 1.4.3)</p>",
      "<p class=\"tiny grey\">Very small grey text (F05, 1.4.3 combined with size)</p>"
     ]
    },
    {
     "id": "frame-title",
     "tags": [
      "cat.text-alternatives",
      "wcag2a",
      "wcag412",
      "section508",
      "section508.22.i",
      "TTv5",
      "TT12.d",
      "EN-301-549",
      "EN-9.4.1.2",
      "RGAAv4",
      "RGAA-2.1.1"
     ],
     "nodes": [
      "<iframe src=\"about:blank\"></iframe>"
     ]
    },
    {
     "id": "html-has-lang",
     "tags": [
      "cat.language",
      "wcag2a",
      "wcag311",
      "TTv5",
      "TT11.a",
      "EN-301-549",
      "EN-9.3.1.1",
      "ACT",
      "RGAAv4",
      "RGAA-8.3.1"
     ],
     "nodes": [
      "<html>"
     ]
    },
    {
     "id": "image-alt",
     "tags": [
      "cat.text-alternatives",
      "wcag2a",
      "wcag111",
      "section508",
      "section508.22.a",
      "TTv5",
      "TT7.a",
      "TT7.b",
      "EN-301-549",
      "EN-9.1.1.1",
      "ACT",
      "RGAAv4",
      "RGAA-1.1.1"
     ],
     "nodes": [
      "<img src=\"logo.png\">"
     ]
    },
    {
     "id": "input-button-name",
     "tags": [
      "cat.name-role-value",
      "wcag2a",
      "wcag412",
      "section508",
      "section508.22.a",
      "TTv5",
      "TT5.c",
      "EN-301-549",
      "EN-9.4.1.2",
      "ACT",
      "RGAAv4",
      "RGAA-11.9.1"
     ],
     "nodes": [
      "<input type=\"submit\" value=\"\">"
     ]
    },
    {
     "id": "input-image-alt",
     "tags": [
      "cat.text-alternatives",
      "wcag2a",
      "wcag111",
      "wcag412",
      "section508",
      "section508.22.a",
      "TTv5",
      "TT7.a",
      "EN-301-549",
      "EN-9.1.1.1",
      "EN-9.4.1.2",
      "ACT",
      "RGAAv4",
      "RGAA-1.1.3"
     ],
     "nodes": [
      "<input type=\"image\" src=\"go.png\">"
     ]
    },
    {
     "id": "label",
     "tags": [
      "cat.forms",
      "wcag2a",
      "wcag412",
      "section508",
      "section508.22.n",
      "TTv5",
      "TT5.c",
      "EN-301-549",
      "EN-9.4.1.2",
      "ACT",
      "RGAAv4",
      "RGAA-11.1.1"
     ],
     "nodes": [
      "<input type=\"text\" name=\"q\">",
      "<input type=\"checkbox\" id=\"c1\">"
     ]
    },
    {
     "id": "landmark-one-main",
     "tags": [
      "cat.semantics",
      "best-practice"
     ],
     "nodes": [
      "<html>",
      "<html><head></head><body></body></html>"
     ]
    },
    {
     "id": "link-name",
     "tags": [
      "cat.name-role-value",
      "wcag2a",
      "wcag244",
      "wcag412",
      "section508",
      "section508.22.a",
      "TTv5",
      "TT6.a",
      "EN-301-549",
      "EN-9.2.4.4",
      "EN-9.4.1.2",
      "ACT",
      "RGAAv4",
      "RGAA-6.2.1"
     ],
     "nodes": [
      "<a href=\"/x\"><img src=\"icon.png\" alt=\"\"></a>"
     ]
    },
    {
     "id": "marquee",
     "tags": [
      "cat.parsing",
      "wcag2a",
      "wcag222",
      "TTv5",
      "TT2.b",
      "EN-301-549",
      "EN-9.2.2.2",
      "RGAAv4",
      "RGAA-13.8.1"
     ],
     "nodes": [
      "<marquee>Moving text (F24, 2.2.2)</marquee>"
     ]
    },
    {
     "id": "region",
     "tags": [
      "cat.keyboard",
      "best-practice",
      "RGAAv4",
      "RGAA-9.2.1"
     ],
     "nodes": [
      "<div class=\"banner\"><img src=\"logo.png\"><!-- F02 img no alt (1.1.1) --></div>",
      "<h3>Skipped heading level (F03, 1.3.1 best practice)</h3>",
      "<p class=\"low\">Low contrast text #999 on white (F04, 1.4.3)</p>",
      "<p class=\"tiny grey\">Very small grey text (F05, 1.4.3 combined with size)</p>",
      "<a href=\"/more\">click here</a>",
      "<div onclick=\"go()\">Fake button div (F09, keyboard 2.1.1)</div>",
      "<input type=\"text\" name=\"q\">",
      "<select name=\"s\"><option>One</option></select>",
      "<label for=\"nope\">Orphan label</label>",
      "<input type=\"checkbox\" id=\"c1\">",
      "<table><tbody><tr><td>Layout table used for data (F15, 1.3.1)</td><td>Cell</td></tr></tbody></table>",
      "<table><caption>Data table</caption><tbody><tr><td>No header cells</td><td>F16</td></tr><tr><td>1</td><td>2</td></tr></tbody></table>",
      "<span role=\"checkbox\">Checkbox role, no aria-checked (F18, 4.1.2)</span>",
      "<div aria-labelledby=\"missing-id\">Broken aria-labelledby (F19, 4.1.2)</div>",
      "<div role=\"banana\">Invalid role (F20, 4.1.2)</div>",
      "<a href=\"#\" class=\"hidden-focus\">Focus outline removed (F22, 2.4.7)</a>",
      "<p id=\"dup\">Duplicate id (F23, 4.1.1)</p>",
      "<p id=\"dup\">Duplicate id</p>",
      "<marquee>Moving text (F24, 2.2.2)</marquee>",
      "<a href=\"/a\">Read more</a>",
      "<a href=\"/b\">Read more</a>",
      "<img src=\"chart.png\" alt=\"chart.png\">",
      "<div tabindex=\"5\">Positive tabindex (F28, 2.4.3)</div>",
      "<video src=\"v.mp4\" autoplay=\"\"></video>",
      "<h1>Page title arrives after content (F30, 2.4.6 order)</h1>",
      "<p>End of fixture. Thirty seeded defects; not every defect is machine-detectable, which is part of the test.</p>"
     ]
    },
    {
     "id": "select-name",
     "tags": [
      "cat.forms",
      "wcag2a",
      "wcag412",
      "section508",
      "section508.22.n",
      "TTv5",
      "TT5.c",
      "EN-301-549",
      "EN-9.4.1.2",
      "ACT",
      "RGAAv4",
      "RGAA-11.1.1"
     ],
     "nodes": [
      "<select name=\"s\"><option>One</option></select>"
     ]
    },
    {
     "id": "tabindex",
     "tags": [
      "cat.keyboard",
      "best-practice"
     ],
     "nodes": [
      "<div tabindex=\"5\">Positive tabindex (F28, 2.4.3)</div>"
     ]
    }
   ],
   "incomplete": [
    {
     "id": "aria-prohibited-attr",
     "tags": [
      "cat.aria",
      "wcag2a",
      "wcag412",
      "EN-301-549",
      "EN-9.4.1.2",
      "RGAAv4",
      "RGAA-7.1.1"
     ],
     "nodes": [
      "<div aria-labelledby=\"missing-id\">Broken aria-labelledby (F19, 4.1.2)</div>"
     ]
    },
    {
     "id": "aria-valid-attr-value",
     "tags": [
      "cat.aria",
      "wcag2a",
      "wcag412",
      "EN-301-549",
      "EN-9.4.1.2",
      "RGAAv4",
      "RGAA-7.1.1"
     ],
     "nodes": [
      "<div aria-labelledby=\"missing-id\">Broken aria-labelledby (F19, 4.1.2)</div>"
     ]
    },
    {
     "id": "video-caption",
     "tags": [
      "cat.text-alternatives",
      "wcag2a",
      "wcag122",
      "section508",
      "section508.22.a",
      "TTv5",
      "TT17.a",
      "EN-301-549",
      "EN-9.1.2.2",
      "RGAAv4",
      "RGAA-4.3.1"
     ],
     "nodes": [
      "<video src=\"v.mp4\" autoplay=\"\"></video>"
     ]
    },
    {
     "id": "no-autoplay-audio",
     "tags": [
      "cat.time-and-media",
      "wcag2a",
      "wcag142",
      "TTv5",
      "TT2.a",
      "EN-301-549",
      "EN-9.1.4.2",
      "ACT",
      "RGAAv4",
      "RGAA-4.10.1"
     ],
     "nodes": [
      "<video src=\"v.mp4\" autoplay=\"\"></video>"
     ]
    }
   ]
  },
  "lighthouse": {
   "version": "13.5.0",
   "axe": "4.14.0",
   "score": 46,
   "failed": [
    {
     "id": "aria-required-attr",
     "nodes": [
      "<span role=\"checkbox\">"
     ]
    },
    {
     "id": "aria-roles",
     "nodes": [
      "<div role=\"banana\">"
     ]
    },
    {
     "id": "button-name",
     "nodes": [
      "<button>"
     ]
    },
    {
     "id": "color-contrast",
     "nodes": [
      "<p class=\"low\">",
      "<p class=\"tiny grey\">"
     ]
    },
    {
     "id": "frame-title",
     "nodes": [
      "<iframe src=\"about:blank\">"
     ]
    },
    {
     "id": "html-has-lang",
     "nodes": [
      "<html>"
     ]
    },
    {
     "id": "image-alt",
     "nodes": [
      "<img src=\"logo.png\">"
     ]
    },
    {
     "id": "input-button-name",
     "nodes": [
      "<input type=\"submit\" value=\"\">"
     ]
    },
    {
     "id": "input-image-alt",
     "nodes": [
      "<input type=\"image\" src=\"go.png\">"
     ]
    },
    {
     "id": "label",
     "nodes": [
      "<input type=\"text\" name=\"q\">",
      "<input type=\"checkbox\" id=\"c1\">"
     ]
    },
    {
     "id": "landmark-one-main",
     "nodes": [
      "<html>"
     ]
    },
    {
     "id": "link-name",
     "nodes": [
      "<a href=\"/x\">"
     ]
    },
    {
     "id": "select-name",
     "nodes": [
      "<select name=\"s\">"
     ]
    },
    {
     "id": "tabindex",
     "nodes": [
      "<div tabindex=\"5\">"
     ]
    }
   ]
  },
  "htmlcs": {
   "issues": [
    {
     "code": "WCAG2AA.Principle3.Guideline3_1.3_1_1.H57.2",
     "type": "error",
     "context": "<html><head><meta charset=\"utf-8\"><me...</html>",
     "message": "The html element should have a lang or xml:lang attribute which describes the language of the document."
    },
    {
     "code": "WCAG2AA.Principle1.Guideline1_1.1_1_1.H37",
     "type": "error",
     "context": "<img src=\"logo.png\">",
     "message": "Img element missing an alt attribute. Use the alt attribute to specify a short text alternative."
    },
    {
     "code": "WCAG2AA.Principle1.Guideline1_4.1_4_3.G18.Fail",
     "type": "error",
     "context": "<p class=\"low\">Low contrast text #999 on white...</p>",
     "message": "This element has insufficient contrast at this conformance level. Expected a contrast ratio of at least 4.5:1, but text in this element has a contrast ratio of 2.85:1. Recommendation:  change text colour to #767676."
    },
    {
     "code": "WCAG2AA.Principle1.Guideline1_1.1_1_1.H30.2",
     "type": "error",
     "context": "<a href=\"/x\"><img src=\"icon.png\" alt=\"\"></a>",
     "message": "Img element is the only content of the link, but is missing alt text. The alt text should describe the purpose of the link."
    },
    {
     "code": "WCAG2AA.Principle4.Guideline4_1.4_1_2.H91.Button.Name",
     "type": "error",
     "context": "<button></button>",
     "message": "This button element does not have a name available to an accessibility API. Valid names are: title , element content, aria-label , aria-labelledby ."
    },
    {
     "code": "WCAG2AA.Principle4.Guideline4_1.4_1_2.H91.InputText.Name",
     "type": "error",
     "context": "<input type=\"text\" name=\"q\">",
     "message": "This textinput element does not have a name available to an accessibility API. Valid names are: label element, title , aria-label , aria-labelledby ."
    },
    {
     "code": "WCAG2AA.Principle1.Guideline1_3.1_3_1.F68",
     "type": "error",
     "context": "<input type=\"text\" name=\"q\">",
     "message": "This form field should be labelled in some way. Use the label element (either with a \"for\" attribute or wrapped around the form field), or \"title\", \"aria-label\" or \"aria-labelledby\" attributes as appropriate."
    },
    {
     "code": "WCAG2AA.Principle4.Guideline4_1.4_1_2.H91.Select.Name",
     "type": "error",
     "context": "<select name=\"s\"><option>One</option></select>",
     "message": "This select element does not have a name available to an accessibility API. Valid names are: label element, title , aria-label , aria-labelledby ."
    },
    {
     "code": "WCAG2AA.Principle1.Guideline1_3.1_3_1.F68",
     "type": "error",
     "context": "<select name=\"s\"><option>One</option></select>",
     "message": "This form field should be labelled in some way. Use the label element (either with a \"for\" attribute or wrapped around the form field), or \"title\", \"aria-label\" or \"aria-labelledby\" attributes as appropriate."
    },
    {
     "code": "WCAG2AA.Principle4.Guideline4_1.4_1_2.H91.InputCheckbox.Name",
     "type": "error",
     "context": "<input type=\"checkbox\" id=\"c1\">",
     "message": "This checkboxinput element does not have a name available to an accessibility API. Valid names are: label element, title , aria-label , aria-labelledby ."
    },
    {
     "code": "WCAG2AA.Principle1.Guideline1_3.1_3_1.F68",
     "type": "error",
     "context": "<input type=\"checkbox\" id=\"c1\">",
     "message": "This form field should be labelled in some way. Use the label element (either with a \"for\" attribute or wrapped around the form field), or \"title\", \"aria-label\" or \"aria-labelledby\" attributes as appropriate."
    },
    {
     "code": "WCAG2AA.Principle4.Guideline4_1.4_1_2.H91.InputButton.Name",
     "type": "error",
     "context": "<input type=\"submit\" value=\"\">",
     "message": "This buttoninput element does not have a name available to an accessibility API. Valid names are: value , aria-label , aria-labelledby ."
    },
    {
     "code": "WCAG2AA.Principle1.Guideline1_3.1_3_1.H39.3.LayoutTable",
     "type": "error",
     "context": "<table><caption>Data table</caption><t...</table>",
     "message": "This table appears to be used for layout, but contains a caption element. Layout tables must not contain captions."
    },
    {
     "code": "WCAG2AA.Principle2.Guideline2_4.2_4_1.H64.1",
     "type": "error",
     "context": "<iframe src=\"about:blank\"></iframe>",
     "message": "Iframe element requires a non-empty title attribute that identifies the frame."
    },
    {
     "code": "WCAG2AA.Principle4.Guideline4_1.4_1_1.F77",
     "type": "error",
     "context": "<p id=\"dup\">Duplicate id</p>",
     "message": "Duplicate id attribute value \"dup\" found on the web page."
    },
    {
     "code": "WCAG2AA.Principle1.Guideline1_1.1_1_1.H36",
     "type": "error",
     "context": "<input type=\"image\" src=\"go.png\">",
     "message": "Image submit button missing an alt attribute. Specify a text alternative that describes the button's function, using the alt attribute."
    },
    {
     "code": "WCAG2AA.Principle4.Guideline4_1.4_1_2.H91.InputImage.Name",
     "type": "error",
     "context": "<input type=\"image\" src=\"go.png\">",
     "message": "This imageinput element does not have a name available to an accessibility API. Valid names are: alt , title , aria-label , aria-labelledby ."
    }
   ]
  },
  "ibm": {
   "violations": [
    {
     "ruleId": "html_lang_exists",
     "snippet": "<html>",
     "message": "Page detected as HTML, but does not have a 'lang' attribute"
    },
    {
     "ruleId": "img_alt_valid",
     "snippet": "<img src=\"logo.png\">",
     "message": "The image has neither an accessible name nor is marked as decorative or redundant"
    },
    {
     "ruleId": "text_contrast_sufficient",
     "snippet": "<p class=\"low\">",
     "message": "Text contrast of 2.85 with its background is less than the WCAG AA minimum requirements for text of size 16px and weight of 400"
    },
    {
     "ruleId": "text_contrast_sufficient",
     "snippet": "<p class=\"tiny grey\">",
     "message": "Text contrast of 4.48 with its background is less than the WCAG AA minimum requirements for text of size 9px and weight of 400"
    },
    {
     "ruleId": "a_text_purpose",
     "snippet": "<a href=\"/x\">",
     "message": "Hyperlink has no link text, label or image with a text alternative"
    },
    {
     "ruleId": "input_label_exists",
     "snippet": "<button>",
     "message": "Form control element <button> has no associated label"
    },
    {
     "ruleId": "aria_eventhandler_role_valid",
     "snippet": "<div onclick=\"go()\">",
     "message": "The <div> element with 'onclick' does not have a valid ARIA role specified"
    },
    {
     "ruleId": "input_label_exists",
     "snippet": "<input name=\"q\" type=\"text\">",
     "message": "Form control element <input> has no associated label"
    },
    {
     "ruleId": "input_label_exists",
     "snippet": "<select name=\"s\">",
     "message": "Form control element <select> has no associated label"
    },
    {
     "ruleId": "label_ref_valid",
     "snippet": "<label for=\"nope\">",
     "message": "The value \"nope\" of the 'for' attribute is not the 'id' of a valid element"
    },
    {
     "ruleId": "input_label_exists",
     "snippet": "<input id=\"c1\" type=\"checkbox\">",
     "message": "Form control element <input> has no associated label"
    },
    {
     "ruleId": "table_headers_exists",
     "snippet": "<table>",
     "message": "Table has no headers identified"
    },
    {
     "ruleId": "table_headers_exists",
     "snippet": "<table>",
     "message": "Table has no headers identified"
    },
    {
     "ruleId": "aria_attribute_required",
     "snippet": "<span role=\"checkbox\">",
     "message": "Element with 'checkbox' role does not have the required ARIA attribute(s): 'aria-checked'"
    },
    {
     "ruleId": "aria_id_unique",
     "snippet": "<div aria-labelledby=\"missing-id\">",
     "message": "The 'id' \"missing-id\" specified for the ARIA property 'aria-labelledby' value is not valid"
    },
    {
     "ruleId": "aria_role_allowed",
     "snippet": "<div role=\"banana\">",
     "message": "The role 'banana' defined on the element is not valid per ARIA specification"
    },
    {
     "ruleId": "frame_title_exists",
     "snippet": "<iframe src=\"about:blank\">",
     "message": "Inline frame does not have a 'title' attribute"
    },
    {
     "ruleId": "html_lang_exists",
     "snippet": "<html>",
     "message": "Page detected as HTML, but does not have a 'lang' attribute"
    },
    {
     "ruleId": "marquee_elem_avoid",
     "snippet": "<marquee>",
     "message": "Scrolling content found that uses the obsolete <marquee> element"
    },
    {
     "ruleId": "imagebutton_alt_exists",
     "snippet": "<input src=\"go.png\" type=\"image\">",
     "message": "The <input> element of type \"image\" has no text alternative"
    }
   ],
   "potential": [
    {
     "ruleId": "style_color_misuse",
     "snippet": "<style>",
     "message": "Verify color is not used as the only visual means of conveying information"
    },
    {
     "ruleId": "text_sensory_misuse",
     "snippet": "<p class=\"tiny grey\">",
     "message": "Confirm the user instruction is still understandable without the word(s) 'small, size'"
    },
    {
     "ruleId": "element_tabbable_visible",
     "snippet": "<a href=\"/x\">",
     "message": "Confirm the element should be tabbable and if so, it becomes visible when it has keyboard focus"
    },
    {
     "ruleId": "widget_tabbable_exists",
     "snippet": "<div role=\"button\">",
     "message": "Component with \"button\" role does not have a tabbable element"
    },
    {
     "ruleId": "widget_tabbable_exists",
     "snippet": "<span role=\"checkbox\">",
     "message": "Component with \"checkbox\" role does not have a tabbable element"
    },
    {
     "ruleId": "frame_src_valid",
     "snippet": "<iframe src=\"about:blank\">",
     "message": "Verify <frame> content is accessible"
    },
    {
     "ruleId": "html_skipnav_exists",
     "snippet": "<html>",
     "message": "Verify there is a way to bypass blocks of content that are repeated on multiple Web pages"
    },
    {
     "ruleId": "img_alt_misuse",
     "snippet": "<img alt=\"chart.png\" src=\"chart.png\">",
     "message": "Verify that the file name serves as a good inline replacement for the image"
    },
    {
     "ruleId": "input_label_visible",
     "snippet": "<input src=\"go.png\" type=\"image\">",
     "message": "The input element does not have an associated visible label"
    },
    {
     "ruleId": "caption_track_exists",
     "snippet": "<video autoplay=\"\" src=\"v.mp4\">",
     "message": "Verify that captions are available for any meaningful audio or provide a caption track for the <video> element"
    }
   ]
  }
 }
}