It is a no-brainer that we will move the needle and circle back once we have boiled the ocean on this synergistic, paradigm-shifting deliverable.
This is a simple choice. We will work on it together and update you next week.
It is a no-brainer that we will move the needle and circle back once we have boiled the ocean on this synergistic, paradigm-shifting deliverable.
This is a simple choice. We will work on it together and update you next week.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi.
Hello world
⚠ Malformed nesting
Hello world
✓ Valid HTML
<html> <head>...</head> </html>
<html lang="en"> <head>...</head> </html>
<meta name="viewport" content= "width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<meta name="viewport" content= "width=device-width, initial-scale=1">
Tab order: 3→1→4→2
Natural DOM order: A→B→C→D
✓ No autofocus — user controls where focus goes
Session expiring
You will be logged out in 0:14
Session expiring
You will be logged out in 0:14
⚠ Info hidden in title — not accessible
Tab to this button — no indicator appears
Tab here — a clear blue ring appears
DOM order: Right, Left, Right, Left
DOM order matches reading order
Tab twice — focus vanishes to hidden element
✓ Tab moves directly between visible buttons
<img src="cat.jpg">Screen reader: "cat.jpg"
<img src="cat.jpg" alt="A ginger tabby cat on a windowsill">✓ Descriptive alt text
Paragraph one.
Paragraph two.
SR announces: "decorative line divider image png"
Paragraph one.
Paragraph two.
✓ Screen reader skips the divider
No description — SR: "chart"
alt="company logo"SR: "company logo"
alt="FedEx"SR: "FedEx" ✓
Pricing
Plans for every team
⚠ Visual heading, semantic paragraph
Plans for every team
✓ Semantic h2
⚠ Three h1 elements!
✓ Single h1, then h2, h3
⚠ h3 was skipped
✓ Sequential levels
⚠ Plain text — no list semantics
✓ SR: "list, 3 items"
⚠ Not a real link
✓ Keyboard navigable, bookmarkable
See our pricing or read the docs.
Visit our pricing page or read the docs.
✓ Color AND underline — visible in grayscale
⚠ No keyboard activation, no Enter/Space
✓ Keyboard activatable, proper role
(Visible on focus — first tab stop)
| Name | Role | Team |
|---|---|---|
| Alice | Dev | Alpha |
| Product | Price |
| Widget | $9.99 |
| Product | Price |
|---|---|
| Widget | $9.99 |
| Region | Total |
|---|---|
| North | $120k |
⚠ Title is outside the table
| Region | Total |
|---|---|
| North | $120k |
⚠ No label — SR: "edit text"
✓ SR: "Email address, edit text"
Shipping speed
⚠ Group label not programmatically associated
⚠ No autocomplete attributes
✓ Browser can auto-fill correctly
Email is required
No summary — user must find errors by tabbing
✓ Focus jumps here on submit fail
Email is required
⚠ Error not linked to input
Email is required
✓ SR announces error when field is focused
Color alone — fails for colorblind users
<audio controls preload="none"> <source src="clip.mp3"> </audio>
✓ User controls when audio plays
⚠ No way to pause
<video controls><source src="talk.mp4"></video>⚠ No <track> element
<track kind="captions" srclang="en" src="talk.vtt" default>✓ Caption track present
Also respects prefers-reduced-motion
⚠ No transcript available
⚠ Gradient disappears in high contrast mode
✓ Visible in all contrast modes
Click the green button on the right to continue.
⚠ "Green" and "right" are visual-only cues
Click the green "Continue" button to proceed to the next step.
✓ Names the element — no visual cues needed
Fast + large motion
Subtle, slow fade
Hero Section
No pause control
Hero Section
Spins forever — no motion guard
Still when reduce-motion is on ✓
This text has ~2.5:1 contrast (fails 4.5:1 minimum)
This text has ~19:1 contrast (well above 4.5:1)
Fails 3:1
Passes 3:1 ✓
Overlaid Text (no scrim)
Overlaid Text (dark scrim ✓)
Select this text — selection is invisible!
Select this text — clear blue highlight ✓
📱 Please rotate to landscape
Page locked — portrait not supported
✓ Content adapts to any orientation
Works in both portrait and landscape
⚠ No gap — can't scroll without triggering
✓ Gaps = scroll dead zones