网络拦截与桩数据是什么
用 page.route 拦截并改写请求:返回桩数据、修改响应、模拟 500 或超时与限流,用于前端边界验证;HAR 文件也可作为网络记录的固定回放源。网络层拦截让前端测试不依赖后端进度,前后端并行开发时特别有用;但桩数据始终要与真实契约保持对齐。
基本信息
| 核心接口 | page.route 注册处理器,route.fulfill / route.continue / route.abort 决定去向 |
|---|---|
| 匹配方式 | URL 模式(glob 或正则),可限定请求方法与资源类型 |
| 模拟能力 | 桩数据、修改响应、状态码与延迟、中断请求 |
| 扩展 | HAR 回放(routeFromHAR)把真实网络记录固化为回放源 |
| 定位 | 验证前端边界分支的工具,不替代后端契约测试 |
返回桩数据
返回桩数据
await page.route('**/api/users', async route => {
// 返回固定桩数据
await route.fulfill({
status: 200,
contentType: 'application/json',
body: JSON.stringify([{ id: 1, name: 'alice' }]),
});
});
// 场景二:模拟服务端错误
// await route.fulfill({ status: 500 });典型使用场景
- 前端边界:验证空结果、错误码与超时下的界面表现。
- 并行开发:接口未完成时用桩数据推进页面开发与用例。
- 稳定性:隔离第三方接口抖动,回归结果不受外部影响。
- 加载状态:人为延迟某接口,验证加载中与超时处理。
- HAR 回放:把一次真实会话固化为回放源,复现线上问题。
- 限流演练:模拟 429 与间歇失败,验证重试与提示。
route 动作怎么选
| 动作 | 用途 | 典型场景 |
|---|---|---|
| fulfill | 直接返回自造响应 | 桩数据与错误模拟 |
| continue | 放行或改写后转发 | 调整请求头与参数 |
| abort | 中断请求 | 模拟断网与取消操作 |
桩数据覆盖成功、空结果、错误与超时几类分支;前后端并行开发时尤其有用。
断言要落在界面行为上:桩数据只是手段,用户可见的结果才是判定对象。
拦截规则按 URL 与资源类型收窄:全量通配会连静态资源一起替换,页面异常难排查。
routeFromHAR 提供未命中策略(abort 或 fallback),按用例需要显式选择,避免测试悄悄穿透到真实网络。