Skip to main content
Cypress无障碍测试高级解决方案

拦截拉取请求与设置策略

Cypress无障碍测试报告基于测试执行期间上传的测试工件,在Cypress Cloud服务器端生成。这确保不会对您的Cypress测试运行产生性能影响。

使用Results API

Cypress无障碍测试Results API允许您在测试运行后获取无障碍测试结果,支持基于特定无障碍标准拦截拉取请求或触发警报等工作流。这需要在CI流水线中添加专门的无障碍验证步骤。通过Cypress辅助函数,您可以在CI构建上下文中自动获取相关测试运行的报告。以下是在GitHub Actions中检测到无障碍违规时拦截拉取请求的示例:

左侧显示与构建、测试和部署网站相关的GitHub Actions任务列表。除'verify-accessibility-results'任务及其父级'test'任务外,其他均显示绿色对勾。右侧显示该任务的终端输出,警告'button-name'规则被违反,而该规则之前是通过状态。

实现状态检查

Results API提供完全灵活性来分析结果并采取定制操作。它还可以与拉取请求上的状态检查集成。以下是通过无障碍验证步骤的示例:

GitHub状态检查列表示例,包含通过的'verify-accessibility-results'检查

在验证步骤中定义策略

Results API文档详细介绍了API功能。以下是一个简化示例,展示如何强制执行"无新增失败无障碍规则"策略:

const { getAccessibilityResults } = require('@cypress/extract-cloud-results')

// 已知失败规则列表
const rulesWithExistingViolations = [
'button-name',
// 按需添加更多规则
]

// 获取无障碍测试结果
getAccessibilityResults().then((results) => {
// 识别新增规则违规
const newRuleViolations = results.rules.filter((rule) => {
return !rulesWithExistingViolations.includes(rule.name)
})

if (newRuleViolations.length > 0) {
// 检测到新违规时触发相应操作
throw new Error(
`检测到${newRuleViolations.length}条新增规则违规,必须解决这些问题。`
)
}
})

通过检查结果并定制响应,您可以最大程度控制如何处理无障碍违规问题。利用CI环境上下文(如标签)来微调对特定无障碍测试结果的响应。