ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

如何搞定 e2e 测试超时:timeout 与 retry 重试配置完整指南

如何搞定 e2e 测试超时:timeout 与 retry 重试配置完整指南 如何搞定 e2e 测试超时timeout 与 retry 重试配置完整指南【免费下载链接】e2eNext generation e2e testing framework for web and mobile apps.项目地址: https://gitcode.com/GitHub_Trending/e2e6/e2e在端到端自动化测试中e2e 测试超时和重试策略是让新手最头疼的两个问题超时设小了误报失败重试加多了又掩盖真 bug。本文基于开源的下一代端到端测试框架 e2e支持 Web 与移动端应用带你一次讲清timeout 五大超时参数与retryretries重试配置的默认值、生效规则和最佳实践帮你快速调出稳定又高效的测试套件。先认识 5 个超时参数各管一摊很多框架只有一个笼统的超时而 e2e 把超时拆成了 5 个各司其职的参数全部在配置文件e2e.config.ts的顶层设置详见 docs/reference/config.mdx参数默认值管什么timeout120000 ms单次测试尝试的总时长含beforeEach和测试主体launchTimeout60000 ms引擎初始化 测试启动的预算actionTimeout30000 ms每次引擎操作点击、输入等的预算assertionTimeout5000 msexpect断言轮询的默认等待上限cleanupTimeout30000 msafterEach、fixture 清理与引擎收尾的预算 新手最常踩的坑断言默认只等 5 秒。对慢加载的页面应给对应断言单独加{ timeout }而不是把全局timeout拉得很大——断言等待机制详见 docs/reference/expect.mdx。beforeEach与测试主体共享timeout而每个afterEach钩子都有独立的cleanupTimeout预算所以即使主体已超时清理逻辑仍能正常收尾不会连坐失败。retries 重试配置0 到 10谁说了算e2e 的retries是单个测试失败后的额外重试次数取值 0 到 10。它的生效遵循由近及远的解析顺序规则定义见 docs/reference/test.mdx测试自身 → 最近的一层 describe 分组 → 外层分组 → config.retries → 内置默认值也就是说你可以给个别容易抖的用例单独开重试而不用影响全局test(checks out, { retries: 2, timeout: 60_000 }, async ({ app }) { await app.open(/checkout); });内置默认值遵循本地宽松、CI 严谨的原则环境retries默认值本地0失败就是失败CI1允许重试一次也可以在命令行按次覆盖无需改配置npx e2e run --workers 4 --retries 2。注意retries写成 0 以外的越界值、或拼错键名比如timout框架都会在收集阶段直接报错并给出最近似的正确键名提示帮你提前发现配置笔误。重试之后flaky 测试是怎么被揪出来的重试不是失败洗白器。CI 默认重试 1 次首次失败、重试后通过的测试会被单独标记为flaky报告里一目了然——这正是定位不稳定流程的线索而不是把它藏起来。配套的录制策略也围绕重试设计trace的默认模式在 CI 下是on-first-retry即只录制重试那一次留下抖动用例的完整现场而平时通过的测试零开销。trace/video共有 5 种模式off、on、retain-on-failure、on-first-retry、on-all-retries配置方法同样记录在 docs/reference/config.mdx。失败重跑闭环--last-failed 比无脑全量重试更聪明调参之外框架还提供了一个比整个 suite 重来一遍高效得多的机制——--last-failed用法见 docs/ci.mdxnpx e2e run npx e2e run --last-failed # 只重跑上次没通过的测试它从上一次的report.json中读取未通过的用例精确重跑失败、超时、被中断的那几个测试其余全绿的不浪费一秒。在 CI 里把它接在主任务后面就是官方推荐的失败兜底姿势配合--shard index/total分片还能在多任务中并行切片。另外若你希望软失败后跳过也算失败可开启failOnSkippedFailure: true避免测试用跳过的方式悄悄逃过重试机制。最佳实践清单照着做就稳了✅超时分层设全局timeout给足余量慢断言用局部{ timeout }精调而不是全局放大✅重试克制加retries建议 1~2 起步超过 3 次说明该修用例而不是加保险✅本地 0 重试、CI 1 重试默认值已是这个策略无需手动配置✅盯住 flaky 报告每次失败后重试通过都是修复信号定期清零✅CI 加 --last-failed 兜底快速复现而不重跑全量❌别用无限重试掩盖时序问题真正的根因通常是等待条件写错了调参只是止血这套超时分层 克制重试 flaky 追踪 精确重跑的组合正是让 e2e 测试套件又快又稳的关键。更多细节可参考调试指南 docs/debugging.mdx 与 CI 配置 docs/ci.mdx。【免费下载链接】e2eNext generation e2e testing framework for web and mobile apps.项目地址: https://gitcode.com/GitHub_Trending/e2e6/e2e创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表