Skip to content
FunCoding

Search

Search docs, Skills and MCP

集成测试与沙箱矩阵

构建实际测试 bundle,筛选端到端用例,重新生成模型响应并保留失败产物。

This page has not been translated into English yet. The original Chinese version is shown below.

集成测试位于官方仓库 integration-tests,运行构建后的 CLI 并验证文件系统等行为。它们不包含在默认 npm run test 中,需要独立执行。

先构建被测产物

npm run bundle
npm run test:e2e

CLI 源码变化后必须重新 bundle;仅修改测试时不必因此重建程序。否则可能出现用新测试验证旧产物的情况。

缩小执行范围

按文件名运行一组测试:

npm run test:e2e list_directory write_file

按测试名称筛选:

npm run test:e2e -- --test-name-pattern "reads a file"

文件位于 integration-tests,示例省略 .test.js 后缀。按名称筛选时先确认实际匹配用例,避免将零匹配误读为功能通过。

沙箱矩阵

npm run test:integration:all 覆盖不使用沙箱、Docker、Podman 三类环境。分别执行的脚本为:

环境命令
无沙箱npm run test:integration:sandbox:none
Dockernpm run test:integration:sandbox:docker
Podmannpm run test:integration:sandbox:podman

相应运行时需在测试机器可用。官方 chained_e2e.yml 用于 main 的 PR 与 merge queue 集成检查,实际 CI 定义以当前分支为准。

模型响应 golden files

部分测试使用录制的模型响应。需要重新录制时:

REGENERATE_MODEL_GOLDENS="true" npm run test:e2e

新响应可能包含本机或用户信息,纳入仓库前需检查内容。官方要求用例结束执行 await rig.cleanup(),否则 golden files 不会更新;清理不是可省略的收尾步骤。

新测试的稳定性

官方要求新增集成用例至少重复运行 5 次,可使用:

npm run deflake -- --runs=5 --command="npm run test:e2e -- -- --test-name-pattern '<your-new-test-name>'"

也提供 deflake.yml 工作流,按分支与 test_name_pattern 运行。行为评估的三次本地重复要求属于另一套流程,不能替代这里的五次检查。

失败产物

KEEP_OUTPUT=true VERBOSE=true npm run test:integration:sandbox:none

KEEP_OUTPUT 保留临时目录,VERBOSE 增加诊断输出;同时启用时,输出也保存到测试目录日志。产物组织为 .integration-tests/<run-id>/<test-file>/<test-case>/,便于按运行和用例定位。

内存与性能基线测试另见回归测试,它们也不属于默认 e2e。