a11y-playwright-testing
Accessibility testing for web applications using Playwright (@playwright/test) with TypeScript and axe-core.
Skill by jyjeanne
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/jyjeanne-a11y-playwright-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: design, testing, security, writing
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/a11y-playwright-testing
What's inside
- Skill name
a11y-playwright-testing- Description
- Accessibility testing for web applications using Playwright (@playwright/test) with TypeScript and axe-core. Use when asked to write, run, or debug automated accessibility checks, keyboard navigation tests, focus management, ARIA/semantic validations, screen reader compatibility, or WCAG 2.1 Level AA compliance testing. Covers axe-core integration, POUR principles (perceivable, operable, understandable, robust), color contrast, form labels, landmarks, and accessible names.
- License
- MIT
- Instructions
- 276 lines in SKILL.md · view on GitHub
Files (4)
- SKILL.md
- aria_patterns.md · references/
- snippets.md · references/
- wcag21aa-checklist.md · references/
SKILL.md (first lines)
# Playwright Accessibility Testing (TypeScript)
Comprehensive toolkit for automated accessibility testing using Playwright with TypeScript and axe-core. Enables WCAG 2.1 Level AA compliance verification, keyboard operability testing, semantic validation, and accessibility regression prevention.
> **Activation:** This skill is triggered when working with accessibility testing, WCAG compliance, axe-core scans, keyboard navigation tests, focus management, ARIA validation, or screen reader compatibility.
## When to Use This Skill
- **Automated a11y scans** with axe-core for WCAG 2.1 AA compliance
- **Keyboard navigation tests** for Tab/Enter/Space/Escape/Arrow key operability
- **Focus management** validation for dialogs, menus, and dynamic content
- **Semantic structure** assertions for landmarks, headings, and ARIA
- **Form accessibility** testing for labels, errors, and instructions
- **Color contrast** and visual accessibility verification
- **Screen reader** compatibility testing patterns
## Prerequisites
| Requirement | Details |
|-------------|---------|
| Node.js | v18+ recommended |
| Playwright | `@playwright/test` installed |
| axe-core | `@axe-core/playwright` package |
| TypeScript | Configured in project |
### Quick Setup
```bash
# Add axe-core to existing Playwright project
npm install -D @axe-core/playwright axe-core
```
## First Questions to Ask
Before writing accessibility tests, clarify:
1. **Scope**: Which pages/flows are in scope? What's explicitly excluded?
2. **Standard**: WCAG 2.1 AA (default) or specific organizational policy?
3. **Priority**: Which components are highest risk (forms, modals, navigation, checkout)?
4. **Exceptions**: Known constraints (legacy markup, third-party widgets)?
5. **Assistive Tech**: Which screen readers/browsers need manual testing?
---
## Core Principles
### 1. Automation Limitations
> ⚠️ **Critical**: Automated tooling can detect ~30-40% of accessibility issues. Use automation to prevent regressions and catch common failures; **manual audits are required** for full WCAG conformance.
### 2. Semantic HTML First
Prefer native HTML semantics over ARIA. Use ARIA only when native elements cannot achieve the required semantics.
```typescript
// ✅ Semantic HTML - inherently accessible
await page.getByRole('button', { name: 'Submit' }).click();
// ❌ ARIA override - requires manual keyboard/focus handling
await page.locator('[role="button"]').click(); // Often a <div>
```
### 3. Locator Strategy as A11y Signal
If you **cannot locate an element by role or label**, it's often an accessibility defect.
| Locator Success | Accessibility Signal |
|-----------------|---------------------|
| `getByRole('button', { name: 'Submit' })` ✅ | Button has accessible name |
| `getByLabel('Email')` ✅ | Input properly labeled |
| `getByRole('navigation')` ✅ | Landmark exists |
| `locator('.submit-btn')` ⚠️ | May lack accessible name |
---
## Key Workflows
### Automated Axe Scan (WCAG 2.1 AA)
```typescript
import AxeBuilder from '@axe-core/playwright';
import { test, expect } from '@playwright/test';
test('page has no WCAG 2.1 AA violations', async ({ page }) => {
await page.goto('/');
const results = await new AxeBuilder({ page })
.withTags(['wcag2a', 'wcag2aa', 'wcag21a', 'wcag21aa'])
.analyze();
expect(results.violations).toEqual([]);
});
```
### Scoped Axe Scan (Component-Level)
```typescript
test('form component is accessible', async ({ page }) => {
await page.goto('/contact');
const results = await new AxeBuilder({ page })
.include('#contact-form') // Scope to specific component
.withTags(['wcag2a', 'wcag2aa', 'wcag21a', 'wcag21aa'])
.analyze();
expect(results.violations).toEqual([]);
});
```
### Keyboard Navigation Test
```typescript
test('form is keyboard navigable', async ({ page }) => {
await page.goto('/login');
// Tab to first field
await page.keyboard.press('Tab');
await expect(page.getByLabel('Email')).toBeFocused();From jyjeanne/ai-setup-forge, MIT.
More from jyjeanne/ai-setup-forge
- 0.437score
accessibility-selenium-testing
jyjeanne
Accessibility testing toolkit using Selenium WebDriver 4+ with Java 21+ and axe-core engine.
SkillDFreshness: D★ 1Claude Code +9 - 0.432score
accessibility-audit
jyjeanne
To ensure the application is usable by people with disabilities, complying with WCAG standards and improving SEO/UX.
SkillDFreshness: D★ 1Claude Code +9 - 0.432score
adapter-pattern-typescript
jyjeanne
To allow incompatible interfaces to work together by wrapping an object in an adapter that translates its interface into one that a client expects.
SkillDFreshness: D★ 1Claude Code +9 - 0.432score
ai-model-evaluation
jyjeanne
To systematically assess the performance, accuracy, and safety of LLM outputs using quantitative metrics and "LLM-as-a-Judge" patterns, ensuring production…
SkillDFreshness: D★ 1Claude Code +9 - 0.432score
advanced-rbac
jyjeanne
To implement a scalable permission system where users have roles, and roles have granular permissions.
SkillDFreshness: D★ 1Claude Code +9 - 0.432score
ansible-playbook-creation
jyjeanne
To automate server configuration.
SkillDFreshness: D★ 1Claude Code +9 - 0.432score
ai-agent-design-patterns
jyjeanne
To structure autonomous AI systems that can reason, plan, and execute tools to solve complex, multi-step problems using patterns like ReAct and Multi-Agent…
SkillDFreshness: D★ 1Claude Code +9 - 0.428score
agentation
jyjeanne
Visual UI annotation tool for AI agents.
SkillDFreshness: D★ 1Claude Code +9 - 0.428score
ai-tool-compliance
jyjeanne
Automation skill for designing, verifying, and improving auth, cost, logging, and security compliance based on the internal AI tool mandatory implementation…
SkillDFreshness: D★ 1Claude Code +9 - 0.409score
agent-browser
jyjeanne
Browser automation CLI for AI agents.
SkillDFreshness: D★ 1Claude Code +9 - 0.407score
find-skills
jyjeanne
Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express…
SkillDFreshness: D★ 1Claude Code +9 - 0.407score
algorithmic-art
jyjeanne
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration.
SkillDFreshness: D★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Mar 16, 2026 (7 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/jyjeanne/ai-setup-forge
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from jyjeanne
- 0.437score
accessibility-selenium-testing
jyjeanne
Accessibility testing toolkit using Selenium WebDriver 4+ with Java 21+ and axe-core engine.
SkillDFreshness: D★ 1Claude Code +9 - 0.432score
accessibility-audit
jyjeanne
To ensure the application is usable by people with disabilities, complying with WCAG standards and improving SEO/UX.
SkillDFreshness: D★ 1Claude Code +9 - 0.432score
adapter-pattern-typescript
jyjeanne
To allow incompatible interfaces to work together by wrapping an object in an adapter that translates its interface into one that a client expects.
SkillDFreshness: D★ 1Claude Code +9 - 0.432score
ai-model-evaluation
jyjeanne
To systematically assess the performance, accuracy, and safety of LLM outputs using quantitative metrics and "LLM-as-a-Judge" patterns, ensuring production…
SkillDFreshness: D★ 1Claude Code +9 - 0.432score
advanced-rbac
jyjeanne
To implement a scalable permission system where users have roles, and roles have granular permissions.
SkillDFreshness: D★ 1Claude Code +9 - 0.432score
ansible-playbook-creation
jyjeanne
To automate server configuration.
SkillDFreshness: D★ 1Claude Code +9
Cite this page
a11y-playwright-testing skill. Agent Mart. https://agentmart.dev/skills/jyjeanne-a11y-playwright-testing (last updated 2026-10-24)