You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: Adapt a11y skill to utilize Lighthouse (#1054)
- **feat: Add Lighthouse audit as the initial step in the accessibility
debugging workflow and reorder subsequent sections.**
- **feat: Add critical instructions for parsing Lighthouse audit reports
to efficiently extract failing elements.**
Copy file name to clipboardExpand all lines: skills/a11y-debugging/SKILL.md
+26-8Lines changed: 26 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,16 +11,34 @@ description: Uses Chrome DevTools MCP for accessibility (a11y) debugging and aud
11
11
12
12
## Workflow Patterns
13
13
14
-
### 1. Browser Issues & Audits
14
+
### 1. Automated Audit (Lighthouse)
15
15
16
-
Chrome automatically checks for common accessibility problems. Use `list_console_messages` to check for these native audits first:
16
+
Start by running a Lighthouse accessibility audit to get a comprehensive baseline. This tool provides a high-level score and lists specific failing elements with remediation advice.
17
+
18
+
1. Run the audit:
19
+
- Set `mode` to `"navigation"` to refresh the page and capture load issues.
20
+
- Set `outputDirPath` (e.g., `/tmp/lh-report`) to save the full JSON report.
- This efficiently extracts the `selector` and `snippet` of failing elements without loading the full report into context.
31
+
32
+
### 2. Browser Issues & Audits
33
+
34
+
Chrome automatically checks for common accessibility problems. Use `list_console_messages` to check for these native audits:
17
35
18
36
- `types`: `["issue"]`
19
37
- `includePreservedMessages`: `true` (to catch issues that occurred during page load)
20
38
21
39
This often reveals missing labels, invalid ARIA attributes, and other critical errors without manual investigation.
22
40
23
-
### 2. Semantics & Structure
41
+
### 3. Semantics & Structure
24
42
25
43
The accessibility tree exposes the heading hierarchy and semantic landmarks.
26
44
@@ -29,7 +47,7 @@ The accessibility tree exposes the heading hierarchy and semantic landmarks.
29
47
3. **Check Heading Levels**: Ensure heading levels (`h1`, `h2`, `h3`, etc.) are logical and do not skip levels. The snapshot will include heading roles.
30
48
4. **Content Reordering**: Verify that the DOM order (which drives the accessibility tree) matches the visual reading order. Use `take_screenshot` to inspect the visual layout and compare it against the snapshot structure to catch CSS floats or absolute positioning that jumbles the logical flow.
31
49
32
-
### 3. Labels, Forms & Text Alternatives
50
+
### 4. Labels, Forms & Text Alternatives
33
51
34
52
1. Locate buttons, inputs, and images in the `take_snapshot` output.
35
53
2. Ensure interactive elements have an accessible name (e.g., a button should not just say `""`if it only contains an icon).
@@ -55,7 +73,7 @@ The accessibility tree exposes the heading hierarchy and semantic landmarks.
55
73
56
74
4. Check images for`alt` text.
57
75
58
-
### 4. Focus & Keyboard Navigation
76
+
### 5. Focus & Keyboard Navigation
59
77
60
78
Testing "keyboard traps" and proper focus management without visual feedback relies on tracking the focused element.
61
79
@@ -64,7 +82,7 @@ Testing "keyboard traps" and proper focus management without visual feedback rel
64
82
3. Locate the element marked as focused in the snapshot to verify focus moved to the expected interactive element.
65
83
4. If a modal opens, focus must move into the modal and "trap" within it until closed.
66
84
67
-
### 5. Tap Targets and Visuals
85
+
### 6. Tap Targets and Visuals
68
86
69
87
According to web.dev, tap targets should be at least 48x48 pixels with sufficient spacing. Since the accessibility tree doesn't show sizes, use `evaluate_script`:
70
88
@@ -78,7 +96,7 @@ el => {
78
96
79
97
_Pass the element's `uid` from the snapshot as an argument to `evaluate_script`._
80
98
81
-
### 6. Color Contrast
99
+
### 7. Color Contrast
82
100
83
101
To verify color contrast ratios, start by checking for native accessibility issues:
84
102
@@ -124,7 +142,7 @@ el => {
124
142
125
143
_Pass the element's `uid` to test the contrast against WCAG AA (4.5:1 for normal text, 3:1 for large text)._
126
144
127
-
### 7. Global Page Checks
145
+
### 8. Global Page Checks
128
146
129
147
Verify document-level accessibility settings often missed in component testing:
0 commit comments