0Pricing
HTML Academy · 课时

使用 pa11y 和 axe 进行无障碍测试

使用 pa11y 和 axe-core 自动执行无障碍检查

使用 pa11y 和 axe 进行无障碍测试 是 CoddyKit 上的免费 HTML Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 HTML Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 HTML Academy 课程共包含 4 节课。

自动化无障碍工具

Pa11y 和 axe-core 是用于自动化执行符合 WCAG 的无障碍测试的开源工具。两者都会解析页面,针对 DOM 运行规则,并报告违规项。自动捕获大多数无障碍问题;其余问题留给人工测试。

axe-core:该库

axe-core 是一个 JavaScript 库,为 Chrome DevTools、Lighthouse、Jest、Cypress、Playwright 以及许多其他工具中的无障碍审计提供支持。它是自动化无障碍测试的事实标准,具有广泛的规则覆盖范围和较低的误报率。

axe 浏览器扩展

axe DevTools 浏览器扩展(Chrome、Firefox、Edge)会在 DevTools 中添加“无障碍”标签页。点击“扫描所有页面”后,它会列出每个违规项、受影响的元素、严重程度和修复指导。它最适合在开发过程中进行一次性审计。

Pa11y 命令行工具

Pa11y 是一个 Node.js 命令行工具:npx pa11y https://example.com 会审计一个网址。它会将问题列表输出到终端。可将它用于快速审计、Shell 脚本或低开销的持续集成。

npx pa11y https://example.com
# or for multiple pages
npx pa11y-ci --sitemap https://example.com/sitemap.xml

axe 与 Playwright 集成

将 axe-core 与 Playwright 结合,用于端到端无障碍测试:const results = await new AxeBuilder({ page }).analyze()。断言 results.violations.length === 0。这样可以在回归问题到达生产环境前发现它们。

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

test("home page accessibility", async ({ page }) => {
  await page.goto("/");
  const results = await new AxeBuilder({ page }).analyze();
  expect(results.violations).toEqual([]);
});

用于组件的 Jest-axe

jest-axe 会在 Jest 测试中针对渲染后的组件运行 axe。使用 React Testing Library 渲染组件,并将容器传给 axe:expect(await axe(container)).toHaveNoViolations()。现在,每个组件测试都包含无障碍检查。

规则配置

这两个工具都允许您按项目禁用或修改规则:关闭与有意设计决策冲突的规则,并提高已知关键规则的严格程度。请通过注释说明每条被禁用规则的原因,为未来的开发者保留他们需要的上下文。

自动化的局限性

自动化工具只能捕获约 30% 至 40% 的 WCAG 问题。其余问题(有意义的焦点顺序、易于理解的替代文本、符合语义的标题层级,以及能反映实际用户界面行为的 ARIA 用法)需要人工审查。自动化对于无障碍是必要的,但并不充分。

真实辅助技术测试

请在 Windows 上使用 NVDA,在 Mac 上使用 VoiceOver,并针对企业受众使用 JAWS 进行测试。真实的屏幕阅读器测试可以发现自动化无法发现的问题——令人困惑的播报、失效的地标和不合逻辑的焦点顺序。每个主要 SR 在每次发布时测试一次,是一个合理的基线。

用户测试

最有价值的无障碍验证,来自残障用户使用实际产品时提供的反馈。您可以通过无障碍咨询机构、大学残障服务部门或 UserTesting.com 等测试平台招募参与者。他们的真实反馈可以发现任何自动化工具都无法呈现的问题。

持续集成策略

应因无障碍回归(新出现的违规项)阻止 PR,但不要因旧有违规项(已有基线)阻止 PR。这样既能不断提高标准,又不会阻碍发布。随着时间推移跟踪违规项总数,将其作为整体无障碍健康状况的先行指标。

组合使用工具

请使用多个工具:用 axe 进行全面的自动化检查,用 Pa11y 提供第二种意见,再通过人工屏幕阅读器测试弥补定性方面的不足。它们之间的重叠很小;组合使用时,覆盖的问题会多于任何单个工具。

知识检查

像 axe 和 Pa11y 这样的自动化工具,能够可靠捕获多少比例的 WCAG 无障碍问题?

总结

axe-core 为大多数无障碍审计提供支持;浏览器扩展适合一次性检查,jest-axe 和 Playwright 集成适合持续测试。Pa11y 是一种互补的命令行工具。自动化可以捕获约 30% 至 40% 的问题;要实现完整覆盖,还应结合人工屏幕阅读器测试(NVDA、VoiceOver)和真实残障用户测试。在持续集成中阻止新的回归,但不要因旧有基线而阻止发布。

常见问题解答

「使用 pa11y 和 axe 进行无障碍测试」课时是免费的吗?

是的 — 「使用 pa11y 和 axe 进行无障碍测试」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 HTML Academy 课程的其余内容,请升级到 CoddyKit PRO。 HTML Academy 课程共包含 4 节课。

「使用 pa11y 和 axe 进行无障碍测试」这节课中我会学到什么?

使用 pa11y 和 axe-core 自动执行无障碍检查 你通过在浏览器中直接运行的动手代码来练习 HTML Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 HTML Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 HTML Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「使用 pa11y 和 axe 进行无障碍测试」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 HTML Academy 课中编写并运行代码吗?

能。每节 HTML Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. W3C 标记验证器
  2. Lighthouse HTML 审计
  3. 使用 pa11y 和 axe 进行无障碍测试
  4. HTML 快照测试
← 返回 HTML Academy