Accessibility Deep (accessibility-deep)
Summary
Runs deeper accessibility checks for contrast, keyboard navigation, headings, ARIA landmarks, and form labels (Playwright).
Classification
- Category:
ACCESSIBILITY - Plugin id:
accessibility-deep - Version:
1.0.0 - Target types:
WEBSITE,WEBSHOP - Weight class:
MEDIUM - Risk level: not set on plugin object
- Browser required: Yes (Playwright)
- Tier / group: Tier 2 — Browser (Playwright)
Schedule
- scheduleHints:
{ defaultInterval: '0 */12 * * *', priority: 5 } - Prerequisites: None declared on this plugin.
Configurable inputs
Public keys are derived from inputSchema: z.object({ ... }) (underscore-prefixed keys are runtime-only and omitted here).
| Field | Notes |
|---|---|
timeout |
Zod field in inputSchema — see source for defaults, min/max, and .describe(). |
Runtime / injected config
- None documented beyond standard worker context (
target,config,logger,reportProgress). Underscore-prefixed keys are internal.
Checks that produce findings
These checks run inside this plugin during a single test run. They are not separate tests in the database — each becomes a Finding linked to the Run for accessibility-deep.
| Check | Typical severity | Why |
|---|---|---|
Missing lang on <html> (must be ≥2 chars) |
WARNING | Screen readers pick wrong pronunciation rules without a document language. |
No skip navigation link (href #… + text matching skip/hopp/gå til innhold patterns) |
INFO | Keyboard users tab through entire nav bars before reaching main content. |
| Missing focus indicators (first 5 focusables lack outline/box-shadow) | WARNING | Keyboard users cannot see which control is active — WCAG 2.4.7 failure. |
| Non-sequential heading hierarchy (level jump >1, e.g. H1→H3) | WARNING | Screen reader heading navigation becomes misleading when levels are skipped. |
No ARIA landmarks (header/nav/main/footer or equivalent roles) |
INFO | Landmark navigation is unavailable in NVDA/VoiceOver rotor. |
Images missing alt attribute |
INFO if ≤5 images; WARNING if >5 | Non-decorative images are unreadable to blind users and fail WCAG 1.1.1. |
Form inputs without label/aria-label/aria-labelledby (placeholder alone does not count) |
WARNING | Unlabeled fields are unusable with screen readers and voice control. |
| Color contrast below WCAG AA (4.5:1 normal, 3:1 large text ≥24px or ≥18.66px bold) | INFO if ≤5 color pairs; WARNING if >5 | Low contrast text is unreadable for low-vision users and in bright environments. |
| Buttons/links without accessible name | WARNING | Announced as generic “button” with no context. |
Positive tabindex values |
INFO | Disrupts natural tab order and confuses keyboard users. |
How each check works
- Load —
networkidlegoto (default 30s), 2s settle. - Keyboard pass — Detects skip links, scans focusable elements for positive tabindex and missing names, samples first 5 focusables for visible focus ring (outline or box-shadow).
- Structure pass — Validates heading level sequence, counts landmarks, images without
alt, form labels (hidden inputs excluded), and<html lang>. - Contrast pass — Samples visible text in common tags; parses computed
color/backgroundColor(skips transparent bg alpha <0.1); dedupes by color pair; stops at 15 issues. - Findings and score — One finding per check category. Score: −10 per WARNING, −3 per INFO (min 0). Status
failedonly if CRITICAL (none emitted);warningif any WARNING.
Caveats and concerns
- Simplified contrast — Uses direct foreground/background only; gradients, images behind text, and overlapping elements are not computed accurately.
- Focus sample size — Only 5 elements tested for focus visibility; others may still lack rings.
- Single URL — No multi-page audit.
- Norwegian skip-link patterns — English/Norwegian skip phrases only; other languages may be missed.
- Often auto-triggered — Queued by adaptive orchestrator after
accessibility-scanissues.
Source
packages/test-plugins/src/plugins/accessibility-deep.ts