产品与设计
当改动后想确认是否引入新的无障碍违规时,用基线对比做…
对比当前页面与基线(未提交改动或指定分支)的无障碍违规差异,只报告新增、修复和既有的 WCAG 问题。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
当改动后想确认是否引入新的无障碍违规时,特定
解决思路
- 解析参数:若存在 `--branch <name>` 则移除并进入分支模式(无值表示使用默认分支);其余部分作为目标,可以是 URL、配置中的目标名,或留空使用 `accesslint.config.json` 的默认目标;若为空且无配置则向用户索要 URL。
- 先启动浏览器并获取端口:`PORT=$(npx -y @accesslint/chrome@latest ensure | node -e 'process.stdin.on("data",d=>process.stdout.write(""+JSON.parse(d).port))')`,不要硬编码 9222。
- 默认使用 stash 模式(对比未提交改动):先告知用户会暂存改动以采集基线随后恢复;若 `git stash push` 失败则警告并退出。
- stash 模式执行:`git stash push -u -m "accesslint-diff-baseline"`,然后 `npx -y @accesslint/cli@latest scan <target> --port "$PORT" --snapshot accesslint-diff --snapshot-dir /tmp --update-snapshot` 采集基线。
- 恢复改动并扫描当前状态:`git stash pop && sleep 2`,然后 `npx -y @accesslint/cli@latest scan <target> --port "$PORT" --snapshot accesslint-diff --snapshot-dir /tmp --format json`。
- 分支模式(`--branch <name>`):先告知用户会切换到该分支采集基线随后恢复;若有未提交改动先 `git stash push -u -m "accesslint-diff-branch"`。
- 分支模式执行:`git checkout <branch>`,然后 `npx -y @accesslint/cli@latest scan <target> --port "$PORT" --snapshot accesslint-diff --snapshot-dir /tmp --update-snapshot [--wait-for "<selector>"]` 采集基线;分支切换会触发重建但不重载浏览器,CLI 每次运行会新开标签页读取当前构建,用 `--wait-for` 等待重建完成,否则慢构建可能得到过期基线。
- 恢复分支与改动:`git checkout - && git stash pop 2>/dev/null`,然后 `npx -y @accesslint/cli@latest scan <target> --port "$PORT" --snapshot accesslint-diff --snapshot-dir /tmp --format json [--wait-for "<selector>"]`。
- 两次运行都要传入 `--selector` 和 `--include-aaa`。
- 报告只写变化:按格式输出「N new · N fixed · N pre-existing hidden」,列出新增违规(按严重级别分组)、已修复项。
- 对每条新增违规给出:位置(原样选择器,若 `source` 存在则附 `file:line (symbol)`,不要编造)、证据、修复建议(机械性改动或标注 `NEEDS HUMAN`)。
- 不要直接编辑代码;对机械性修复可应用后重跑 `accesslint:accessibility-diff` 验证;批量修复交给 `accesslint:accessibility-fix`。
- 收尾:`npx -y @accesslint/chrome@latest stop --all`(若 ensure 报告 `"managed":false` 则跳过)。
- 注意 CLI 退出码 2 表示 URL/目标错误或页面未加载,需检查开发服务器。
- 注意目标名在两次运行中解析一致的前提是 `accesslint.config.json` 在 stash 或 checkout 期间未变;若改动涉及该配置,改用显式 URL。
- stash 模式下 `sleep 2` 覆盖多数 HMR 情况;若基线看起来与当前完全相同,加# `--wait-for "<selector>"`。
- 两次运行间 DOM 变化过大导致选择器漂移时,重跑 `accesslint:accessibility-scan` 获取完整情况。
适用边界 · 注意事项
- 需要单页完整扫描时用 `accessibility-scan`,需要整站审计时用 `accessibility-audit`,而非本差异检查。
- 改动涉及 `accesslint.config.json` 时目标名解析可能不一致,应改用显式 URL。
- 两次运行间 DOM 变化过大导致选择器漂移时,本差异结果不可靠,应改用完整扫描。