Test Pages

Each page targets specific axe-core rules and Vesper custom checks. Expected results are noted for each.

0 violations expected

Compliant Page

A fully accessible page. Should return zero violations — useful as a baseline to verify the scanner is working correctly.

Violations expected

Image Alt Text

Tests missing alt attributes, empty alt (decorative), descriptive alt text, and image-only links.

Violations expected

Heading Structure

Tests heading order violations and skipped levels. Requires Best Practices scan. The heading-order rule is an axe-core best practice, not a WCAG violation — enable the Best Practices scanner to see results on this page.

Violations expected

Form Labels

Tests missing labels, aria-label, aria-labelledby, and correctly associated labels.

Violations expected

Color Contrast

Known contrast failures alongside passing examples. Tests WCAG 1.4.3 (normal text) and 1.4.11 (UI components).

Violations + broken links expected

Link Text & Broken Links

Tests axe-core rule link-name and Vesper custom checks vesper-ambiguous-link and vesper-duplicate-link-text. Covers generic text, raw URLs, bare phone numbers, bare email addresses, and duplicate link text to different destinations. Also includes intentionally broken external URLs.

Violations expected

Landmarks & Regions

Tests missing main landmark and content outside landmark regions. Requires Best Practices scan. The landmark-one-main and region rules are axe-core best practices, not WCAG violations.

Beta4 Rule Behavior Tests

New fixtures for rules introduced or changed in v1.0.0-beta.5. Each page tests a specific rule with positive (fires) and negative (must not fire) cases.

Mixed — some fire, some pass

VA-025 — Visibility Filter

Tests that hidden links (display:none, visibility:hidden, aria-hidden, hidden attribute) are excluded from the duplicate-link-text relational check. Also tests that sr-only and offscreen-but-focusable links are not excluded (they remain in the accessibility tree).

Mixed — some fire, some pass

VA-025 — Landmark Boundary Filter

Tests that duplicate-link-text only fires when both links are in the same landmark region. Links with identical accessible names in different landmarks (nav vs main, nav vs footer, etc.) must not be flagged.

Mixed — some fire, some pass

VA-025 — Combined + CBR-01 Branch Selector

Realistic composite patterns combining both filters. Includes the LM branch selector scenario: one visible branch card + five hidden branches, each with identical link text to per-branch destinations.

Violations expected

VA-015 — Broken Accessible Name + VA-010 Instance Count

Tests that Vesper correctly diagnoses why a heading has no accessible name: broken aria-labelledby reference, empty aria-label attribute, or missing text content. Also tests that the violation description includes the correct instance count (VA-010).

Mixed — some fire, some pass

VA-013 — Chrome Extension Artifacts

Tests that chrome-extension:// links are excluded from Vesper's custom link checks. These links are injected by Chrome's PDF viewer and are not real page content. Regular ambiguous links on the same page must still be flagged.

Violations expected

VA-003 Truncated URLs — VA-008 Repeated Embeds

VA-003: links whose href contains "..." (truncated by a CMS editor) should be flagged as vesper-truncated-url. VA-008: three or more iframes from the same host without unique title attributes should be flagged as vesper-repeated-embed.

Scan warning expected

VA-023 — Soft 404 Detection

A page whose title is "Page Not Found". Vesper should attach a Scan Warning to this page rather than treating it as clean content. The page returns HTTP 200 — the detection is title-pattern based.

Scan warning expected

VA-023 — Maintenance State Detection

A page whose title is "Site Under Maintenance". Vesper should attach a Scan Warning. Tests the maintenance-pattern detection (distinct from soft-404 detection).

No scan warning expected

VA-023 — Maintenance False Positive Avoidance

A legitimate content page about a "Maintenance Services Department". The word "maintenance" appears in the title but this is real content, not an error state. Vesper must not attach a Scan Warning here.

Mixed — some fire, some pass

VA-018 — URL Canonicalization

Tests that relative and absolute hrefs to the same destination, trailing-slash variants, and http/https protocol variants are treated as identical after canonicalization. Links that genuinely go to different destinations must still fire.

20+ violations expected

High Density Page (ITEM-12 / VA-017)

Deliberately contains 20+ accessibility violations to test the high-density page callout. In the PDF and Markdown report, this page should show an amber "High-density page" callout with the violation count.

Broken links + violations expected

Broken Links Cluster + Cross-Reference (ITEM-15 / ITEM-17)

Four broken links to the same non-existent domain (tests cluster annotation) plus a missing image alt (tests cross-reference). In the broken links report: cluster note should appear, and the "Found On" entry for this page should show a violation count.

Client Batch Regression Tests

Fixtures that reproduce confirmed patterns from real LM client sites. Verify that Vesper continues to flag genuine violations and does not regress on fixed patterns.

Mixed — pre-fix fires, post-fix passes

CBR-02 — LibraryCalendar Recurring Events

Two variants of the LibraryCalendar event card pattern. Pre-fix (CBR-02a): dateless aria-label="View Details" triggers duplicate-link-text. Post-fix (CBR-02b): date-specific aria-label makes each link unique — no violation. Locks the LM platform fix regression.