Axe 4.11 Rules Coverage Summary

This document outlines the accessibility issues that axe-core 4.11 can detect and which test pages cover them.

Overview

Axe-core 4.11 includes 100+ automated accessibility checks organized into categories:

Rule Categories

  • WCAG 2.0 Level A & AA (68 rules) - Core web accessibility standards
  • WCAG 2.1 Level A & AA (26 rules) - Additional modern web accessibility
  • WCAG 2.2 Level A & AA (1 rule - disabled by default) - Latest standards
  • Best Practices (30+ rules) - Industry accepted practices
  • WCAG 2.x Level AAA (3 rules - disabled by default) - Enhanced accessibility
  • Experimental (9 rules - disabled by default) - In development
  • Deprecated (7 rules - disabled by default) - To be removed

Severity Levels

  • Critical - Issues that prevent users with disabilities from accessing content
  • Serious - Major issues that substantially impact user experience
  • Moderate - Minor issues that affect some users
  • Minor - Very minor issues

WCAG 2.0 Level A & AA Rules (Primary Focus)

Text Alternatives (7 rules)

  • area-alt - Image map areas need alt text
  • image-alt - Images need alternative text
  • input-image-alt - Image input buttons need alt text
  • object-alt - Embedded objects need alt text
  • role-img-alt - Elements with role=”img” need alt text
  • svg-img-alt - SVG graphics need accessible text
  • video-caption - Videos need captions

Test Page: page1.html (Images & Contrast)

ARIA Attributes (20 rules)

  • aria-allowed-attr - Element role supports ARIA attributes
  • aria-braille-equivalent - Braille labels have non-braille equivalents
  • aria-command-name - Buttons, links, menu items have names
  • aria-conditional-attr - ARIA attributes used per spec
  • aria-deprecated-role - No deprecated roles used
  • aria-hidden-body - aria-hidden not on body element
  • aria-hidden-focus - Hidden elements not focusable
  • aria-input-field-name - Input fields have accessible names
  • aria-meter-name - Meter elements have names
  • aria-progressbar-name - Progressbar elements have names
  • aria-prohibited-attr - Prohibited ARIA attributes not used
  • aria-required-attr - Required ARIA attributes present
  • aria-required-children - Parent ARIA roles have required children
  • aria-required-parent - Child ARIA roles have required parents
  • aria-roles - Valid ARIA role values used
  • aria-toggle-field-name - Toggle fields have accessible names
  • aria-tooltip-name - Tooltips have accessible names
  • aria-valid-attr - Only valid ARIA attributes used
  • aria-valid-attr-value - ARIA attribute values are valid

Test Page: page4.html (ARIA & Language)

Forms & Labels (4 rules)

  • label - Form elements have labels
  • select-name - Select elements have accessible names
  • form-field-multiple-labels - Form fields don’t have multiple labels

Test Page: page2.html (Forms & Labels)

Headings & Lists (5 rules)

  • heading-order - Heading hierarchy is correct
  • empty-heading - Headings have discernible text
  • list - Lists are structured correctly
  • listitem - List items are used semantically
  • definition-list - Definition lists are correct

Test Page: page3.html (Buttons & Headings)

Tables (3 rules)

  • table-duplicate-name - Table caption not same as summary
  • td-headers-attr - Table cells reference table headers correctly
  • th-has-data-cells - Table headers describe data cells

Test Page: blog/post1.html (Tables & Data)

  • button-name - Buttons have discernible text
  • input-button-name - Input buttons have text
  • link-name - Links have discernible text
  • link-in-text-block - Links distinguished from surrounding text

Test Page: page3.html (Buttons & Headings)

Frames & Embeds (4 rules)

  • frame-title - Frames have accessible names
  • frame-title-unique - Frame titles are unique
  • frame-focusable-content - Frames with focusable content not tabindex=-1

Test Page: demo-bad.html (Multiple Violations)

Language & Document (4 rules)

  • html-has-lang - HTML document has lang attribute
  • html-lang-valid - Lang attribute has valid value
  • html-xml-lang-mismatch - Lang and xml:lang agree
  • valid-lang - Lang attributes have valid values
  • document-title - Document has non-empty title

Test Page: page4.html (ARIA & Language)

Color & Contrast (1 rule)

  • color-contrast - Contrast meets WCAG 2 AA standards

Test Page: page1.html (Images & Contrast)

Parsing & Structure (4 rules)

  • duplicate-id-aria - No duplicate ID values
  • dlitem - dt/dd elements contained in dl
  • marquee - Marquee elements not used
  • blink - Blink elements not used

Test Page: demo-bad.html (Multiple Violations)

Meta & Viewport (3 rules)

  • meta-refresh - Meta refresh not used
  • meta-viewport - Viewport doesn’t disable zooming
  • autocomplete-valid - Autocomplete attribute is correct

Test Page: auth/login.html (Form Authentication)

Keyboard Interaction (3 rules)

  • bypass - Skip navigation mechanism
  • scrollable-region-focusable - Scrollable regions keyboard accessible
  • server-side-image-map - No server-side image maps

Test Page: demo-bad.html (Multiple Violations)

WCAG 2.1 Level A & AA Rules

Content Sizing (2 rules)

  • avoid-inline-spacing - Text spacing can be adjusted
  • autocomplete-valid - Autocomplete suitable for field

Test Page: auth/login.html (Form Authentication)

Best Practices Rules (Selected)

Landmark Rules (8 rules)

  • landmark-banner-is-top-level - Banner at top level
  • landmark-contentinfo-is-top-level - Contentinfo at top level
  • landmark-main-is-top-level - Main at top level
  • landmark-no-duplicate-banner - At most one banner
  • landmark-no-duplicate-contentinfo - At most one contentinfo
  • landmark-no-duplicate-main - At most one main
  • landmark-one-main - At least one main landmark
  • region - All content contained by landmarks

Test Page: blog/post1.html (Tables & Data)

ARIA Best Practices (3 rules)

  • aria-dialog-name - Dialogs have accessible names
  • aria-text - role=”text” on elements with no focusable descendants
  • aria-treeitem-name - Tree items have accessible names

Test Page: page4.html (ARIA & Language)

Accessibility Keys (2 rules)

  • accesskeys - Accesskey values are unique
  • tabindex - Tabindex not > 0

Test Page: page2.html (Forms & Labels)

Page Structure (2 rules)

  • page-has-heading-one - Page has h1 heading
  • region - Content in landmarks

Test Page: blog/post1.html (Tables & Data)

Test Page Organization

page1.html - Images & Contrast

  • Missing alt text on images
  • Poor color contrast
  • Redundant alt text

Error Types: 3 Axe Rules Tested:

  • image-alt - Missing image alternative text
  • color-contrast - Poor color contrast ratio

page2.html - Forms & Labels

  • Missing form labels
  • Unlabeled inputs
  • Missing field descriptions
  • Incorrect label associations

Error Types: 3-4 Axe Rules Tested:

  • label - Form elements without labels
  • select-name - Select elements without accessible names
  • form-field-multiple-labels - Multiple labels on one field

page3.html - Buttons & Headings

  • Icon buttons without accessible text
  • Heading hierarchy issues (h1 to h3 skip)
  • Duplicate IDs

Error Types: 3 Axe Rules Tested:

  • button-name - Buttons without discernible text
  • input-button-name - Input buttons without text
  • heading-order - Incorrect heading hierarchy
  • empty-heading - Headings without text

page4.html - ARIA & Language

  • Missing lang attribute on html element
  • Invalid ARIA roles
  • Missing required ARIA attributes
  • Incorrect ARIA attribute usage

Error Types: 4-5 Axe Rules Tested:

  • html-has-lang - Document missing lang attribute
  • html-lang-valid - Invalid lang attribute value
  • aria-roles - Invalid ARIA role values
  • aria-required-attr - Missing required ARIA attributes
  • aria-allowed-attr - Unsupported ARIA attributes for role
  • aria-command-name - ARIA buttons/links without names

page5.html - Media & Captions

  • Videos without captions
  • Audio without transcripts
  • Iframes without titles
  • Object elements without alt text
  • SVG images without accessible names

Error Types: 5 Axe Rules Tested:

  • video-caption - Videos without captions
  • audio-caption - Audio without captions (deprecated)
  • no-autoplay-audio - Audio autoplaying without control
  • frame-title - Iframes without accessible names
  • frame-title-unique - Frame titles not unique
  • object-alt - Object elements without alt text
  • svg-img-alt - SVG graphics without accessible text
  • role-img-alt - role=”img” elements without names

page6.html - Tables & Data Structure

  • Table headers not associated with data
  • Incorrect header attribute references
  • Duplicate table captions/summaries
  • List items outside containers
  • Definition list structure errors

Error Types: 5 Axe Rules Tested:

  • th-has-data-cells - Table headers describe no data cells
  • td-headers-attr - Table cells reference invalid headers
  • table-duplicate-name - Caption duplicates summary
  • td-has-header - Large table cells lack headers (experimental)
  • listitem - li elements outside ul/ol
  • list - Incorrect list structure
  • definition-list - Definition list structure incorrect
  • dlitem - dt/dd outside dl container

auth/login.html - Form Authentication

  • Missing field labels
  • No autocomplete hints
  • Checkbox without label
  • Radio buttons without fieldset
  • Select without label
  • Vague button text
  • Meta viewport disables zoom

Error Types: 5 Axe Rules Tested:

  • label - Form inputs without labels
  • select-name - Select elements without names
  • autocomplete-valid - Missing or invalid autocomplete
  • meta-viewport - Viewport disables zooming
  • tabindex - Incorrect tabindex values (>0)
  • button-name - Buttons with insufficient text

blog/post1.html - Tables, Landmarks & Heading Order

  • Missing lang attribute
  • Missing image alt text
  • Low contrast text
  • Skipped heading levels (h2 to h4)
  • Table without proper structure
  • Icon buttons without text
  • List items outside containers
  • Missing main landmark

Error Types: 5 Axe Rules Tested:

  • html-has-lang - Document missing lang attribute
  • image-alt - Images without alt text
  • color-contrast - Poor contrast ratio
  • heading-order - Skipped heading level
  • th-has-data-cells - Table headers without descriptions
  • button-name - Icon buttons without names
  • listitem - li outside ul/ol
  • landmark-one-main - No main landmark
  • region - Content not in landmarks

demo-bad.html - Multiple Violation Types

  • Comprehensive test page with 5+ error types
  • Duplicate IDs
  • Missing captions
  • Nested interactive elements
  • Keyboard trap issues
  • Mixed violations

Error Types: 5+

Coverage Summary

Category Rules Pages Covered Status
Text Alternatives 7 page1.html, page5.html, blog/post1.html
ARIA Attributes 20 page4.html, demo-bad.html
Forms & Labels 8 page2.html, page6.html, auth/login.html
Headings & Lists 6 page3.html, page6.html, blog/post1.html
Tables 4 page6.html, blog/post1.html
Buttons & Links 4 page3.html, page5.html
Language & Document 5 page4.html, blog/post1.html
Color & Contrast 1 page1.html, blog/post1.html
Parsing & Structure 5 demo-bad.html, page6.html
Meta & Viewport 3 auth/login.html
Media & Embeds 8 page5.html
Keyboard & Navigation 5 demo-bad.html, auth/login.html
Best Practices 30+ Multiple pages

Total Pages: 9

  • page1.html — Images & Contrast
  • page2.html — Forms & Labels
  • page3.html — Buttons & Headings
  • page4.html — ARIA & Language
  • page5.html — Media & Captions (new)
  • page6.html — Tables & Data (new)
  • auth/login.html — Form Authentication
  • blog/post1.html — Blog & Structure
  • demo-bad.html — Comprehensive Test

How to Use These Test Pages

  1. Open the Accessibility Scanner (a11y-scan.html)
  2. Select “Local Directory” and drag your site folder
  3. Run a scan to identify violations
  4. Compare results to expected errors for each page
  5. Use violations to validate scanner accuracy

Notes

  • Each page is designed to test 3-5 specific error types
  • Pages use intentional violations to validate scanner detection
  • Some rules are combined on pages to maximize coverage
  • Best practices rules are tested across multiple pages
  • Rules disabled by default (AAA, Experimental) are noted but not extensively tested
  • axe-core does not perform behavioral testing: it does not resize the viewport, send keyboard input, or compare rendered states. Reflow risk (SC 1.4.10) and Focus Visible behavioral evidence (SC 2.4.7) require the checks documented in Behavioral Accessibility Automation, not axe-core rule scans.

Last Updated: January 2026 Axe Version: 4.11 WCAG Versions: 2.0, 2.1, 2.2