重试机制是什么
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 崩溃波及更多用例,先修隔离性再调重试次数。