accessibility-testing
Test for WCAG 2.2 compliance using axe-core with Playwright, keyboard navigation audits, screen reader testing, ARIA pattern validation, and legal compliance…
Skill by kindlmann
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/jaiminvadadoriya-accessibility-testing
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: testing, security, legal
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/accessibility-testing
What's inside
- Skill name
accessibility-testing- Description
- Test for WCAG 2.2 compliance using axe-core with Playwright, keyboard navigation audits, screen reader testing, ARIA pattern validation, and legal compliance mapping (ADA, EAA, Section 508). Automated tools catch 30-40% of issues -- this skill covers both automated and manual testing strategies. Use when: "accessibility," "a11y," "WCAG," "screen reader," "axe," "keyboard navigation," "ARIA," "ADA compliance." Related: playwright-automation, compliance-testing, cross-browser-testing.
- License
- MIT
- Metadata
- author: kindlmann · version: 1.0 · category: automation
- Instructions
- 464 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
<objective>
Test applications for accessibility to ensure they are usable by everyone, including people who use assistive technologies. Automated tools catch 30-40% of accessibility issues -- the rest requires manual testing with keyboard navigation, screen readers, and human judgment. This skill covers both approaches.
</objective>
---
## Discovery Questions
Before designing an accessibility testing strategy, understand the requirements and current state. Check `.agents/qa-project-context.md` first -- if it exists, use it as the foundation and skip questions already answered there.
### Requirements and Compliance
- What WCAG conformance level is required? (A, AA, or AAA)
- What legal requirements apply? (ADA, EAA/EN 301 549, Section 508, AODA)
- Are there contractual accessibility requirements from customers? (common in enterprise/government)
- Is there a Voluntary Product Accessibility Template (VPAT) to maintain?
### Current State
- Has an accessibility audit been performed before? What were the findings?
- Are there known accessibility issues in the backlog?
- Does the design system include accessibility guidelines?
### Testing Infrastructure
- Is automated accessibility testing integrated into CI?
- Which screen readers does the team test with? (VoiceOver, NVDA, JAWS, TalkBack)
- What browsers and devices must be accessible?
---
## Core Principles
### 1. Automated Testing Catches 30-40% of Issues
Tools like axe-core can detect missing alt text, insufficient color contrast, missing form labels, and invalid ARIA attributes. They cannot detect whether alt text is meaningful, whether the tab order is logical, whether a custom widget is operable by keyboard, or whether the reading order makes sense. Both automated and manual testing are essential.
### 2. Semantic HTML First, ARIA as Last Resort
Native HTML elements (`<button>`, `<nav>`, `<input>`, `<table>`, `<dialog>`) carry built-in accessibility semantics, keyboard behavior, and screen reader support. Adding `role="button"` to a `<div>` requires also adding `tabindex`, `keydown` handlers for Enter and Space, focus styles, and ARIA states. Use the native element. Reach for ARIA only when no native element exists for the pattern.
### 3. Test in Order: Keyboard, Screen Reader, Automated
Keyboard testing catches the most impactful issues (users physically blocked from features). Screen reader testing catches semantics issues (users confused by incorrect announcements). Automated testing catches the remaining mechanical issues (missing attributes, contrast ratios). Start with the highest-impact method.
### 4. Accessibility Is Not a Feature -- It Is a Quality Attribute
Accessibility is tested continuously, like performance or security. Every new component, every new page, every PR gets accessibility review. Retrofitting accessibility onto a finished product costs 10-100x more than building it in from the start.
### 5. Test With Real Assistive Technology
Browser DevTools and axe-core extensions are useful for development, but they are not substitutes for testing with actual screen readers. VoiceOver on macOS, NVDA on Windows, and TalkBack on Android each have different behaviors and quirks.
---
## Automated Testing with axe-core and Playwright
### Setup
```bash
# axe-core 4.11.x or later — current is 4.11.4 (Apr 2026)
npm install --save-dev @axe-core/playwright
```
> **axe-core 4.11+ caveat:** Several best-practice rules (`focus-order-semantics`, `region`, `skip-link`, `table-duplicate-name`) are now also tagged `RGAAv4` (the French national standard). If you filter by tag and don't intend to test against RGAA, exclude it explicitly: `withTags(['wcag2a', 'wcag2aa', 'wcag22aa']).disableRules([])` is fine, but `.withTags(['best-practice'])` will pull in RGAA-specific rules.
### Reusable Helper
```typescript
// e2e/helpers/a11y.ts
import { type Page, type TestInfo, expect } from '@playwright/test';
import AxeBuilder from '@axe-core/playwright';
interface A11yOptions {
tags?: string[];
exclude?: string[];
disableRules?: string[];
}
export async function checkAccessibility(
page: Page, testInfo: TestInfo, options: A11yOptions = {}
): Promise<void> {
let builder = new AxeBuilder({ page })
.withTags(options.tags ?? ['wcag2a', 'wcag2aa', 'wcag22aa']);
for (const sel of options.exclude ?? []) builder = builder.exclude(sel);
if (options.disableRules?.length) builder = builder.disableRules(options.disableRules);
const results = await builder.analyze();
await testInfo.attach('a11y-results', {
body: JSON.stringify(results, null, 2), contentType: 'application/json',
});
const violations = results.violations.map((v) => ({
rule: v.id, impact: v.impact, description: v.description,
helpUrl: v.helpUrl, elements: v.nodes.map((n) => n.html).slice(0, 5),
}));
expect(violations, `${violations.length} a11y violations:\n${JSON.stringify(violations, null, 2)}`)
.toHaveLength(0);
}
```
### Using in Tests
```typescript
// e2e/tests/a11y/pages.spec.ts
import { test, expect } from '@playwright/test';
import { checkAccessibility } from '../../helpers/a11y';
test.describe('Accessibility - public pages', () => {
for (const { name, path } of [
{ name: 'Home', path: '/' }, { name: 'Login', path: '/login' },
{ name: 'Pricing', path: '/pricing' }, { name: 'Sign Up', path: '/signup' },
]) {
test(`${name} page has no a11y violations`, async ({ page }, testInfo) => {
await page.goto(path);
await checkAccessibility(page, testInfo);
});
}
});
test.describe('Accessibility - interactive states', () => {
test('modal dialog is accessible when open', async ({ page }, testInfo) => {
await page.goto('/dashboard');
await page.getByRole('button', { name: 'Create project' }).click();From JaiminVadadoriya/Distributed-Cloud-Storage---Sync-Platform, MIT.
More from JaiminVadadoriya/Distributed-Cloud-Storage---Sync-Platform
- 0.502score
ci-cd-integration
kindlmann
Design CI/CD pipelines for test execution.
SkillCFreshness: C★ 1Claude Code +9 - 0.502score
ai-bug-triage
kindlmann
Hybrid fingerprint + LLM pipeline for bug classification, deduplication, and ticket generation.
SkillCFreshness: C★ 1Claude Code +9 - 0.502score
ai-test-generation
kindlmann
Staged pipeline for AI-assisted test generation: requirements extraction → risk analysis → coverage matrix → scenario generation → oracle design → test code →…
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
ai-system-testing
kindlmann
Test AI-powered features including LLM prompts, tool calls, nondeterministic outputs, evaluation frameworks, and hallucination risk assessment.
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
api-testing
kindlmann
Test REST and GraphQL APIs with Playwright APIRequestContext, Supertest, or standalone HTTP clients.
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
ai-qa-review
kindlmann
QA-focused code review for test quality.
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
chaos-engineering
kindlmann
Validate system resilience through controlled fault injection.
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
cypress-automation
kindlmann
Build Cypress test suites with component testing, E2E testing, custom commands, cy.intercept for network control, Cypress Cloud integration, and TypeScript…
SkillCFreshness: C★ 1Claude Code +9 - 0.488score
coverage-analysis
kindlmann
Measure and improve test coverage meaningfully.
SkillCFreshness: C★ 1Claude Code +9 - 0.488score
compliance-testing
kindlmann
Test for regulatory compliance including GDPR/CMP consent verification, Better Ads Standards, cookie compliance auditing, and privacy policy validation.
SkillCFreshness: C★ 1Claude Code +9 - 0.488score
database-testing
kindlmann
Validate database integrity, test migrations forward and backward, verify schema constraints, manage seed data, and identify query performance issues.
SkillCFreshness: C★ 1Claude Code +9 - 0.488score
cross-browser-testing
kindlmann
Design analytics-driven browser test matrices and execute cross-browser tests.
SkillCFreshness: C★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- May 30, 2026 (5 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- Version
- 1.0
- License
- MIT
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from kindlmann
- 0.570score
coverage-analysis
kindlmann
Measure and improve test coverage meaningfully.
SkillAFreshness: AClaude Code +9 - 0.570score
ai-qa-review
kindlmann
Review EXISTING test code for quality, smells, and testability issues.
SkillAFreshness: AClaude Code +9 - 0.570score
release-readiness
kindlmann
Validate release readiness with evidence-based go/no-go decisions.
SkillAFreshness: AClaude Code +9 - 0.570score
risk-based-testing
kindlmann
Produce a risk matrix or heatmap that quantifies what could break by business impact × probability, runs failure mode analysis on the top items, and maps test…
SkillAFreshness: AClaude Code +9 - 0.570score
qa-project-context
kindlmann
Create and fill .agents/qa-project-context.md with the project's tech stack, test frameworks, CI/CD pipeline, environments, quality goals, risk areas, team…
SkillAFreshness: AClaude Code +9 - 0.502score
ai-test-generation
kindlmann
Staged pipeline for AI-assisted test generation: requirements extraction → risk analysis → coverage matrix → scenario generation → oracle design → test code →…
SkillCFreshness: C★ 1Claude Code +9
Cite this page
accessibility-testing skill. Agent Mart. https://agentmart.dev/skills/jaiminvadadoriya-accessibility-testing (last updated 2026-10-24)