用途:在压力下编写可靠的 Playwright 端到端测试,解决覆盖不全、等待策略不稳定的问题。适用信号包括:临近部署期限写 e2e 测试、使用固定值的 waitForSelector() 或 waitForTimeout()、不确定该 mock API 还是打 staging、本地通过但 CI 不稳定、边界用例被推迟到「下个迭代」。
主要能力与核心原则:上线前必须完整覆盖——happy path、错误路径(网络失败、超时、缺数据)、重试逻辑、边界条件都通过后才可发布,不把边界用例推迟。等待必须基于条件而非时间,用 locator 的 waitFor 等待可见/隐藏/挂载等状态,必要时用 waitForFunction 等待自定义条件(如 API 已被调用);超时只作为安全网,导航约 5 秒、复杂异步约 10 秒等为参考默认值。mock 策略按测试意图混合:UI 逻辑测试 mock API 验证 DOM 响应,契约测试打 staging 验证响应结构,关键流程混合 mock 非关键路径并打真实 staging。
使用方式:优先用 page.locator() 而非 page.$(),因其自带等待、错误信息更清晰;用 page.route() 拦截并模拟失败或继续;用 page.on('request'/'response') 收集请求以断言契约。资料给出的关键示例保持原样:await page.locator('.loading').waitFor({ state: 'visible' }); await page.locator('.loading').waitFor({ state: 'hidden' }); await page.goto(url, { waitUntil: 'networkidle', timeout: 30000 }); await page.route('/api/user', route => { route.abort(); });
适用场景与限制:适合需要稳定 e2e 覆盖的团队与 CI 环境;资料未提供安装命令、版本要求、运行环境与许可信息,暂未提供。文中效果数据(flake 率、覆盖率、维护量、CI 时间变化)来自 zenobi.us 实践,不保证普遍适用。