title
Axe Rules Reference
Axe 4.11 Rules - Detailed Test Coverage Map
This document maps each axe-core 4.11 rule to specific test pages and describes what violations to expect.
WCAG 2.0 Level A & AA Rules (68 Total)
Text Alternatives Category (7 rules)
Rule
Severity
Page
Expected Violation
Description
image-alt
Critical
page1.html
✅ Yes
Images missing alt text
image-alt
Critical
page5.html
✅ Yes
SVG images missing alt
image-alt
Critical
blog/post1.html
✅ Yes
Hero image without alt
area-alt
Critical
—
⏸️ Not tested
Image map areas lack alt text
input-image-alt
Critical
—
⏸️ Not tested
Image input buttons lack alt
object-alt
Serious
page5.html
✅ Yes
Object elements without alt
svg-img-alt
Serious
page5.html
✅ Yes
SVG with role="img" no alt
video-caption
Critical
page5.html
✅ Yes
Videos without captions
ARIA Attributes Category (20 rules)
Rule
Severity
Page
Expected Violation
Description
aria-allowed-attr
Critical
page4.html
✅ Yes
Element role has unsupported ARIA attributes
aria-braille-equivalent
Serious
—
⏸️ Not tested
Braille labels lack non-braille equivalent
aria-command-name
Serious
page4.html
✅ Yes
Button/link without accessible name
aria-conditional-attr
Serious
page4.html
✅ Yes
ARIA attributes not per role spec
aria-deprecated-role
Minor
—
⏸️ Not tested
Deprecated ARIA role used
aria-hidden-body
Critical
—
⏸️ Not tested
aria-hidden on body element
aria-hidden-focus
Serious
page4.html
✅ Yes
Hidden element contains focusable content
aria-input-field-name
Serious
page4.html
✅ Yes
ARIA input field without name
aria-meter-name
Serious
—
⏸️ Not tested
ARIA meter without name
aria-progressbar-name
Serious
—
⏸️ Not tested
ARIA progressbar without name
aria-prohibited-attr
Serious
page4.html
✅ Yes
Prohibited ARIA attribute used
aria-required-attr
Critical
page4.html
✅ Yes
Required ARIA attribute missing
aria-required-children
Critical
page4.html
✅ Yes
Required child ARIA roles missing
aria-required-parent
Critical
page4.html
✅ Yes
Required parent ARIA role missing
aria-roles
Critical
page4.html
✅ Yes
Invalid ARIA role value
aria-toggle-field-name
Serious
—
⏸️ Not tested
ARIA toggle field without name
aria-tooltip-name
Serious
—
⏸️ Not tested
ARIA tooltip without name
aria-valid-attr
Critical
page4.html
✅ Yes
Invalid ARIA attribute used
aria-valid-attr-value
Critical
page4.html
✅ Yes
ARIA attribute has invalid value
Rule
Severity
Page
Expected Violation
Description
label
Critical
page2.html
✅ Yes
Form inputs without associated labels
label
Critical
auth/login.html
✅ Yes
Login form fields unlabeled
select-name
Critical
auth/login.html
✅ Yes
Select element without name
form-field-multiple-labels
Moderate
page2.html
✅ Yes
Multiple labels on single field
Headings Category (2 rules)
Rule
Severity
Page
Expected Violation
Description
heading-order
Moderate
page3.html
✅ Yes
Heading hierarchy incorrect
heading-order
Moderate
blog/post1.html
✅ Yes
Skipped heading level (h2 to h4)
Tables Category (3 rules)
Rule
Severity
Page
Expected Violation
Description
th-has-data-cells
Serious
page6.html
✅ Yes
Table headers don't describe data
td-headers-attr
Serious
page6.html
✅ Yes
Table cells reference invalid headers
table-duplicate-name
Minor
page6.html
✅ Yes
Caption duplicates summary
Buttons & Links Category (4 rules)
Rule
Severity
Page
Expected Violation
Description
button-name
Critical
page3.html
✅ Yes
Buttons without discernible text
button-name
Critical
page5.html
✅ Yes
Icon buttons without labels
input-button-name
Critical
page3.html
✅ Yes
Input buttons without text
link-name
Serious
—
⏸️ Not tested
Links without discernible text
link-in-text-block
Serious
—
⏸️ Not tested
Links not distinguished by color
Frames & Embeds Category (3 rules)
Rule
Severity
Page
Expected Violation
Description
frame-title
Serious
page5.html
✅ Yes
Iframe without accessible name
frame-title-unique
Serious
—
⏸️ Not tested
Frame titles not unique
frame-focusable-content
Serious
—
⏸️ Not tested
Frame with focusable content has tabindex=-1
Language & Document Category (5 rules)
Rule
Severity
Page
Expected Violation
Description
html-has-lang
Serious
page4.html
✅ Yes
Missing lang attribute
html-has-lang
Serious
blog/post1.html
✅ Yes
HTML without lang (intentional)
html-lang-valid
Serious
—
⏸️ Not tested
Invalid lang value
html-xml-lang-mismatch
Moderate
—
⏸️ Not tested
Lang and xml:lang disagree
valid-lang
Serious
—
⏸️ Not tested
Invalid lang attribute value
document-title
Serious
—
⏸️ Not tested
Document missing title
Color & Contrast Category (1 rule)
Rule
Severity
Page
Expected Violation
Description
color-contrast
Serious
page1.html
✅ Yes
Poor contrast ratio
color-contrast
Serious
blog/post1.html
✅ Yes
Low contrast text (#888 on #8a8a)
Parsing & Structure Category (4 rules)
Rule
Severity
Page
Expected Violation
Description
duplicate-id-aria
Critical
demo-bad.html
✅ Yes
Duplicate ID attributes
list
Serious
page6.html
✅ Yes
Incorrect list structure
listitem
Serious
page6.html
✅ Yes
li outside ul/ol
listitem
Serious
blog/post1.html
✅ Yes
List items outside container
definition-list
Serious
page6.html
✅ Yes
Definition list structure incorrect
dlitem
Serious
page6.html
✅ Yes
dt/dd outside dl
marquee
Serious
—
⏸️ Not tested
Marquee element used
blink
Serious
—
⏸️ Not tested
Blink element used
Meta & Viewport Category (3 rules)
Rule
Severity
Page
Expected Violation
Description
meta-viewport
Moderate
auth/login.html
✅ Yes
Viewport disables user zoom
meta-refresh
Critical
—
⏸️ Not tested
Meta refresh used
Keyboard Interaction Category (3 rules)
Rule
Severity
Page
Expected Violation
Description
bypass
Serious
—
⏸️ Not tested
No skip navigation link
scrollable-region-focusable
Serious
—
⏸️ Not tested
Scrollable region not keyboard accessible
server-side-image-map
Minor
—
⏸️ Not tested
Server-side image map used
WCAG 2.1 Level A & AA Rules (26 Total)
Rule
Severity
Page
Expected Violation
Description
avoid-inline-spacing
Serious
—
⏸️ Not tested
Text spacing via styles not adjustable
autocomplete-valid
Serious
auth/login.html
✅ Yes
Invalid/missing autocomplete
Best Practices Rules (30+ Total)
Rule
Severity
Page
Expected Violation
Description
empty-heading
Minor
page3.html
✅ Yes
Heading with no text
empty-table-header
Minor
—
⏸️ Not tested
Table header without text
heading-order
Moderate
page3.html
✅ Yes
Heading hierarchy wrong
label-title-only
Serious
page2.html
✅ Yes
Form field only labeled via title
landmark-one-main
Moderate
blog/post1.html
✅ Yes
Document missing main landmark
region
Moderate
blog/post1.html
✅ Yes
Content outside landmarks
tabindex
Serious
auth/login.html
✅ Yes
tabindex > 0 used
page-has-heading-one
Moderate
page3.html
✅ Yes
No h1 heading
scope-attr-valid
Moderate
page6.html
✅ Yes
Invalid scope attribute
Experimental Rules (9 Total - Disabled by Default)
Rule
Severity
Page
Expected Violation
Description
td-has-header
Critical
page6.html
✅ Yes
Large table cells lack headers
table-fake-caption
Serious
page6.html
✅ Yes
Table caption not using caption element
p-as-heading
Serious
—
⏸️ Not tested
Paragraph styled as heading
label-content-name-mismatch
Serious
—
⏸️ Not tested
Visible label doesn't match name
page1.html — 3-4 rule categories, 5-7 violations expected
page2.html — 2-3 rule categories, 5-8 violations expected
page3.html — 3-4 rule categories, 4-6 violations expected
page4.html — 4-5 rule categories, 6-10 violations expected
page5.html — 3-4 rule categories, 6-8 violations expected
page6.html — 4-5 rule categories, 8-12 violations expected
auth/login.html — 3-4 rule categories, 6-9 violations expected
blog/post1.html — 4-5 rule categories, 7-10 violations expected
demo-bad.html — 5+ rule categories, 10+ violations expected
Rules with test coverage: 50+ out of 100+
Rules not tested: 50+ (mostly edge cases, deprecated, or AAA rules)
Primary focus: WCAG 2.0 & 2.1 Level A/AA standards
Coverage percentage: ~50% of actionable rules
Select a specific rule from the table above
Visit the listed test page to see how it manifests
Run axe-core on that page
Verify the violation appears in results
Check if scanner detects it correctly
Open a11y-scan.html (example scanner interface - not yet implemented)
Select "Local Directory" from dropdown
Drag this repository folder onto the drop zone
Run the scan
Compare detected violations to expected errors in this document
Last Updated: January 2026
Axe Version: 4.11
Test Pages: 9
Total Violations Expected: 40+