SuperAPI AI 工具集

accessibility-scan

测试与质量

查看项目

更新于 10-15 08:16

技能介绍

用途

accessibility-scan 用于对实时网页执行自动化无障碍(a11y)规则引擎扫描,定位页面中所有可被机械检测到的违规项。它的定位是“审计并报告”,即找出问题及其所在位置,而不负责修复。

主要能力

  • 对指定 URL 或配置目标运行无障碍规则引擎。
  • 输出 JSON 格式的扫描结果。
  • 按影响程度统计违规数量。
  • 逐条报告违规项的位置、证据与修复建议。
  • 支持通过参数控制扫描范围与规则,例如 --selector、--wait-for "<selector>"、--include-aaa、--disable <rules>,也可在 accesslint.config.json 中按目标固定这些参数。

使用方式

$ARGUMENTS 可以是 URL、配置目标名称(如 dev、storybook 等),或留空以审计 accesslint.config.json 中的默认目标。若留空且不存在配置,则需询问 URL 或建议运行 npx @accesslint/cli init。

扫描步骤:

  1. 获取端口:
PORT=$(npx -y @accesslint/chrome@latest ensure | node -e 'process.stdin.on("data",d=>process.stdout.write(""+JSON.parse(d).port))')
  1. 执行扫描:
npx -y @accesslint/cli@latest scan <target> --port "$PORT" --format json

其中 <target> 为 $ARGUMENTS 中的 URL 或配置目标名称。省略该参数(不要传空字符串)则审计配置中的默认目标。

  1. 报告:先按影响程度统计数量,然后每条违规项包含:

    • where:选择器原文,若存在源码则附上 file:line(symbol)。不得编造。若没有任何违规项有源码,注明“source mapping unavailable; located by selector only”。
    • evidence:对比度比值、缺失属性、空名称等。
    • fix:机械性修改,或 NEEDS HUMAN。
  2. 不要编辑文件。对于修复,可应用机械性修改并重新运行以验证;批量工作交给 accesslint:accessibility-fix。

  3. 清理:

npx -y @accesslint/chrome@latest stop --all  # 若 ensure 报告 "managed":false 则跳过

适用场景

  • 对开发中的页面、Storybook 页面等进行自动化无障碍检查。
  • 在持续集成或本地开发流程中快速定位可机械检测的无障碍违规。
  • 作为修复前的定位步骤,为后续人工或批量修复提供依据。

限制

  • 仅定位问题,不执行修复。
  • 只能检测规则引擎可机械发现的违规项。
  • 需要可访问的实时页面;若页面未加载或 URL/目标无效,CLI 退出码为 2,需检查开发服务器。
  • 未知目标名称时,CLI 会列出 accesslint.config.json 中可用的目标。
  • 端口由 ensure 决定,不应硬编码 9222。
  • 源码映射可能不可用,此时只能通过选择器定位。