๐Ÿงช WCAG 2.2 Scanner Validation Suite

This page contains FAIL PASS and MANUAL CHECK examples for nearly all success criteria (A, AA, AAA). Use your scanner to detect issues based on conformance target.

๐Ÿ“– Principle 1: Perceivable

Guideline 1.1: Text Alternatives

1.1.1 (A) โŒ FAIL: Image missing alt attribute
1.1.1 (A) โœ… PASS: Image with descriptive alt
Green square shape
1.1.1 (A) โŒ FAIL: Area element without alt in image map

Guideline 1.2: Time-Based Media

1.2.1 (A) โš ๏ธ MANUAL: Audio-only (podcast) โ€“ needs transcript

Instruction: Provide transcript link.
1.2.2 (A) โŒ FAIL: Video without captions (prerecorded)

No captions track.
1.2.2 (A) โœ… PASS: Video with captions (using track)
1.2.3 (A) โš ๏ธ MANUAL: Audio description or media alternative
Check if video has audio description or full transcript.
1.2.4 (AA) โš ๏ธ MANUAL: Live captions โ€“ requires real-time test.
1.2.5 (AA) โš ๏ธ MANUAL: Audio description for prerecorded video.
1.2.6 (AAA) โš ๏ธ MANUAL: Sign language interpretation.

Guideline 1.3: Adaptable

1.3.1 (A) โŒ FAIL: Heading level skipped (h2 after body, no h1)

This is an h2 without preceding h1

1.3.1 (A) โŒ FAIL: Table without <th>
NameAge
John30
1.3.1 (A) โœ… PASS: Table with proper headers
NameAge
Jane25
1.3.2 (A) โš ๏ธ MANUAL: Meaningful sequence โ€“ check if CSS reorders content logically.
Item 1 (should be last)
Item 2 (should be first)
1.3.3 (A) โŒ FAIL: Instruction uses only shape: "Click the square button"

Click the square button

1.3.3 (A) โœ… PASS: Instruction uses text: "Click the Submit button"
1.3.4 (AA) โŒ FAIL: Orientation locked to landscape (simulated with CSS)
Content not adaptable โ€“ but real lock requires meta viewport? We'll mark as fail if scanner detects orientation lock via CSS media? This is complex. Mark manual.
โš ๏ธ MANUAL: Check if page uses orientation lock (e.g., screen.orientation.lock).
1.3.5 (AA) โŒ FAIL: Input field without autocomplete attribute (where appropriate)
โ€“ missing autocomplete="name"
1.3.5 (AA) โœ… PASS: Input with autocomplete

Guideline 1.4: Distinguishable

1.4.1 (A) โŒ FAIL: Error indicated by color only (red text)
Invalid
1.4.1 (A) โœ… PASS: Error with text and color: "Error: Invalid"
Error: Invalid input
1.4.2 (A) โŒ FAIL: Audio autoplays without control (background loop)
โ€“ no pause button initially.
1.4.2 (A) โœ… PASS: Audio with controls
1.4.3 (AA) โŒ FAIL: Low contrast text (light gray on white, ~1.5:1)
This text is barely readable.
1.4.3 (AA) โœ… PASS: Good contrast (dark gray on white, ~5.5:1)
This passes AA.
1.4.6 (AAA) โŒ FAIL (AAA): Contrast 5.5:1 fails AAA (needs 7:1)
This passes AA but fails AAA.
1.4.6 (AAA) โœ… PASS (AAA): White on black (21:1)
Perfect contrast.
1.4.4 (AA) โŒ FAIL: Text cannot be resized because of fixed container? Actually we need a demo that breaks at 200% zoom โ€“ we'll simulate by using viewport restriction? Better to mark manual.
โš ๏ธ MANUAL: Test zoom to 200% โ€“ check for text clipping or overlapping.
1.4.5 (AA) โŒ FAIL: Image of text used for informative content (not logo)
Welcome
1.4.5 (AA) โœ… PASS: Real text instead of image
Welcome
1.4.10 (AA) โŒ FAIL: Reflow โ€“ horizontal scroll required at 320px (using fixed width)
This wide content forces horizontal scroll at 320px viewport.
1.4.11 (AA) โŒ FAIL: Non-text contrast โ€“ button border and background too close
1.4.11 (AA) โœ… PASS: Button with sufficient contrast (dark border)
1.4.12 (AA) โš ๏ธ MANUAL: Text spacing override โ€“ apply user styles and check if content breaks.
1.4.13 (AA) โš ๏ธ MANUAL: Content on hover/focus โ€“ ensure dismissible, hoverable, persistent.

โŒจ๏ธ Principle 2: Operable

Guideline 2.1: Keyboard Accessible

2.1.1 (A) โŒ FAIL: Mouse-only event (div onclick without role or tabindex)
Click me (mouse only)
2.1.1 (A) โœ… PASS: Native button works with keyboard
2.1.2 (A) โŒ FAIL: Keyboard trap (simulated modal)

Trapped! Press Escape to close.

2.1.2 (A) โœ… PASS: No trap โ€“ can tab out.
2.1.4 (A) โš ๏ธ MANUAL: Character key shortcuts โ€“ check if single-key shortcuts can be remapped/disabled.

Guideline 2.2: Enough Time

2.2.1 (A) โŒ FAIL: Timeout without warning (5 seconds redirect)
Page will timeout in 5 sec. No extend option.
2.2.2 (A) โŒ FAIL: Auto-moving carousel without pause button

No pause control.

2.2.2 (A) โœ… PASS: Carousel with pause button

Guideline 2.3: Seizures and Physical Reactions

2.3.1 (A) โŒ FAIL: Flashing content (>3 flashes per second)

Red square flashes at 10Hz.

2.3.1 (A) โœ… PASS: No flashing.

Guideline 2.4: Navigable

2.4.1 (A) โŒ FAIL: No skip to main content link
Many navigation links...
Main content starts here but no bypass link.
2.4.1 (A) โœ… PASS: Skip link present
Main content with skip link.
2.4.2 (A) โŒ FAIL: Missing <title>? But we have title โ€“ this is pass. We'll add an iframe without title.
โ€“ missing title attribute (success criteria applies to iframes as well).
2.4.3 (A) โŒ FAIL: Illogical tabindex order
2.4.3 (A) โœ… PASS: Logical DOM order
2.4.4 (A) โŒ FAIL: Ambiguous link text "click here"
click here for details.
2.4.4 (A) โœ… PASS: Descriptive link "Download annual report"
2.4.5 (AA) โŒ FAIL: No multiple ways to find pages (only nav menu, no search, no sitemap)
Only one navigation menu. No search, no sitemap link.
2.4.5 (AA) โœ… PASS: Has search and sitemap (simulate link)
2.4.6 (AA) โŒ FAIL: Unclear heading "Section 3.2"

Section 3.2

Content here...

2.4.6 (AA) โœ… PASS: Descriptive heading "Contact Us"

Contact Us

2.4.7 (AA) โŒ FAIL: Focus indicator invisible (outline:none)
2.4.7 (AA) โœ… PASS: Default focus ring visible
2.4.11 (AA) โŒ FAIL: Sticky header obscures focused element
Sticky header

Guideline 2.5: Input Modalities

2.5.1 (A) โŒ FAIL: Pointer gesture (swipe) without alternative button
Swipe me (no button alternative)
2.5.1 (A) โœ… PASS: Same action available via button
(instead of swipe)
2.5.2 (A) โŒ FAIL: Pointer cancellation โ€“ mousedown triggers action immediately (e.g., onmousedown)
Click on down
2.5.2 (A) โœ… PASS: Action on click (not mousedown)
Click me
2.5.3 (A) โŒ FAIL: Visible label and accessible name mismatch
โ€“ visible label "Send", accessible name "Submit form" โ€“ mismatch may confuse.
2.5.3 (A) โœ… PASS: Label matches accessible name
or
2.5.4 (A) โŒ FAIL: Motion actuation (device shake) without alternative
Shake to undo (no button alternative)
2.5.4 (A) โœ… PASS: Alternative button exists
2.5.7 (AA) โŒ FAIL: Dragging movement without alternative
Drag me

No alternative buttons for drag-and-drop.

2.5.7 (AA) โœ… PASS: Alternative buttons provided
2.5.8 (AA) โŒ FAIL: Target size smaller than 24x24px
(20x20 clickable)
2.5.8 (AA) โœ… PASS: Target size 44x44

๐Ÿ“˜ Principle 3: Understandable

Guideline 3.1: Readable

3.1.1 (A) โœ… PASS: Language set in html lang="en"
3.1.2 (AA) โŒ FAIL: Part of page in different language without lang attribute

English text. Bonjour le monde โ€“ French phrase missing lang="fr".

3.1.2 (AA) โœ… PASS: Proper lang attribute on foreign phrase

Bonjour le monde has lang attribute.

3.1.3 (AAA) โš ๏ธ MANUAL: Unusual words โ€“ provide definitions.
3.1.5 (AAA) โš ๏ธ MANUAL: Reading level โ€“ lower secondary education level.

Guideline 3.2: Predictable

3.2.1 (A) โŒ FAIL: On focus, page automatically submits (simulate)
Focus this input โ†’ unexpected submit.
3.2.1 (A) โœ… PASS: Focus does not cause context change.
3.2.2 (A) โŒ FAIL: Change of setting (select) causes immediate navigation
3.2.2 (A) โœ… PASS: Select does not auto-submit
3.2.3 (AA) โŒ FAIL: Inconsistent navigation order (different pages โ€“ can't test here, but we can mark)
Manual check: Verify menu order same across pages.
โš ๏ธ MANUAL: Check consistent navigation across multiple pages.
3.2.4 (AA) โŒ FAIL: Same icon used for different functions (e.g., star for favorite and also for bookmark)
Use star icon for two different actions โ€“ manual check.
โš ๏ธ MANUAL: Consistent identification of components.
3.2.6 (A) โŒ FAIL: No consistent help location (help link sometimes at top, sometimes at bottom)
Help link in different places on different pages โ€“ mark manual.
โš ๏ธ MANUAL: Ensure help mechanisms are in consistent location.

Guideline 3.3: Input Assistance

3.3.1 (A) โŒ FAIL: Error message missing (just red border)
3.3.1 (A) โœ… PASS: Error with descriptive text
Invalid email
3.3.2 (A) โŒ FAIL: Input without label, placeholder, or aria-label
3.3.2 (A) โœ… PASS: Label present
3.3.3 (AA) โŒ FAIL: Error but no suggestion how to fix
Invalid
3.3.3 (AA) โœ… PASS: Error with suggestion
Error: Enter email as name@example.com
3.3.4 (AA) โŒ FAIL: No error prevention for legal/financial data (no review/submit confirmation)
3.3.4 (AA) โœ… PASS: Has confirm step
Multi-step with review.
3.3.7 (A) โŒ FAIL: Redundant entry โ€“ asks for same info twice without auto-fill
(same info, no option to copy)
3.3.7 (A) โœ… PASS: Checkbox "Same as shipping"
Same as shipping address
3.3.8 (AA) โŒ FAIL: CAPTCHA without alternative (image only)
captcha
3.3.8 (AA) โœ… PASS: CAPTCHA with audio alternative
Visual CAPTCHA

โš™๏ธ Principle 4: Robust

Guideline 4.1: Compatible

4.1.2 (A) โŒ FAIL: Custom control missing role and accessible name
Fake button
4.1.2 (A) โœ… PASS: Custom button with role="button", tabindex="0", aria-label
Submit
4.1.3 (AA) โŒ FAIL: Status message without role="status" or aria-live
4.1.3 (AA) โœ… PASS: Status message with role="status"

Note: This test page includes over 100 deliberate failures and many correct examples. Your scanner should detect violations based on selected conformance level (A, AA, AAA). Some criteria are marked MANUAL because they cannot be fully automated. This suite covers >85% of WCAG 2.2 success criteria. Use it to validate your scanner's accuracy.