You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Cypress结合axe的508合规扫描中判断无违规并输出提示?

如何在Cypress结合axe的508合规扫描中判断无违规并输出提示?

我之前做Cypress+axe的合规扫描时也碰到过这个问题,cy.checkA11y确实不会直接返回扫描结果,但有两种很实用的方法能实现你要的功能:

方案一:用底层的cy.axeRun直接获取扫描结果

cy.checkA11y其实是对cy.axeRun的上层封装,如果你直接调用更底层的cy.axeRun,就能拿到完整的axe扫描结果对象——里面包含了违规项、通过项等所有细节,判断无违规就变得非常直观:

cy.axeRun('#wrapper', TTv5Conf).then((results) => {
  if (results.violations.length === 0) {
    // 用cy.log在Cypress测试日志里输出提示,也可以换成console.log输出到控制台
    cy.log('✅ 508合规扫描通过!未检测到任何违规项');
  } else {
    // 调用你原来的自定义错误展示函数
    cy.displayError(results.violations);
  }
});

这种方式的好处是灵活性高,除了判断无违规,你还能基于返回的结果做更多自定义处理,比如统计通过项数量、生成更详细的扫描报告等。

方案二:给现有cy.checkA11y加状态标记

如果不想大幅改动现有代码,想继续用cy.checkA11y,可以设置一个简单的状态变量来标记是否存在违规,扫描完成后再检查这个变量:

// 初始化标记为「无违规」状态
let hasViolations = false;

cy.checkA11y('#wrapper', TTv5Conf, (violations) => {
  // 只要进入这个回调,说明存在违规,把标记设为true
  hasViolations = true;
  cy.displayError(violations);
}, true).then(() => {
  // 扫描完成后检查标记,若仍为false则输出通过提示
  if (!hasViolations) {
    cy.log('✅ 所有内容符合508合规要求,无违规!');
  }
});

这里要注意你代码里的第四个参数true——它是skipFailures配置,意思是即使有违规,测试也不会直接失败,这样后续的.then()才能保证执行。如果删掉这个参数,一旦检测到违规,cy.checkA11y会直接让测试失败,后续的提示逻辑就不会运行了。

备注:内容来源于stack exchange,提问作者Keith Fosberg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 18:52:56