首页/开发/软件测试速查/Playwright 失败重试
自动化测试66 条

Playwright 失败重试

Playwright 在配置里设置 retries 次数:失败用例自动重跑并在报告中标记为 flaky;配合 trace: 'on-first-retry' 可以先拿到重试时的完整现场。

软件测试速查开发更新于 2026-10-13

重试机制是什么

Playwright 的失败重试:配置 retries 后失败用例自动重跑,重跑通过会被标记为 flaky(黄色)而不是绿色——统计透明度是设计目标。官方建议只在 CI 开启重试(本地不重试,暴露真实失败),并配 trace 在第一轮失败时保留完整现场。次数按流水线时间预算设定,不是越多越安全。

基本信息

配置位置playwright.config 的 retries,可全局或按 project 设置
命令行--retries=N 临时覆盖配置
条件开启retries: process.env.CI ? 2 : 0 是常见写法
flaky 标记重跑通过单列为 flaky,不与首次通过混计
现场保留trace 设为 on-first-retry,只在首个失败重试时录制
用例内感知testInfo.retry 判断当前是第几次尝试

配置示例

配置示例
// playwright.config.ts 片段
export default defineConfig({
  retries: process.env.CI ? 2 : 0,   // 本地不重试,CI 允许 2 次
  use: { trace: 'on-first-retry' },  // 首个失败自动留 trace 现场
});

典型使用场景

  • CI 环境抖动隔离:网络与资源争抢导致的偶发失败
  • 上线阻塞澄清:重试通过占比高说明 flaky 在涨,另立治理任务
  • 现场采集:trace 与视频挂到报告,复盘不靠记忆
  • 分环境策略:内网 CI 重试 2 次,发布门禁 0 重试保确定性
  • 与分片并行配合:单 worker 崩溃不影响其余分片的重试
  • 本地排查:手动指定重试一次,观察报告里的 flaky 标记与 trace
  • 治理追踪:每两周统计 flaky 榜单,按用例逐条清账

结果状态怎么读

状态含义动作
green首次通过无
flaky重试后通过登记造册,专项治理
failed全部尝试失败当真实缺陷处理
timedOut超时先查等待策略与性能
重试是诊断工具不是修复手段:flaky 率持续上升要有专人处理,否则流水线的红色会逐渐失去公信力。
trace 记录首个失败过程,重试成功的用例也能回看现场——排查 flaky 全靠它。
本地也开重试会掩盖真实失败:开发用「反正会重跑」自我安慰,缺陷拖到发布窗口才爆。
重试会放大隔离问题:并行 worker 崩溃波及更多用例,先修隔离性再调重试次数。

易错点

  • 重试次数不设上限:一条用例拖垮整个流水线时长,2 次是常见平衡点
  • 把 flaky 计入通过率对外汇报:质量数字虚高,治理优先级被压低
  • 本地开发也开重试:真实失败被掩盖,问题集中到发布前爆发
  • 不采集 trace 就重试:偶发失败永远查无实据,只能反复重跑到消失
  • 重试只在 CI 脚本里写死:本地与 CI 行为不一致,排查时互相怀疑

数据来源与参考

  • Playwright 官方文档:Retries(playwright.dev)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌