axe-core 与 WAVE:成功、失败及结果分析
axe-core 与 WAVE:成功、失败及结果分析
日期:2026-09-04。结果版本:multi-agent-v3。
本报告分析既有扫描和三 agent 复核结果,不新增扫描、不修改标签。这里的“成功”分别讨论引擎执行成功、候选发现价值和目标 failure 的证据支持,三者不能混为一谈。
1. 核心结论
- 扫描执行成功:31 个冻结生成站点首页 × 2 个工具,62/62 次正式扫描成功。它说明引擎完成执行并返回结果,不说明网站无障碍、联网渲染完整或任务可以成功完成。
- 两种工具提供了不同的候选线索:本批 axe 的目标范围内结果集中在主内容地标、区域覆盖、地标区分和标题层级;WAVE 的有用候选集中在重复链接、重复控件暴露及重复 accessible name。
- WAVE 的 48 条 FP 不能解读为“48 个确定 error 被证伪”:它们来自纳入复核的
alert类别。与 axe 的violations直接比较 TP/FP 数量,不能得出工具精度优劣。 - 范围排除与去重是独立维度:507 条纯视觉候选仍在目标范围之外,其中 222 条经共同修复关系复核改为 Duplicate。范围外 Duplicate 不进入研究范围内的 TP/FP 统计。
- 当前结果不足以证明 dynamic / temporal failure 的检测能力或漏检率:TP 是 agent 根据静态 DOM/AX、渲染及源码推断的导航相关影响;没有新增按键序列或 Orca 回放,也没有与 LTL 人工标注建立可靠的同缺陷对应。
来源:正式扫描报告、执行与离线环境说明、v3 统计、v3 复核报告。
2. 实验范围与方法
| 项目 | 本轮设置 |
|---|---|
| 被测对象 | 31 个冻结生成站点快照,不是对应真实在线网站的当前版本 |
| 页面状态 | 每站初始首页;没有系统遍历子路由或交互后状态 |
| 视口 | 1440 × 900 |
| 执行隔离 | 每个工具使用新的浏览器 context |
| axe-core | 4.12.1 |
| WAVE | 3.3.1.0,本地扩展引擎适配;不是官方托管 API |
| 网络 | 外部请求被阻止;15 个站点至少一次扫描出现被阻止的请求 |
| 复核证据 | 原始报告及截图、补采 DOM、computed style、Playwright AX snapshot、冻结源码 |
| 判定方法 | 三个同模型 agent 独立投票,至少 2/3 同意;保留理由和异议 |
| 人工确认 | 未作为人工金标准确认;没有新增参与者实测 |
主体页面均有内容,但部分站点出现图片缺失。WAVE 本地适配环境保留了侧栏扩展 API onConnect 不可用的日志;引擎成功事件和分类结果已返回。该环境差异应披露,不能据此假定与完整扩展 UI 的所有行为相同。执行说明
三个 agent 使用相同的去标签证据摘要。非视觉 253 条候选按 115 个呈现组提供上下文,允许逐 ID 例外;视觉类先作规则级范围判定。投票并不等于为每条候选独立重放三次浏览器,也不是三个独立人类评审者。
3. 判定口径
目标是 BLV 用户的键盘/屏幕阅读器交互 taxonomy,包括顺序导航、语义结构定位、命名、可达性及反馈/焦点/状态变化。纯视觉配色、字号等在本轮排除。
| 字段或标签 | 本轮含义 |
|---|---|
TP / correct | 三 agent 多数认为现有证据支持具体的目标范围内导航或理解影响;未必是已回放确认的时序 failure |
FP / false-positive | 在当前状态与所报机制下,没有成立的目标 failure;不等于整个网站可访问 |
excluded | 范围外的保留代表项;排除本身不证明该 finding 是有效的一般无障碍问题 |
duplicate | 与同工具、同站代表项属于同一具体缺陷/同一针对性修复;代表可以是 excluded |
unsure | 多数判定仍未解决的候选;本轮展示数量为 0,但证据层面的不确定性仍存在 |
scope | 独立标记 in-scope 或 outside-target,不会因展示为 Duplicate 而改变 |
本报告遵循用户后续显式修订:范围外候选不用 FP 表示;范围外重复项可以指向 excluded 代表。这优先于旧 handoff 的四标签格式及通用 skill 中未区分该 scope 的表述。原始人工/agent 标注和旧版结果保持不变。
语义地标不是纯视觉样式,因此当前复核仍保留它们。但“与键盘/读屏导航相关”不等于“已证明是动态/时序 failure”。若论文评价对象严格限定为必须通过动作前后状态才能成立的 L2/L3 failure,还需要额外的时序证据资格判定,不能直接把当前 TP 数用作该目标的 TP 数。
4. 原始结果与最终标注
4.1 原始报告类别
| 工具 | 原始类别 | 数量 | 如何处理 |
|---|---|---|---|
| axe-core | violations 节点–规则命中 | 295 | 纳入复核 |
| axe-core | incomplete 节点 | 544 | 单独保留,不当作 violations 或 FP |
| WAVE | error | 0 | 不意味着不存在无障碍问题 |
| WAVE | contrast | 176 | 纳入后按纯视觉机制排除,随后在工具内部去重 |
| WAVE | alert | 289 | 纳入复核,其中 text_small 185 条属于范围外 |
合计复核 760 条原始候选。该单位不是网站数、规则类型数或已确认的独立缺陷数。axe 按站点累加的违规规则出现次数为 36,也不是 36 种不同规则。
4.2 最新互斥展示标签(v3)
| 工具 | TP | FP | Duplicate | Unsure | Excluded 代表 | 原始总数 |
|---|---|---|---|---|---|---|
| axe-core | 17 | 1 | 196 | 0 | 81 | 295 |
| WAVE | 20 | 48 | 193 | 0 | 204 | 465 |
这里的 Duplicate 包括范围内和范围外两部分。两工具之间未去重,因此不能把 17 + 20 宣称为全局 37 个不同的网站缺陷。
4.3 按研究范围拆分
| 工具 | 范围内原始候选 | 范围内 TP | 范围内 FP | 范围内 Duplicate | 范围外原始候选 | 范围外 Duplicate | 范围外保留代表 |
|---|---|---|---|---|---|---|---|
| axe-core | 149 | 17 | 1 | 131 | 146 | 65 | 81 |
| WAVE | 104 | 20 | 48 | 36 | 361 | 157 | 204 |
计数关系:axe 范围外为 65 + 81 = 146;WAVE 范围外为 157 + 204 = 361。范围外总量始终为 507。
4.4 v2 → v3 的变化不是检测性能提升
| 工具 | v2 excluded 展示数 | v3 excluded 代表数 | 转为范围外 Duplicate | excluded 展示数相对减少 |
|---|---|---|---|---|
| axe-core | 146 | 81 | 65 | 44.5% |
| WAVE | 361 | 204 | 157 | 43.5% |
| 合计 | 507 | 285 | 222 | 43.8% |
这是同源修复去重带来的表示压缩,不是修复了网站,也不是提高了检测准确率。v3 的 52 项范围外关系通过三人多数复核;没有确认关系的记录保留为 excluded,并不表示已证明其余代表绝无重复。关系及投票
5. axe-core:成功之处与不足
5.1 有用的发现形式
| 形式 | 本批案例 | 当前证据与价值 |
|---|---|---|
| 缺少主内容地标 | CVS ST0002;Udemy ST0500 | 页面包含大量主体内容,但地标结构没有 main,支持主内容定位能力缺失的结构性推断 |
| 重要内容不在地标覆盖中 | ESPN 比分 ST0303;Steam 商店导航 ST0393;Yahoo Finance 行情 ST0628 | 定位出应进一步检查地标导航绕行的具体模块,而不只是报告配色问题 |
| 同类地标无法区分 | Reddit ST0453 | 两个用途不同的 aside 缺少区分名称,支持地标列表方向感不足的推断 |
| 标题层级线索 | ESPN ST0302 | AX 中主 h1 后出现报道 h3;现标为 TP,但影响判断依赖对分组/导航语境的解释,仍应验证实际后果 |
CVS 与 Udemy 的大量 region 命中并不代表每个文本节点都有一个独立缺陷:同一主体容器修复分别覆盖多个后代,已在范围内去重。这个例子说明原始节点命中数容易放大同一结构问题。
5.2 FP 与证据薄弱点
当前唯一保留 FP 是 CVS ST0004:目标只是工具条中的分隔符 |。为该符号增加地标覆盖,并没有恢复有意义的内容或导航功能,因此这条 region 报告没有成立的用户后果。
同时,较少 FP 不足以证明 axe 更准确。其纳入集是 violations,且本批范围内候选高度集中于相近的结构规则;缺少一般内容访问路径的任务级验证。已有标题导航、页面阅读顺序或其他定位入口,是否足以避免额外负担,不能仅凭“节点不在 landmark 内”作最终结论。
尤其对短工具条、首页引题、标题跳级等候选,三人一致的结构性推断仍不等于用户已观察到困惑。这是现有 TP 应优先验证的部分,而不是本报告擅自修改标签的理由。
6. WAVE:成功之处与 FP 的主要来源
6.1 有用的发现形式
| Failure 形式 | 本批案例 | 证据支持的交互影响 |
|---|---|---|
| 同一卡片多次暴露同一目的地 | Amazon ST0083;Macy’s ST0101;IMDb ST0373;Udemy ST0595 | 图片、标题或详情分别成为到同一对象的链接,AX 确认多次暴露,支持顺序导航增加停靠的推断 |
| 响应式控件副本同时暴露 | Udemy ST0594 | AX 确认两个同名购物车链接,而不是仅在 DOM 中存在隐藏副本 |
| 单个链接名称重复完整内容 | Allrecipes ST0663 | 图片 alt 与链接内标题重复菜名,AX accessible name 中完整名称出现两次 |
| 标题结构线索 | ESPN ST0334 | 与 axe 对应的 h3 层级候选;现有 TP 属于结构影响推断,而非时序回放结论 |
这些候选的价值在于定位值得检查的 DOM/AX 结构。要确认真实键盘停靠次数或 Orca 朗读负担,还需相应交互证据;AX snapshot 不等于完整的焦点轨迹或实际语音输出。
6.2 为什么有 48 条 FP
这 48 条全部来自 alert,而不是 WAVE error 类别。
| 规则 | FP 数量 | 常见原因 |
|---|---|---|
link_redundant | 26 | 相同 URL 不等于相同语义停靠;不同导航语境可能有合理用途;部分目标在当前状态没有暴露 |
label_orphaned | 19 | 包裹式 label 或 aria-label 已提供可用名称,AX 也能确认,未成立所推断的命名失败 |
heading_possible | 2 | 价格或引题并非需要独立导航的章节,所在内容已有语义标题 |
fieldset_missing | 1 | 当前订票单选项名称及原生分组清晰,缺少 fieldset 本身未建立理解困难 |
| 合计 | 48 | 这是目标 failure 判据下的复核结果,不是对所有 WAVE alerts 的误报率估计 |
代表性例子:
- 不同语境的同 URL:Enterprise 的品牌首页链接与导航中的 Rent;SoundCloud 的品牌链接与 Home;Mayo Clinic 在页头、hero 和服务选择区的 Find a doctor。不能仅凭地址一致,认定这些入口都增加无意义的重复。
- 不同内容的同 URL:IMDb 页脚不同名称、Steam 不同游戏行、Yahoo 不同新闻行。当前针对 link_redundant 的 FP 只是否定“这些是同一语义目标的重复停靠”这一推断;它不证明共用目的路由一定正确,目的内容匹配仍是另一项未验证问题。
- 隐藏链接:Yelp
ST0207、ST0209、ST0211的 DOM 记录为不可见、全零布局,完整 AX 中也无 View details;不能把源码中存在链接等同于当前多出一个读屏/键盘停靠。 - 名称已存在:Cargurus 的 Make、Uniqlo 的商品专属 Size/Quantity、AA 的 Adults/Children/Cabin、Enterprise 的时间/年龄等选择框,在 AX 中有明确名称。
- 非标题文本:Apple 的 Just $99 位于现有 h2 下;Petfinder 的 Pet care essentials 后紧跟描述性 h2。
这些例子解释了为什么“alert → 目标 failure”需要额外复核,也解释了为什么不能简单删除所有 alert:同一候选池中也包含实际重复名称和重复入口的有用线索。
7. 范围外发现与工具/环境误判要分开
范围外的 507 条来自 axe color-contrast 146、WAVE contrast 176、WAVE text_small 185。排除是研究目标选择,不是对视觉障碍用户影响的否定。
已有证据中的区别包括:
- Airbnb
ST0232的 Explore tiny homes 白字白底按钮,是值得关注的一般视觉无障碍问题线索,但纯视觉对比度机制不属于本轮目标范围。 - Redfin 白字下有独立深色遮罩,IMDb 排名有可见描边;此前复核指出直接使用报告中的简单颜色比可能没有代表实际外观。这类记录不能仅因为 excluded,就改称已确认 valid accessibility issue。
- 缺失外部图片或离线渲染可能改变视觉背景,因此不能把本批配色结果外推为真实在线网站的结果。
范围外去重仍要求具体共同修复。例如 Udemy 的课程原价共享 .price del 配色;同站金色与紫色 badge 虽配色不同,却共享 .course-badge, .soft-badge 的字号声明,故对于 text_small 可以属于同一次字号修复。跨工具遇到同一组件,仍分别计数。
8. 结果解释:观察、原因与研究含义
8.1 大量命中来自可复用组件,而不是同等数量的独立缺陷
- 观察:axe 有 131 条范围内 Duplicate;WAVE 有 36 条。另有 222 条范围外 Duplicate。
- 解释:主体容器、卡片构造器和局部样式会在多个节点实例上重复产生报告。
- 含义:同时报告原始候选、代表项及同修复关系,不能只比较 raw finding 总数。
- 验证方向:对代表组件作一次针对性修复后重扫,检查其成员是否共同消失。目前这些共同修复关系尚未经过修复后回归实验。
8.2 两种工具在本数据上的候选构成不同
- 观察:axe 的范围内池为 149 条,WAVE 为 104 条;分别保留 17 和 20 个 TP 代表。
- 解释:纳入类别和规则覆盖不同,axe 的结构候选与 WAVE 的链接/名称提示不能作为同质样本直接比较。
- 含义:可以说明本批发现形式不同;不能据“20 大于 17”宣称 WAVE 更强,也不能据“48 大于 1”宣称 WAVE 更差。
- 验证方向:统一页面状态、目标 taxonomy、候选类别及同缺陷匹配后,再比较共同任务上的表现。当前不存在适合计算算法相对性能提升的统一指标或基线。
8.3 投票解决了展示标签,但没有消除经验不确定性
- 观察:v2 的 760 条基础票中 757 条一致,非视觉 253 条中 250 条一致;多数结果 Unsure 为 0。v3 不改变这些基础票。
- 解释:同模型、同政策和相同分组证据容易形成一致判断;一致性不等于独立验证。
- 含义:不能报告“零不确定性”或“人工验证准确率”。本批是全候选的 agent 分组复核,而非随机独立人类标注研究。
- 验证方向:优先人工/Orca 检查结构推断较强但实际用户后果尚弱的 TP,并保留原始少数意见。异议记录
9. Dynamic / temporal failure:当前不能支持的结论
本次没有采集动作前后焦点、反馈、展开状态和恢复行为的完整序列。因此,对于以下模式,当前数据既不能给出已确认检出量,也不能给出漏检量:
- 激活按钮后缺少可感知反馈;
- 页面或视图切换后焦点滞留、方向感丢失;
- disclosure 展开/收起状态与可访问状态不同步;
- 模态框或复合控件中的键盘陷阱与焦点恢复失败;
- 异步结果延迟导致用户无法确认操作结果。
没有这类证据,不等于证明本批所有实例都被 static checker 漏检。 必须先建立确认存在的目标 failure 集,再在相同状态上检查工具输出。
两个历史 S2/FD1 JSON 各含同一套 1502 条案例;其中 184 个案例位于首页路由,但现有精确名称匹配未建立静态候选到历史同缺陷的可靠链接。0 个匹配不等于 0 个真实重叠。没有据此继承历史标签,也没有逐条回读大体积 runtime trace 来建立 TP/FN 对照。历史材料使用记录
本报告不计算 precision、recall 或 F1:缺少与目标时序 failure 对齐的独立 ground truth,候选类别不一致,且分组/代表层面的复核比例不能直接作为全体检测精度。尤其不能把所有 Duplicate 当成 TP,或把所有范围外报告当成 FP。
10. 可用于论文的保守结果表述
在 31 个冻结生成站点的初始首页上,axe-core 与本地 WAVE 引擎分别完成 31 次扫描,产生 295 条 violations 节点–规则候选,以及 176 条 contrast 和 289 条 alert 候选。按照 BLV 键盘/屏幕阅读器导航范围进行三 agent 证据复核后,分别保留 17 和 20 个范围内 TP 代表;范围外报告单独记录,并按工具内部共同修复关系去重。这些结果刻画了静态报告中的导航相关线索与复核负担,而不是动态/时序 failure 检测能力的已验证估计。
这里的 TP 必须在论文中定义为 agent-adjudicated navigation-related candidates。如果主实验要求 interaction-confirmed temporal failures,应先补充交互验证,而不是直接沿用该名称和数字。
11. 建议的下一步(未执行)
- 验证代表案例的真实后果:选择两工具保留的 TP 代表,使用明确的导航/操作任务采集焦点、AX、Orca 语音和动作前后状态;优先验证地标覆盖、标题跳级和重复入口的影响边界。
- 统一比较状态和候选政策:在同一个任务状态检查 axe 与 WAVE,并明确 WAVE error、contrast、alert 以及 axe incomplete 的纳入方式,避免不对称候选池。
- 建立 LTL—static 同缺陷对应:使用网站、路由、目标元素、动作前后状态及共同修复定位,而不是只比 errorId、控件名称或 URL。随后才能讨论 FN、召回率及互补覆盖。
这些是后续验证建议,不表示本轮已经重放、修复或修改任何网站。
12. 数据与文件索引
本报告所在 scratch 目录:
/scratch/general/vast/u6076945/generator-runs/static-a11y-selected31-20260904-r1/blv-review/multi-agent-v3/
HOME 备份目录:
/uufs/chpc.utah.edu/common/home/u6076945/static-a11y-selected31/results/static-a11y-selected31-20260904-r1/blv-review/multi-agent-v3/
- axe 完整标注 / CSV
- WAVE 完整标注 / CSV
- 最新计数与检查
- 全部 axe 范围外记录,含重复项
- 全部 WAVE 范围外记录,含重复项
- 范围外共同修复证据及三票
- 范围内共同修复证据及三票
- 初始独立票 A、B、C
- 原始扫描逐站结果、执行条件及环境限制
逐条记录中的 evidenceRef 指向原始 candidate-evidence.json 的同 errorId 证据;canonicalId 指向同工具代表。分析研究范围时使用 scope=in-scope,不要使用 decision!=excluded。
本报告依据已有检查结果:760 个原 ID 均保留;范围外原始总量 507 不变;范围内标签及原始三票不变;无跨工具/scope 重复、无重复链。没有因撰写分析而重新标注或覆盖已有 JSON/CSV。
