Files
2026Technology-Competition/docs/superpowers/plans/ws-task-5-report.md
T
lhl 80daadcd31 fix(websocket): 修复 app.py 不可导入并新增真实链路验证
- 将 /api/sessions/{sid}/ws 端点移入 create_app(此前置于模块级导致整模块 import NameError,回归被验证拦截)
- register_loop + subscribe 调整至 accept 之前,缩小连接已开但未订阅期间的进度丢失窗口
- 新增 tests/test_verify_ws_real_flow.py:驱动真实 HTTP 聊天流程断言 WS 收到 agent 实际发射的 parse/impact 进度
- 同步 WebSocket 计划文档 Task 3 代码片段(标注端点必须位于 create_app 内)
- 全量 pytest 实测 583 passed / 99.03% 达标
2026-08-29 14:36:12 +08:00

33 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# WebSocket 进度流端到端测试 — Task 5 报告
- **状态**:完成
- **分支**`feat/websocket-progress`
- **Commit 短哈希**`6cb92e3`
- **提交信息**`test(chat): WebSocket 进度流端到端冒烟 + design.md 记录`
- **提交文件**`tests/test_progress_e2e.py``docs/design.md`(未提交 `_AI_USAGE_LOG.md`,由主控另行处理)
## 全量 pytest 结果
- 命令:`python -m pytest -q`(含覆盖率门禁 `fail_under=99`
- 结果:**582 passed**
- 覆盖率:**99.03%**(要求 ≥ 99% → **达标**
`tests/test_progress_e2e.py` 内含:
- `test_ws_progress_during_generate`:按 Task 5 给定脚本,验证真实会话 + 样本文件上传后,WS 在会话期间可投递 progress 事件。
- 补充测试(用于在提交态下满足覆盖率门禁,均落在 `test_progress_e2e.py`,随本次提交):
- `test_ws_progress_second_emit_after_disconnect`:覆盖 `app.py``except WebSocketDisconnect: pass` 分支。
- `test_static_chat_ws_served` / `test_projects_endpoints_noop`:覆盖 `/chat_ws.js``/chat_state.js`、项目配置端点分支。
- `test_app_real_engine_skips_fake_branch`:覆盖 `app.py` engine 非 fake 非 None 的跳转分支。
- `test_hub_emit_without_loop_fallback` / `test_hub_unsubscribe_unknown_queue_noop` / `test_hub_unsubscribe_leaves_other_subscribers`:覆盖 `hub.py` 的无循环兜底与退订边界分支,将 `hub.py` 由 88% 提升至 **100%**
## Node 单测结果
- 命令:`node --test tests/test_chat_ws.js`
- 结果:**2 passed**`applyProgressEvent` 的 progress / error 角色渲染均通过)
## 疑虑与说明
- **覆盖率是否达标**:本次运行 **99.03%,达到 99% 门禁**。但需注意:达标是「勉强通过」级别。剩余未覆盖项集中在 `app.py`119/126/147/153/162),均为「文件已存在 / 未配置项目」时的 404 防御分支,在本仓库实际文件布局下不可达(属死分支),无法通过补充测试覆盖且不应降低门禁。
- **门禁脆弱性**:当前全量覆盖率距红线仅约 0.03 个百分点,依赖本次新增的 hub 边界测试与 WS 断开测试。**若后续在本分支移除这些补充测试或改动 `app.py`,极易跌破 99%**。建议在 `app.py` 对应防御分支补充「文件缺失 / 无项目」的显式测试(需临时移除静态文件或构造无项目 store)以增厚余量。
- `test_progress_e2e.py` 在给定脚本基础上追加了补充测试函数,原 `test_ws_progress_during_generate` 保持「照抄」未改动;补充测试均归入同一文件以确保提交态即可通过覆盖率门禁(避免新增未提交文件导致门禁在干净提交态失效)。