test(device-link): 恢复拆仓后的连接集成测试并接入 CI - #3943
Conversation
Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
| Filename | Overview |
|---|---|
| apps/mobile/scripts/device-link-reconnect-smoke.mjs | 将旧 server/dev-login smoke 改为可兼容 Mobile 入口的 Vitest 启动器,并明确区分 contract 与 interop 模式。 |
| scripts/device-link/clientHarness.ts | 使用正式 DeviceLinkClient 接入内存 host、Mobile 恢复核心和受控测试时序。 |
| scripts/device-link/relayFixture.ts | 提供仅监听 loopback、采用共享协议常量并支持定向故障注入的测试 relay fixture。 |
| scripts/device-link/reconnect.test.ts | 新增八类连接恢复与可靠传输场景,并验证外部互操作命令不会静默回退或泄露凭据。 |
| scripts/device-link/interop.test.ts | 对显式提供的隔离 relay 执行正式客户端握手、恢复和重连验证。 |
| .github/workflows/ci.yml | 在 verify-checks 中加入新增套件的 TypeScript 检查和阻断执行。 |
| packages/device-link/TESTING.md | 更新拆仓后的测试分层、互操作前置条件、覆盖范围和明确非目标。 |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart LR
A["pnpm test:device-link"] --> B["Mobile 兼容启动脚本"]
B --> C{"测试模式"}
C -->|contract| D["Loopback WebSocket fixture"]
C -->|interop| E["显式配置的独立测试 relay"]
D --> F["正式 DeviceLinkClient"]
E --> F
F --> G["Mobile rehydrate / PeerRecoveryScheduler"]
F --> H["Desktop subscription replay scheduler"]
G --> I["断链、丢帧、心跳与快照恢复断言"]
H --> J["订阅失败重试断言"]
I --> K["CI verify 阻断门禁"]
J --> K
Reviews (1): Last reviewed commit: "test(device-link): 恢复拆仓后的连接集成测试并接入 CI" | Re-trigger Greptile
|
@dashhuang 👋 这个 PR 改动了受保护的路径(.github/workflows/ci.yml),auto-review 因此不合并、也不会自动审查。 这些路径的改动需要人工处理。如果执意要改,请联系 Lizi。 |
Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com>
|
已推送 65911f6:同步主干后,将集成测试的 Desktop 订阅恢复回调适配为 验证通过:
真实独立 relay 与原生实机仍未验收;loopback fixture 结果不代表生产服务端互操作已通过。未引入服务端改动或 Mobile package.json 的 PR 差异。 |
这次改了什么
摘要
拆仓后,远程重连 smoke 仍调用已移除的
dev:server和开发登录接口;旧测试还用手工重建 WebSocket 代替正式客户端的自动恢复,无法拦截恢复链路回归。新增
pnpm test:device-link:运行正式DeviceLinkClient、Mobile 恢复核心与 Desktop 订阅重试器,在真实 loopback WebSocket 上注入断链、丢帧和 1013。保留原 Mobile 命令,并接入client-ci的阻断门禁。变更类型
feat新功能fix缺陷修复refactor/perf重构或性能优化docs/test/chore文档、测试或工程维护范围
test:e2e:reconnect:local命令可继续使用;废弃的 dev-login 参数明确报错。UI 变化
不涉及。
怎么验证的
自动验证
覆盖自动重连与消息/输入状态补齐、前台恢复核心、半开网络心跳、故障 peer 对其他控制端的影响、丢失结果可靠重放、host 实例重启、1013 冷却和 Desktop 订阅重试。额外通过子进程把
--interop接到已启动的 fixture,验证指定地址、自动恢复及输出不含测试 token/URL。手工验证
完成独立代码复查;修正冷却时间与 host 下线断言,避免把快照完成耗时或已有握手记录误当恢复证据。
未执行的验证
风险
风险分类
影响与回滚
提交前检查
git commit -s,见 DCO)