mcpField
A
accessibility-testing

accessibility-testing

github.com/proffesor-for-testing测试与质量520137 次安装今天更新
代码仓库

关于 accessibility-testing

accessibility-testing 是一份基础无障碍测试技能参考,面向开发和测试团队。内容包括键盘与屏幕阅读器检查、对比度验证及 axe-core 自动化,并建议复杂审计使用 a11y-ally。

主要功能

  1. 01按 POUR 原则检查无障碍
  2. 02测试键盘导航与焦点
  3. 03检查屏幕阅读器兼容性
  4. 04验证颜色对比度
  5. 05使用 axe-core 自动化检查

适用场景

  1. 01发布前检查页面无障碍问题
  2. 02验证表单和交互控件的键盘操作
  3. 03在现有 Playwright 测试中添加 axe 检查

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/proffesor-for-testing/agentic-qe --skill accessibility-testing

安装后在 Claude Code 中输入/accessibility-testing确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

evals/
accessibility-testing.yaml
schemas/
output.json
scripts/
validate-config.json
test-data/
sample-output.json

详细介绍

无障碍测试

整合版:如需通过多种工具(axe-core + pa11y + Lighthouse)进行全面的 WCAG 审核、视频无障碍检查和问题修复,建议使用 /a11y-ally。本技能提供基本无障碍测试模式的快速参考卡。

浏览器引擎

浏览器驱动的无障碍检查应通过 qe-browser 车队技能执行。vibium a11y-tree --json 会返回完整的无障碍树,且不会进行视觉渲染——将其传入 axe-core,通过 vibium eval --stdin 执行规则集检查。参见 .claude/skills/qe-browser/SKILL.md。

<default_to_action> 测试无障碍性或确保合规时:

  1. 应用 POUR 原则:可感知、可操作、可理解、健壮
  2. 通过仅使用键盘的方式进行测试(Tab、Enter、Escape)
  3. 使用屏幕阅读器验证(VoiceOver、NVDA、JAWS)
  4. 检查颜色对比度(文本为 4.5:1,大号文本为 3:1)
  5. 使用 axe-core 自动化测试,并集成到 CI/CD 流水线中

无障碍快速检查清单:

  • 所有图片都有替代文本(装饰性图片使用 alt="")
  • 所有表单字段都有标签
  • 颜色绝不是唯一的指示方式
  • 所有交互元素都能显示焦点
  • 键盘导航在整个界面中均可使用

关键成功因素:

  • 自动化测试可发现 30-50% 的问题
  • 必须使用真实辅助技术进行手动测试
  • 测试中应纳入残障用户 </default_to_action>

快速参考卡

适用场景
  • 法律合规(ADA、Section 508、EU Directive)
  • 新功能开发
  • 发布前验证
  • 无障碍审计
WCAG 2.2 级别
级别要求目标
A基本无障碍法律最低要求
AA标准(大多数组织)行业标准
AAA增强专业网站
POUR 原则
原则含义关键测试
可感知能够感知内容替代文本、对比度、字幕
可操作能够操作 UI键盘、避免诱发癫痫、导航
可理解能够理解标签清晰、行为可预测、错误提示
健壮兼容辅助技术有效 HTML、ARIA
颜色对比度要求
内容AA 比率AAA 比率
普通文本4.5:17:1
大号文本(18pt+)3:14.5:1
UI 组件3:1-

键盘导航测试

// Test all interactive elements reachable via keyboard
test('all interactive elements keyboard accessible', async ({ page }) => {
  await page.goto('/');

  const focusableElements = await page.$$('button, a, input, select, textarea, [tabindex]');

  for (const element of focusableElements) {
    await element.focus();
    const isFocused = await element.evaluate(el => document.activeElement === el);
    expect(isFocused).toBe(true);
  }
});

// Verify visible focus indicator
test('focus indicator visible', async ({ page }) => {
  await page.goto('/');
  await page.keyboard.press('Tab');

  const focusedElement = await page.locator(':focus');
  const outline = await focusedElement.evaluate(el =>
    getComputedStyle(el).outline
  );

  expect(outline).not.toBe('none');
});

使用 axe-core 进行自动化测试

首选:通过 a11y-ally AQE 技能(qe-browser + Vibium)

新项目应使用 a11y-ally 技能——它将 qe-browser(Vibium WebDriver BiDi)与 axe-core、pa11y 和 Lighthouse 组合使用,并生成带有 WCAG 标记和问题修复指导的 JSON 报告。它无需安装 300MB 的 Playwright,且已接入 AQE 车队。

# Runs axe-core + pa11y + Lighthouse via qe-browser (Vibium) engine
aqe skill run a11y-ally -- --url https://example.com --wcag AA
备用方案:Playwright + @axe-core/playwright

如果你已有 Playwright 测试套件且不想引入第二个浏览器运行器,或者需要 Vibium 目前仅支持 Chrome 的 BiDi 后端尚不支持的 Firefox/Safari 覆盖范围,请保留此方案。

import { test, expect } from '@playwright/test';
import AxeBuilder from '@axe-core/playwright';

test('page has no accessibility violations', async ({ page }) => {
  await page.goto('/');

  const results = await new AxeBuilder({ page })
    .withTags(['wcag2a', 'wcag2aa', 'wcag22aa'])
    .analyze();

  expect(results.violations).toEqual([]);
});

// CI/CD integration
test('checkout flow accessible', async ({ page }) => {
  await page.goto('/checkout');

  const results = await new AxeBuilder({ page })
    .include('#checkout-form')
    .disableRules(['color-contrast']) // Fix in next sprint
    .analyze();

  expect(results.violations.filter(v =>
    v.impact === 'critical' || v.impact === 'serious'
  )).toHaveLength(0);
});

屏幕阅读器测试清单

## VoiceOver (macOS) Testing
- [ ] Page title announced on load
- [ ] Headings hierarchy correct (h1 → h2 → h3)
- [ ] Landmarks present (nav, main, footer)
- [ ] Images have descriptive alt text
- [ ] Form labels read correctly
- [ ] Error messages announced
- [ ] Dynamic content updates announced (aria-live)

Agent 驱动的无障碍测试

// Comprehensive a11y validation
await Task("Accessibility Validation", {
  url: 'https://example.com/checkout',
  standard: 'WCAG2.2',
  level: 'AA',
  checks: ['keyboard', 'screen-reader', 'color-contrast'],
  includeScreenReaderSimulation: true
}, "qe-visual-tester");

// Fleet coordination for comprehensive testing
const a11yFleet = await FleetManager.coordinate({
  strategy: 'comprehensive-accessibility',
  agents: [
    'qe-visual-tester',     // Visual & keyboard checks
    'qe-test-generator',    // Generate a11y tests
    'qe-quality-gate'       // Enforce compliance
  ],
  topology: 'parallel'
});

Agent 协作提示

记忆命名空间
aqe/accessibility/
├── wcag-results/*       - WCAG audit results
├── screen-reader/*      - Screen reader test logs
├── remediation/*        - Fix recommendations
└── compliance/*         - Compliance reports
车队协作
const a11yFleet = await FleetManager.coordinate({
  strategy: 'accessibility-testing',
  agents: [
    'qe-visual-tester',   // axe-core, keyboard, focus
    'qe-test-generator',  // Generate a11y test cases
    'qe-quality-gate'     // Block non-compliant builds
  ],
  topology: 'parallel'
});

相关技能


请记住

全球有 10 亿人有残障。无法访问的软件将全球 15% 的人口排除在外。法律要求:ADA、Section 508、EU Directive 2016/2102。购买力达 13 万亿美元。诉讼数量增加 250% 以上。

自动化测试只能发现 30%–50% 的问题。 应结合手动键盘测试、屏幕阅读器测试,以及与残障人士进行真实用户测试。

借助 Agent: Agent 可自动执行 WCAG 2.2 合规性检查、屏幕阅读器模拟和焦点管理验证。利用 Agent 在 CI/CD 中强制执行无障碍标准,并在上线前发现违规问题。

评论

支持 Markdown