test(cli): add e2e test for workflow runs / inspect / thread #173
Reference in New Issue
Block a user
Delete Branch "test/160-workflow-e2e"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What
E2E test for workflow CLI commands with a real daemon.
Why
Validates the full workflow trigger → run → inspect → show pipeline end-to-end.
Changes
e2e-harness.ts— add echo workflow config, workflow worker symlink,workflow/threadCLI commands to harnesse2e-workflow.test.ts— test: trigger echo workflow, verifythread list,thread list --all,thread inspect,thread showRef
Fixes #160
Code Review — PR #173 (workflow e2e)
Verdict: Comment (整体扎实,几点讨论)
⚠️ Warnings
单个
it()承载了整条 trigger → list → wait → inspect → show 链路 — 如果中间某步断言失败,报错信息很难定位是哪个环节挂了。建议至少把inspect和show拆成独立it()(共享daemonhandle 就行),或者在断言前加 descriptive message。e2e 测试排错成本高,失败可读性很重要。echo workflow 的 350ms delay 在 CI 环境下有竞态风险 — 如果第二次 trigger 在第一次完成之后才发出,
thread list就看不到queued状态。当前断言用queued|started做了兜底,但如果 CI 机器很快,两次 trigger 都可能在 list 之前就跑完了。建议要么加大 delay,要么把这个断言放宽(或者 trigger 之后立即 list,不等)。💡 Suggestions
waitForCompletedEchoRuns每次循环都createLogStore+close— 这是安全的但开销不小(反复打开 SQLite)。可以考虑在循环外开一次 store,循环内只做查询,最后 close。不过考虑到这是测试代码,不阻塞。e2e-harness 的
linkWorkspaceDaemonPackage很巧妙 👍 — 用 symlink 让loadDaemonModule在 temp workspace 下也能 resolve@uncaged/nerve-daemon,避免了复杂的 mock。这个 pattern 值得在 harness 文件顶部的 JSDoc 里提一句,方便后人理解为什么需要这个 symlink。echoWorkflowIndexJs用模板字符串写 JS 代码 — 可读性还行,但如果以后 workflow fixture 变复杂,建议考虑放到独立的 fixture 文件里。✅ Looks Good
Reviewed by 小糯 🍡
✅ LGTM
亮点:
createLogStore获取 runId 而不是解析 CLI 输出,更稳健小建议(不阻塞):
waitForCompletedEchoRuns可以复用 harness 里的pollUntil,减少重复linkWorkspaceDaemonPackage)和 #174 有重复,合并后可以统一到 harness 的公共 exportb5a365c487toc45a2f36d2