Accessibility Testing Expert (2026 Edition)
English | Bahasa Indonesia
English
Orchestration & Integration
global-a11y-i18n-expert: Core WCAG rules, ARIA patterns, and internationalization standards.
e2e-testing-expert: Integrating automated accessibility assertions into Playwright/Vitest CI suites.
ui-components-expert: Accessible component primitives (Radix UI, Base UI, ARIA patterns).
visual-qa-vision-agent: Visual audits for focus rings, contrast ratios, and layout flow.
Description
Production guide for automated, semi-automated, and manual web accessibility (a11y) testing. Covers WCAG 2.2 Level AA/AAA compliance validation using @axe-core/playwright, Pa11y, Google Lighthouse CI, screen reader verification (NVDA, VoiceOver), keyboard navigation audits, focus management, and color contrast compliance.
Trigger Conditions
- Running automated accessibility test suites in CI/CD pipelines.
- Auditing web apps for WCAG 2.1 / 2.2 Level AA compliance and legal accessibility requirements (ADA, EAA).
- Debugging keyboard traps, missing ARIA labels, or broken screen reader navigation.
- Writing test cases for focus trapping in modals and custom dialogs.
Core Testing Workflows
1. Automated A11y Testing with Playwright & Axe-Core
import { test, expect } from '@playwright/test';
import AxeBuilder from '@axe-core/playwright';
test.describe('Accessibility Automated Audits', () => {
test('homepage should have zero critical or serious a11y violations', async ({ page }) => {
await page.goto('/');
const accessibilityScanResults = await new AxeBuilder({ page })
.withTags(['wcag2a', 'wcag2aa', 'wcag22aa'])
.disableRules(['color-contrast']) // If tested separately
.analyze();
expect(accessibilityScanResults.violations).toEqual([]);
});
test('modal dialog should trap focus and pass a11y audit', async ({ page }) => {
await page.goto('/dashboard');
await page.click('button#open-modal');
// Verify modal is open and focused
const modal = page.locator('[role="dialog"]');
await expect(modal).toBeVisible();
const modalAudit = await new AxeBuilder({ page })
.include('[role="dialog"]')
.analyze();
expect(modalAudit.violations).toEqual([]);
// Verify keyboard escape closes modal
await page.keyboard.press('Escape');
await expect(modal).toBeHidden();
});
});
2. Automated Pa11y CI Configuration (.pa11yci.json)
{
"defaults": {
"standard": "WCAG2AA",
"timeout": 15000,
"runners": ["axe", "htmlcs"],
"ignore": [
"WCAG2AA.Principle1.Guideline1_4.1_4_3.G18.Abs"
]
},
"urls": [
"http://localhost:3000/",
"http://localhost:3000/login",
"http://localhost:3000/pricing",
"http://localhost:3000/docs"
]
}
3. Keyboard & Screen Reader Verification Checklist
- Tab Navigation: All interactive elements (
<button>, <a>, <input>) can receive focus in logical reading order.
- Focus Indicators: Visible, high-contrast focus rings (
outline: 2px solid var(--focus-color) with outline-offset).
- No Keyboard Traps: Focus can enter and leave components using only
Tab, Shift+Tab, and Esc.
- Landmarks: Proper semantic tags (
<header>, <nav>, <main>, <footer>, <aside>).
- ARIA Attributes:
aria-expanded, aria-controls, aria-haspopup, and aria-live updated dynamically.
Bahasa Indonesia
Integrasi Orkestrasi
global-a11y-i18n-expert: Pedoman standar WCAG, pola ARIA, dan aksesibilitas internasional.
e2e-testing-expert: Integrasi pengujian aksesibilitas otomatis ke pipeline Playwright CI.
ui-components-expert: Validasi aksesibilitas komponen headless dan desain UI.
Deskripsi
Panduan produksi untuk pengujian aksesibilitas web (a11y) otomatis dan manual. Memastikan kepatuhan terhadap standar WCAG 2.2 Level AA/AAA menggunakan @axe-core/playwright, Pa11y, Lighthouse CI, pengujian screen reader, navigasi keyboard, dan kontras warna.
Kondisi Pemicu
- Menjalankan audit aksesibilitas otomatis di pipeline CI/CD.
- Memverifikasi kepatuhan hukum aksesibilitas (WCAG 2.2, ADA, EAA).
- Menguji alur keyboard dan pembaca layar (screen reader) pada komponen kompleks seperti modal dan dropdown.
1---2name: accessibility-testing-expert3description: Expert guide for automated and manual Web Accessibility (a11y) testing — axe-core, Pa11y, Playwright a11y, screen reader testing, and WCAG 2.2 Level AA/AAA compliance / Panduan ahli pengujian aksesibilitas web.4---56# Accessibility Testing Expert (2026 Edition)78[English](#english) | [Bahasa Indonesia](#bahasa-indonesia)910---1112<a name="english"></a>13## English1415### Orchestration & Integration16- **`global-a11y-i18n-expert`**: Core WCAG rules, ARIA patterns, and internationalization standards.17- **`e2e-testing-expert`**: Integrating automated accessibility assertions into Playwright/Vitest CI suites.18- **`ui-components-expert`**: Accessible component primitives (Radix UI, Base UI, ARIA patterns).19- **`visual-qa-vision-agent`**: Visual audits for focus rings, contrast ratios, and layout flow.2021### Description22Production guide for automated, semi-automated, and manual web accessibility (a11y) testing. Covers WCAG 2.2 Level AA/AAA compliance validation using `@axe-core/playwright`, Pa11y, Google Lighthouse CI, screen reader verification (NVDA, VoiceOver), keyboard navigation audits, focus management, and color contrast compliance.2324### Trigger Conditions25- Running automated accessibility test suites in CI/CD pipelines.26- Auditing web apps for WCAG 2.1 / 2.2 Level AA compliance and legal accessibility requirements (ADA, EAA).27- Debugging keyboard traps, missing ARIA labels, or broken screen reader navigation.28- Writing test cases for focus trapping in modals and custom dialogs.2930---3132### Core Testing Workflows3334#### 1. Automated A11y Testing with Playwright & Axe-Core35```typescript36import { test, expect } from '@playwright/test';37import AxeBuilder from '@axe-core/playwright';3839test.describe('Accessibility Automated Audits', () => {40 test('homepage should have zero critical or serious a11y violations', async ({ page }) => {41 await page.goto('/');4243 const accessibilityScanResults = await new AxeBuilder({ page })44 .withTags(['wcag2a', 'wcag2aa', 'wcag22aa'])45 .disableRules(['color-contrast']) // If tested separately46 .analyze();4748 expect(accessibilityScanResults.violations).toEqual([]);49 });5051 test('modal dialog should trap focus and pass a11y audit', async ({ page }) => {52 await page.goto('/dashboard');53 await page.click('button#open-modal');5455 // Verify modal is open and focused56 const modal = page.locator('[role="dialog"]');57 await expect(modal).toBeVisible();5859 const modalAudit = await new AxeBuilder({ page })60 .include('[role="dialog"]')61 .analyze();6263 expect(modalAudit.violations).toEqual([]);6465 // Verify keyboard escape closes modal66 await page.keyboard.press('Escape');67 await expect(modal).toBeHidden();68 });69});70```7172#### 2. Automated Pa11y CI Configuration (`.pa11yci.json`)73```json74{75 "defaults": {76 "standard": "WCAG2AA",77 "timeout": 15000,78 "runners": ["axe", "htmlcs"],79 "ignore": [80 "WCAG2AA.Principle1.Guideline1_4.1_4_3.G18.Abs"81 ]82 },83 "urls": [84 "http://localhost:3000/",85 "http://localhost:3000/login",86 "http://localhost:3000/pricing",87 "http://localhost:3000/docs"88 ]89}90```9192#### 3. Keyboard & Screen Reader Verification Checklist93- **Tab Navigation**: All interactive elements (`<button>`, `<a>`, `<input>`) can receive focus in logical reading order.94- **Focus Indicators**: Visible, high-contrast focus rings (`outline: 2px solid var(--focus-color)` with `outline-offset`).95- **No Keyboard Traps**: Focus can enter and leave components using only `Tab`, `Shift+Tab`, and `Esc`.96- **Landmarks**: Proper semantic tags (`<header>`, `<nav>`, `<main>`, `<footer>`, `<aside>`).97- **ARIA Attributes**: `aria-expanded`, `aria-controls`, `aria-haspopup`, and `aria-live` updated dynamically.9899---100101<a name="bahasa-indonesia"></a>102## Bahasa Indonesia103104### Integrasi Orkestrasi105- **`global-a11y-i18n-expert`**: Pedoman standar WCAG, pola ARIA, dan aksesibilitas internasional.106- **`e2e-testing-expert`**: Integrasi pengujian aksesibilitas otomatis ke pipeline Playwright CI.107- **`ui-components-expert`**: Validasi aksesibilitas komponen headless dan desain UI.108109### Deskripsi110Panduan produksi untuk pengujian aksesibilitas web (a11y) otomatis dan manual. Memastikan kepatuhan terhadap standar WCAG 2.2 Level AA/AAA menggunakan `@axe-core/playwright`, Pa11y, Lighthouse CI, pengujian screen reader, navigasi keyboard, dan kontras warna.111112### Kondisi Pemicu113- Menjalankan audit aksesibilitas otomatis di pipeline CI/CD.114- Memverifikasi kepatuhan hukum aksesibilitas (WCAG 2.2, ADA, EAA).115- Menguji alur keyboard dan pembaca layar (screen reader) pada komponen kompleks seperti modal dan dropdown.