node-network-devtools
node-network-devtools copied to clipboard
feat: 添加 CDP 消息的全面单元测试
概述
为 node-network-devtools 库添加了全面的 CDP (Chrome DevTools Protocol) 消息单元测试,解决了项目严重缺乏单元测试的问题,特别是针对多进程环境下 CDP 消息测试的困难。
主要变更
🆕 新增文件
src/fork/tests/cdp-messages.test.ts- CDP 消息核心测试src/fork/tests/cdp-test-utils.ts- CDP 测试工具和 Mock 类CDP_TESTS_SUMMARY.md- 测试总结文档
🔧 修改文件
src/common.test.ts- 修复并增强 RequestDetail 测试- 删除了空的
devtool.test.ts文件
测试覆盖范围
CDP 消息类型
- Network 域:
requestWillBeSent,responseReceived,dataReceived,loadingFinished - WebSocket 域:
webSocketCreated,webSocketFrameSent,webSocketFrameReceived,webSocketClosed
测试维度
- ✅ CDP 消息结构验证
- ✅ 不同 HTTP 方法和状态码处理
- ✅ 内容类型和编码处理
- ✅ 消息时序和时间戳验证
- ✅ RequestDetail 与 CDP 格式转换
- ✅ 协议合规性检查
- ✅ JSON 序列化和特殊字符处理
- ✅ 错误处理和边界条件
技术亮点
🎯 解决多进程测试难题
- 使用纯单元测试,避免启动实际服务器进程
- 通过 Mock 对象模拟 DevTools 服务器
- 消除了 "devtool connected" 等日志干扰
📋 完整的 CDP 协议支持
- 遵循
Domain.method命名约定 - 包含所有必需字段验证
- 正确的时间戳格式(秒为单位)
🔧 实用的测试工具
MockDevtoolServer- 模拟 DevTools 服务器MockRequestCenter- 模拟请求中心MockNetworkPluginCore- 模拟网络插件核心- 丰富的测试数据创建工具
测试结果
✓ src/common.test.ts (13)
✓ src/utils/call-site.test.ts (7)
✓ src/utils/stack.test.ts (3)
✓ src/fork/pipe/request-header-transformer.test.ts (6)
✓ src/fork/tests/cdp-messages.test.ts (14)
Test Files 5 passed (5)
Tests 43 passed (43)
运行测试
# 运行所有测试
npm test
# 运行 CDP 特定测试
npx vitest run src/fork/tests/cdp-messages.test.ts
影响评估
- ✅ 无破坏性变更:所有现有功能保持不变
- ✅ 提升代码质量:增加了大量测试覆盖
- ✅ 改善开发体验:提供了可靠的测试基础
- ✅ 增强维护性:确保 CDP 消息处理的正确性
后续计划
- 可以基于这个测试框架继续扩展集成测试
- 添加性能测试和错误恢复测试
- 扩展到其他 CDP 域(Runtime、Page 等)
这个 PR 为项目建立了坚实的测试基础,确保了与 Chrome DevTools 的兼容性和可靠性。
@GrinZero can click here to continue refining the PR