axe-core 与 WAVE:成功、失败及结果分析

axe-core 与 WAVE:成功、失败及结果分析

日期:2026-09-04。结果版本:multi-agent-v3

本报告分析既有扫描和三 agent 复核结果,不新增扫描、不修改标签。这里的“成功”分别讨论引擎执行成功、候选发现价值和目标 failure 的证据支持,三者不能混为一谈。

1. 核心结论

  1. 扫描执行成功:31 个冻结生成站点首页 × 2 个工具,62/62 次正式扫描成功。它说明引擎完成执行并返回结果,不说明网站无障碍、联网渲染完整或任务可以成功完成。
  2. 两种工具提供了不同的候选线索:本批 axe 的目标范围内结果集中在主内容地标、区域覆盖、地标区分和标题层级;WAVE 的有用候选集中在重复链接、重复控件暴露及重复 accessible name。
  3. WAVE 的 48 条 FP 不能解读为“48 个确定 error 被证伪”:它们来自纳入复核的 alert 类别。与 axe 的 violations 直接比较 TP/FP 数量,不能得出工具精度优劣。
  4. 范围排除与去重是独立维度:507 条纯视觉候选仍在目标范围之外,其中 222 条经共同修复关系复核改为 Duplicate。范围外 Duplicate 不进入研究范围内的 TP/FP 统计。
  5. 当前结果不足以证明 dynamic / temporal failure 的检测能力或漏检率:TP 是 agent 根据静态 DOM/AX、渲染及源码推断的导航相关影响;没有新增按键序列或 Orca 回放,也没有与 LTL 人工标注建立可靠的同缺陷对应。

来源:正式扫描报告执行与离线环境说明v3 统计v3 复核报告

2. 实验范围与方法

项目本轮设置
被测对象31 个冻结生成站点快照,不是对应真实在线网站的当前版本
页面状态每站初始首页;没有系统遍历子路由或交互后状态
视口1440 × 900
执行隔离每个工具使用新的浏览器 context
axe-core4.12.1
WAVE3.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-scopeoutside-target,不会因展示为 Duplicate 而改变

本报告遵循用户后续显式修订:范围外候选不用 FP 表示;范围外重复项可以指向 excluded 代表。这优先于旧 handoff 的四标签格式及通用 skill 中未区分该 scope 的表述。原始人工/agent 标注和旧版结果保持不变。

语义地标不是纯视觉样式,因此当前复核仍保留它们。但“与键盘/读屏导航相关”不等于“已证明是动态/时序 failure”。若论文评价对象严格限定为必须通过动作前后状态才能成立的 L2/L3 failure,还需要额外的时序证据资格判定,不能直接把当前 TP 数用作该目标的 TP 数。

4. 原始结果与最终标注

4.1 原始报告类别

工具原始类别数量如何处理
axe-coreviolations 节点–规则命中295纳入复核
axe-coreincomplete 节点544单独保留,不当作 violations 或 FP
WAVEerror0不意味着不存在无障碍问题
WAVEcontrast176纳入后按纯视觉机制排除,随后在工具内部去重
WAVEalert289纳入复核,其中 text_small 185 条属于范围外

合计复核 760 条原始候选。该单位不是网站数、规则类型数或已确认的独立缺陷数。axe 按站点累加的违规规则出现次数为 36,也不是 36 种不同规则。

4.2 最新互斥展示标签(v3)

工具TPFPDuplicateUnsureExcluded 代表原始总数
axe-core171196081295
WAVE20481930204465

这里的 Duplicate 包括范围内和范围外两部分。两工具之间未去重,因此不能把 17 + 20 宣称为全局 37 个不同的网站缺陷。

4.3 按研究范围拆分

工具范围内原始候选范围内 TP范围内 FP范围内 Duplicate范围外原始候选范围外 Duplicate范围外保留代表
axe-core1491711311466581
WAVE104204836361157204

计数关系:axe 范围外为 65 + 81 = 146;WAVE 范围外为 157 + 204 = 361。范围外总量始终为 507。

4.4 v2 → v3 的变化不是检测性能提升

工具v2 excluded 展示数v3 excluded 代表数转为范围外 Duplicateexcluded 展示数相对减少
axe-core146816544.5%
WAVE36120415743.5%
合计50728522243.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 ST0302AX 中主 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 ST0594AX 确认两个同名购物车链接,而不是仅在 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_redundant26相同 URL 不等于相同语义停靠;不同导航语境可能有合理用途;部分目标在当前状态没有暴露
label_orphaned19包裹式 label 或 aria-label 已提供可用名称,AX 也能确认,未成立所推断的命名失败
heading_possible2价格或引题并非需要独立导航的章节,所在内容已有语义标题
fieldset_missing1当前订票单选项名称及原生分组清晰,缺少 fieldset 本身未建立理解困难
合计48这是目标 failure 判据下的复核结果,不是对所有 WAVE alerts 的误报率估计

代表性例子:

  • 不同语境的同 URL:Enterprise 的品牌首页链接与导航中的 Rent;SoundCloud 的品牌链接与 Home;Mayo Clinic 在页头、hero 和服务选择区的 Find a doctor。不能仅凭地址一致,认定这些入口都增加无意义的重复。
  • 不同内容的同 URL:IMDb 页脚不同名称、Steam 不同游戏行、Yahoo 不同新闻行。当前针对 link_redundant 的 FP 只是否定“这些是同一语义目标的重复停靠”这一推断;它不证明共用目的路由一定正确,目的内容匹配仍是另一项未验证问题。
  • 隐藏链接:Yelp ST0207ST0209ST0211 的 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. 建议的下一步(未执行)

  1. 验证代表案例的真实后果:选择两工具保留的 TP 代表,使用明确的导航/操作任务采集焦点、AX、Orca 语音和动作前后状态;优先验证地标覆盖、标题跳级和重复入口的影响边界。
  2. 统一比较状态和候选政策:在同一个任务状态检查 axe 与 WAVE,并明确 WAVE error、contrast、alert 以及 axe incomplete 的纳入方式,避免不对称候选池。
  3. 建立 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/

逐条记录中的 evidenceRef 指向原始 candidate-evidence.json 的同 errorId 证据;canonicalId 指向同工具代表。分析研究范围时使用 scope=in-scope,不要使用 decision!=excluded

本报告依据已有检查结果:760 个原 ID 均保留;范围外原始总量 507 不变;范围内标签及原始三票不变;无跨工具/scope 重复、无重复链。没有因撰写分析而重新标注或覆盖已有 JSON/CSV。