如何避免Playwright不同测试套件的测试结果互相覆盖?
解决方案
1. 为不同测试集指定独立的输出目录(推荐)
Playwright 支持通过 --output 参数为每个测试任务指定专属的结果目录,从根源上避免互相覆盖的问题:
- 全量回归测试命令修改为:
npx playwright test --grep "@daily" --reporter=junit --output=test-results-daily - 冒烟测试命令修改为:
npx playwright test --grep "@smoke" --reporter=".\tests\Logging\splunkreporter.ts" --output=test-results-smoke
两类测试的 .last-run.json、结果文件、视频等会分别存放在独立目录中,全量回归的历史结果不会被冒烟测试覆盖,--last-failed 标志可正常使用,自定义报告器的逻辑也无需修改。
2. 修改自定义报告器,禁用目录清理逻辑
若不想拆分目录,可以修改冒烟测试使用的 splunkreporter.ts,阻止其清理测试结果目录:
Playwright 默认会在测试启动前清空输出目录,你可以在自定义报告器的 onBegin 钩子中跳过清理操作,或者在 Playwright 配置文件中针对冒烟测试的配置项设置 preserveOutput: "always"(注意配置作用范围,避免影响全量回归测试)。
3. 批处理中备份并恢复关键文件
如果暂时无法修改命令或报告器代码,可在冒烟测试的批处理脚本中添加备份逻辑:
- 测试启动前,将
test-results/.last-run.json备份到其他路径(比如test-results-backup/.last-run-daily.json) - 测试完成后,再将备份文件恢复到原位置
不过这种方式存在时间冲突风险(若全量回归测试在备份/恢复期间启动),仅作为临时应急方案。
内容的提问来源于stack exchange,提问作者Andy Giebel
相关产品推荐
相关产品推荐

