测试
-
完整测试套件(套件、实时、Docker):测试
-
更新和插件包验证:测试更新和插件
-
pnpm test:force:终止任何占用默认控制端口的残留网关进程,然后使用隔离的网关端口运行完整的 Vitest 套件,以免服务器测试与运行中的实例发生冲突。当之前的网关运行导致端口 18789 被占用时,请使用此命令。 -
pnpm test:coverage:运行带有 V8 覆盖率(通过vitest.unit.config.ts)的单元测试套件。这是默认单元通道 的覆盖率关卡,而非整个仓库所有文件的覆盖率。阈值是 70% 的行/函数/语句和 55% 的分支。由于coverage.all为 false,且默认通道范围覆盖包括与非快速单元测试同级的源文件,因此该关卡衡量的是该通道拥有的源文件,而不是它恰好加载的每个传递性导入。 -
pnpm test:coverage:changed:仅对自origin/main以来更改的文件运行单元覆盖率测试。 -
pnpm test:changed:廉价的智能更改测试运行。它运行直接测试编辑、同级*.test.ts文件、显式源映射和本地导入图的精确目标。除非映射到精确测试,否则会跳过广泛的/配置/包的更改。 -
OPENCLAW_TEST_CHANGED_BROAD=1 pnpm test:changed:显式的广泛更改测试运行。当测试工具/配置/包编辑应回退到 Vitest 更广泛的更改测试行为时,请使用此命令。 -
pnpm changed:lanes:显示针对origin/main的差异所触发的架构通道。 -
pnpm check:changed:针对origin/main的差异运行智能更改检查关卡。它为受影响的架构通道运行 typecheck、lint 和 guard 命令,但不运行 Vitest 测试。请使用pnpm test:changed或显式的pnpm test <target>进行测试验证。 -
Codex 工作树和链接/稀疏检出:除非您已验证 pnpm 不会协调依赖关系,否则避免直接进行本地
pnpm test*、pnpm check*和pnpm crabbox:run。对于微小的显式文件验证,请使用node scripts/run-vitest.mjs <path-or-filter>;对于更改的门或广泛验证,请使用node scripts/crabbox-wrapper.mjs run --provider blacksmith-testbox ... --shell -- "pnpm check:changed"以便 pnpm 在 Testbox 内部运行。 -
OPENCLAW_HEAVY_CHECK_LOCK_SCOPE=worktree <local-heavy-check command>:将重型检查序列化保留在当前工作树内,而不是 Git 公共目录中,适用于诸如pnpm check:changed和定向pnpm test ...之类的命令。仅当您有意在链接的工作树之间运行独立检查时,才在高容量本地主机上使用它。 -
pnpm test%%:通过作用域 Vitest 通道路由显式文件/目录目标。无目标的运行使用固定的分片组,并扩展到叶配置以进行本地并行执行;扩展组始终扩展到每个扩展的分片配置,而不是一个巨大的根项目进程。 -
测试包装器运行以简短的
[test] passed|failed|skipped ... in ...摘要结束。Vitest 自己的持续时间行保留每个分片的详细信息。 -
共享 OpenClaw 测试状态:当测试需要隔离的
HOME、OPENCLAW_STATE_DIR、OPENCLAW_CONFIG_PATH、配置夹具、工作区、代理目录或身份配置文件存储时,请使用 Vitest 中的src/test-utils/openclaw-test-state.ts。 -
进程 E2E 辅助程序:当 Vitest 进程级 E2E 测试需要在一处运行 Gateway(网关)、CLI 环境、日志捕获和清理时,请使用
test/helpers/openclaw-test-instance.ts。 -
Docker/Bash E2E 辅助工具:引入了 Docker
scripts/lib/docker-e2e-image.sh的通道可以将docker_e2e_test_state_shell_b64 <label> <scenario>传递到容器中,并使用scripts/lib/openclaw-e2e-instance.sh对其进行解码;多主站脚本可以传递docker_e2e_test_state_function_b64并在每个流中调用openclaw_test_state_create <label> <scenario>。底层的调用者可以使用scripts/lib/openclaw-test-state.mjs shell --label <name> --scenario <name>获取容器内的 shell 片段,或使用node scripts/lib/openclaw-test-state.mjs -- create --label <name> --scenario <name> --env-file <path> --json获取可引入的主机环境文件。create之前的--可防止较新的 Node 运行时将--env-fileDockerGateway(网关) 视为 Node 标志。启动 Gateway 的 Docker/Bash 通道可以在容器内引入scripts/lib/openclaw-e2e-instance.shOpenAIGateway(网关),以便进行入口点解析、模拟 OpenAI 启动、Gateway 前台/后台启动、就绪探针、状态环境变量导出、日志转储和进程清理。 -
完整、扩展和包含模式分片运行会更新
.artifacts/vitest-shard-timings.json中的本地计时数据;随后的完整配置运行将使用这些计时来平衡慢速和快速分片。包含模式 CI 分片会将分片名称附加到计时键,这使得过滤后的分片计时可见,而不会替换完整配置的计时数据。设置OPENCLAW_TEST_PROJECTS_TIMINGS=0可忽略本地计时产物。 -
选定的
plugin-sdk和commands测试文件现在通过专用的轻量级通道进行路由,这些通道仅保留test/setup.ts,而将运行时繁重的用例保留在其现有通道上。 -
具有兄弟测试的源文件会先映射到该兄弟测试,然后再回退到更广泛的目录通配符。在
src/channels/plugins/contracts/test-helpers、src/plugin-sdk/test-helpers和src/plugins/contracts下的辅助编辑使用本地导入图来运行导入测试,而不是在依赖路径精确时广泛运行每个分片。 -
auto-reply现在也拆分为三个专用配置(core、top-level、reply),以便回复工具不会主导更轻量级的顶级状态/令牌/辅助测试。 -
基础 Vitest 配置现在默认为
pool: "threads"和isolate: false,并在所有仓库配置中启用了共享的非隔离运行器。 -
pnpm test:channels运行vitest.channels.config.ts。 -
pnpm test:extensions和pnpm test extensions运行所有扩展/插件分片。繁重的渠道插件、浏览器插件和 OpenAI 作为专用分片运行;其他插件组保持批量处理。使用pnpm test extensions/<id>运行单个捆绑的插件通道。 -
pnpm test:perf:imports:启用 Vitest 导入持续时间 + 导入分解报告,同时仍对显式文件/目录目标使用作用域通道路由。 -
pnpm test:perf:imports:changed:相同的导入分析,但仅针对自origin/main以来更改的文件。 -
pnpm test:perf:changed:bench -- --ref <git-ref>针对同一提交的 git diff,将路由的变更模式路径与原生根项目运行进行基准测试。 -
pnpm test:perf:changed:bench -- --worktree对当前工作树更改集进行基准测试,无需先提交。 -
pnpm test:perf:profile:main:为 Vitest 主线程 (.artifacts/vitest-main-profile) 编写 CPU 性能分析。 -
pnpm test:perf:profile:runner:为单元运行器 (.artifacts/vitest-runner-profile) 编写 CPU + 堆性能分析。 -
pnpm test:perf:groups --full-suite --allow-failures --output .artifacts/test-perf/baseline-before.json:串行运行每个全套件 Vitest 叶子配置并写入分组持续时间数据以及每个配置的 JSON/日志产物。测试性能代理在尝试修复慢速测试之前将其用作基准。 -
pnpm test:perf:groups:compare .artifacts/test-perf/baseline-before.json .artifacts/test-perf/after-agent.json:在进行专注于性能的更改后比较分组报告。 -
Gateway(网关) 集成:通过
OPENCLAW_TEST_INCLUDE_GATEWAY=1 pnpm test或pnpm test:gateway选择加入。 -
pnpm test:e2e:运行网关端到端冒烟测试(多实例 WS/HTTP/节点配对)。默认为threads+isolate: false,在vitest.e2e.config.ts中使用自适应工作线程;使用OPENCLAW_E2E_WORKERS=<n>进行调整并设置OPENCLAW_E2E_VERBOSE=1以获取详细日志。 -
pnpm test:liveAPI:运行提供商实时测试(minimax/zai)。需要 API 密钥和LIVE=1(或提供商特定的*_LIVE_TEST=1)以取消跳过。 -
pnpm test:docker:all:构建共享的 live-test 镜像,将 OpenClaw 打包一次为 npm tarball,构建/重用裸 Node/Git 运行器镜像以及将该 tarball 安装到/app的功能镜像,然后通过加权调度器使用OPENCLAW_SKIP_DOCKER_BUILD=1运行 Docker 冒烟通道。裸镜像(OPENCLAW_DOCKER_E2E_BARE_IMAGE)用于安装程序/更新/插件依赖通道;这些通道挂载预构建的 tarball,而不是使用复制的 repo 源。功能镜像(OPENCLAW_DOCKER_E2E_FUNCTIONAL_IMAGE)用于正常的已构建应用程序功能通道。scripts/package-openclaw-for-docker.mjs是唯一的本地/CI 包打包器,并在 Docker 消费之前验证 tarball 和dist/postinstall-inventory.json。Docker 通道定义位于scripts/lib/docker-e2e-scenarios.mjs;规划器逻辑位于scripts/lib/docker-e2e-plan.mjs;scripts/test-docker-all.mjs执行所选计划。node scripts/test-docker-all.mjs --plan-json发出调度器拥有的 CI 计划,用于选定的通道、镜像类型、包/live-image 需求、状态场景和凭据检查,而无需构建或运行 Docker。OPENCLAW_DOCKER_ALL_PARALLELISM=<n>控制进程插槽,默认为 10;OPENCLAW_DOCKER_ALL_TAIL_PARALLELISM=<n>控制提供商敏感的尾部池,默认为 10。重型通道上限默认为OPENCLAW_DOCKER_ALL_LIVE_LIMIT=9、OPENCLAW_DOCKER_ALL_NPM_LIMIT=10和OPENCLAW_DOCKER_ALL_SERVICE_LIMIT=7;提供商上限默认通过OPENCLAW_DOCKER_ALL_LIVE_CLAUDE_LIMIT=4、OPENCLAW_DOCKER_ALL_LIVE_CODEX_LIMIT=4和OPENCLAW_DOCKER_ALL_LIVE_GEMINI_LIMIT=4为每个提供商一个重型通道。对于较大的主机,请使用OPENCLAW_DOCKER_ALL_WEIGHT_LIMIT或OPENCLAW_DOCKER_ALL_DOCKER_LIMIT。如果一个通道在低并行度主机上超过了有效权重或资源上限,它仍然可以从空池启动,并且将单独运行直到它释放容量。通道启动默认交错 2 秒,以避免本地 Docker 守护进程创建风暴;使用OPENCLAW_DOCKER_ALL_START_STAGGER_MS=<ms>覆盖。运行器默认预检 Docker,清理陈旧的 OpenClaw E2E 容器,每 30 秒发出一次活动通道状态,在兼容通道之间共享提供商 CLI 工具缓存,默认重试一次瞬态 live-提供商 故障(OPENCLAW_DOCKER_ALL_LIVE_RETRIES=<n>),并将通道计时存储在.artifacts/docker-tests/lane-timings.json中,以便在后续运行中进行最长优先排序。使用OPENCLAW_DOCKER_ALL_DRY_RUN=1打印通道清单而不运行 Docker,使用OPENCLAW_DOCKER_ALL_STATUS_INTERVAL_MS=<ms>调整状态输出,或使用OPENCLAW_DOCKER_ALL_TIMINGS=0``OPENCLAW_DOCKER_ALL_LIVE_MODE=skip禁用计时重用。使用 %%PH:INLINE_CODE:116:6091b6c7** 仅用于确定性/本地通道,或使用OPENCLAW_DOCKER_ALL_LIVE_MODE=only仅用于 live-提供商 通道;包别名为pnpm test:docker:local:all和pnpm test:docker:live:all。仅 Live 模式将主通道和尾部 live 通道合并为一个最长优先池,以便提供商桶可以一起打包 Claude、Codex 和 Gemini 工作。除非设置了OPENCLAW_DOCKER_ALL_FAIL_FAST=0,否则运行器将在第一次失败后停止调度新的池通道,并且每个通道都有 120 分钟的回退超时,可以使用OPENCLAW_DOCKER_ALL_LANE_TIMEOUT_MS覆盖;选定的 live/tail 通道使用更严格的每通道上限。CLI 后端 Docker 设置命令有自己的超时,通过OPENCLAW_LIVE_CLI_BACKEND_SETUP_TIMEOUT_SECONDS(默认 180)。每通道日志、summary.json、failures.json和阶段计时写入.artifacts/docker-tests/<run-id>/下;使用pnpm test:docker:timings <summary.json>检查慢速通道,使用pnpm test:docker:rerun <run-id|summary.json|failures.json>打印廉价的定向重新运行命令。 -
pnpm test:docker:browser-cdp-snapshotGateway(网关):构建一个基于 Chromium 的源端 E2E 容器,启动原始 CDP 和一个隔离的 Gateway(网关),运行browser doctor --deep,并验证 CDP 角色快照是否包含链接 URL、光标提升的可点击项、iframe 引用和帧元数据。 -
pnpm test:docker:skill-installOpenClawDocker:在纯净的 Docker 运行器中安装打包的 OpenClaw tarball,禁用skills.install.allowUploadedArchivesClawHub,从实时 ClawHub 搜索中解析当前的 skill slug,通过openclaw skills install安装它,并验证SKILL.md、.clawhub/origin.json、.clawhub/lock.json和skills info --json。 -
CLI 后端实时 Docker 探测可以作为专注的通道运行,例如 CLIDocker
pnpm test:docker:live-cli-backend:claude、pnpm test:docker:live-cli-backend:claude:resume或pnpm test:docker:live-cli-backend:claude:mcp。Gemini 有匹配的:resume和:mcp别名。 -
pnpm test:docker:openwebuiOpenClaw:启动 Docker 化的 OpenClaw + Open WebUI,通过 Open WebUI 登录,检查/api/models,然后通过/api/chat/completions运行真实的代理聊天。需要可用的实时模型 密钥,拉取外部 Open WebUI 镜像,且不像常规 unit/e2e 套件那样预期在 CI 中保持稳定。 -
pnpm test:docker:mcp-channelsGateway(网关):启动一个已设定种子的 Gateway(网关) 容器和第二个生成openclaw mcp serve的客户端容器,然后验证通过真实 stdio 桥接的路由对话发现、记录读取、附件元数据、实时事件队列行为、出站发送路由以及 Claude 风格的渠道 + 权限通知。Claude 通知断言直接读取原始 stdio MCP 帧,因此冒烟测试反映了桥接实际发出的内容。 -
pnpm test:docker:upgrade-survivor:在旧的脏用户装置上安装打包的 OpenClaw tarball,运行包更新以及非交互式诊断检查(没有实时提供商或渠道密钥),然后启动回环 Gateway(网关) 并检查代理、渠道配置、插件允许列表、工作区/会话文件、过时的遗留插件依赖状态、启动和 RPC 状态是否得以保留。 -
pnpm test:docker:published-upgrade-survivor:默认安装openclaw@latest,在没有实时提供商或渠道密钥的情况下植入真实的现有用户文件,使用预置的openclaw config set命令配方配置该基线,将该已发布的安装更新为打包的 OpenClaw tarball,运行非交互式诊断检查,写入.artifacts/upgrade-survivor/summary.json,然后启动回环 Gateway(网关) 并检查配置的意图、工作区/会话文件、过时的插件配置和遗留依赖状态、启动、/healthz、/readyz和 RPC 状态是否得以保留或得到干净修复。使用OPENCLAW_UPGRADE_SURVIVOR_BASELINE_SPEC覆盖某个基线,使用OPENCLAW_UPGRADE_SURVIVOR_BASELINE_SPECS(例如[email protected] [email protected] [email protected])扩展精确的本地矩阵,或使用OPENCLAW_UPGRADE_SURVIVOR_SCENARIOS=reported-issues添加场景装置;报告的问题集包括configured-plugin-installs,用于验证配置的外部 OpenClaw 插件在升级期间自动安装,以及stale-source-plugin-shadow,用于防止仅源代码插件阴影破坏启动。包验收将这些作为published_upgrade_survivor_baseline、published_upgrade_survivor_baselines和published_upgrade_survivor_scenarios公开,并在将精确的包规范传递给 Docker 通道之前解析元基线标记(如last-stable-4或all-since-2026.4.23)。 -
pnpm test:docker:update-migration:在侧重清理的plugin-deps-cleanup场景中运行发布升级幸存测试工具,默认从[email protected]开始。单独的Update Migration工作流使用baselines=all-since-2026.4.23扩展此通道,以便从.23开始的每个稳定发布包都更新到候选版本,并在完整发布 CI 之外验证配置插件的依赖清理。 -
pnpm test:docker:plugins:针对本地路径、file:、具有提升依赖项的 npm 注册表包、git 移动引用、ClawHub 固件、marketplace 更新以及 Claude-bundle 启用/检查运行安装/更新冒烟测试。
本地 PR 门禁
Section titled “本地 PR 门禁”对于本地 PR 落地/门禁检查,请运行:
pnpm check:changedpnpm checkpnpm check:test-typespnpm buildpnpm testpnpm check:docs
如果 pnpm test 在负载较重的宿主机上出现偶发性失败,请在将其视为回归前重新运行一次,然后使用 pnpm test <path/to/test> 进行隔离。对于内存受限的宿主机,请使用:
OPENCLAW_VITEST_MAX_WORKERS=1 pnpm testOPENCLAW_VITEST_FS_MODULE_CACHE_PATH=/tmp/openclaw-vitest-cache pnpm test:changed
模型延迟基准测试(本地密钥)
Section titled “模型延迟基准测试(本地密钥)”用法:
pnpm tsx scripts/bench-model.ts --runs 10- 可选环境变量:
MINIMAX_API_KEY,MINIMAX_BASE_URL,MINIMAX_MODEL,ANTHROPIC_API_KEY - 默认提示词:“用一个单词回复:ok。不要标点符号或额外文本。”
上次运行(2025-12-31,运行 20 次):
- minimax 中位数 1279ms(最小 1114,最大 2431)
- opus 中位数 2454ms(最小 1224,最大 3170)
CLI 启动基准测试
Section titled “CLI 启动基准测试”脚本:scripts/bench-cli-startup.ts
用法:
pnpm test:startup:benchpnpm test:startup:bench:smokepnpm test:startup:bench:savepnpm test:startup:bench:updatepnpm test:startup:bench:checkpnpm tsx scripts/bench-cli-startup.tspnpm tsx scripts/bench-cli-startup.ts --runs 12pnpm tsx scripts/bench-cli-startup.ts --preset realpnpm tsx scripts/bench-cli-startup.ts --preset real --case status --case gatewayStatus --runs 3pnpm tsx scripts/bench-cli-startup.ts --preset real --case tasksJson --case tasksListJson --case tasksAuditJson --runs 3pnpm tsx scripts/bench-cli-startup.ts --entry openclaw.mjs --entry-secondary dist/entry.js --preset allpnpm tsx scripts/bench-cli-startup.ts --preset all --output .artifacts/cli-startup-bench-all.jsonpnpm tsx scripts/bench-cli-startup.ts --preset real --case gatewayStatusJson --output .artifacts/cli-startup-bench-smoke.jsonpnpm tsx scripts/bench-cli-startup.ts --preset real --cpu-prof-dir .artifacts/cli-cpupnpm tsx scripts/bench-cli-startup.ts --json
预设:
startup:--version,--help,health,health --json,status --json,statusreal:health,status,status --json,sessions,sessions --json,tasks --json,tasks list --json,tasks audit --json,agents list --json,gateway status,gateway status --json,gateway health --json,config get gateway.portall: 两种预设
输出包括每个命令的 sampleCount、平均值、p50、p95、最小/最大值、退出码/信号分布以及最大 RSS 摘要。可选的 --cpu-prof-dir / --heap-prof-dir 会在每次运行时写入 V8 性能分析文件,以便计时和性能分析捕获使用相同的测试框架。
已保存输出的约定:
pnpm test:startup:bench:smoke将目标冒烟测试产物写入.artifacts/cli-startup-bench-smoke.jsonpnpm test:startup:bench:save使用runs=5和warmup=1将完整套件产物写入.artifacts/cli-startup-bench-all.jsonpnpm test:startup:bench:update使用runs=5和warmup=1刷新test/fixtures/cli-startup-bench.json处已检入的基准测试固件(fixture)
已检入的固件:
test/fixtures/cli-startup-bench.json- 使用
pnpm test:startup:bench:update刷新 - 使用
pnpm test:startup:bench:check将当前结果与固件进行比较
Gateway(网关) 启动基准测试
Section titled “Gateway(网关) 启动基准测试”脚本:scripts/bench-gateway-startup.ts
该基准测试默认使用位于 CLIdist/entry.js 的已构建 CLI 入口;在使用 package-script 命令之前请先运行
pnpm build。若要改为测量源码运行器,请传递 --entry scripts/run-node.mjs 并将这些结果
与已构建入口的基线分开记录。
用法:
pnpm test:startup:gateway -- --runs 5 --warmup 1pnpm test:startup:gateway -- --case default --runs 10 --warmup 1pnpm test:startup:gateway -- --case skipChannels --case fiftyPlugins --runs 5node --import tsx scripts/bench-gateway-startup.ts --case default --runs 5 --output .artifacts/gateway-startup.jsonnode --import tsx scripts/bench-gateway-startup.ts --case default --runs 3 --cpu-prof-dir .artifacts/gateway-startup-cpu
用例 ID:
defaultGateway(网关):正常的 Gateway(网关) 启动。skipChannelsGateway(网关):跳过渠道启动的 Gateway(网关) 启动。oneInternalHook:一个配置的内部钩子。allInternalHooks:所有内部钩子。fiftyPlugins:50 个清单插件。fiftyStartupLazyPlugins:50 个启动延迟清单插件。
输出包括首次进程输出、/healthz、/readyzGateway(网关)、HTTP 监听日志时间、
Gateway(网关) 就绪日志时间、CPU 时间、CPU 核心比率、最大 RSS、堆、启动跟踪
指标、事件循环延迟以及插件查找表详细指标。该脚本
在子 Gateway(网关) 环境中启用了 OPENCLAW_GATEWAY_STARTUP_TRACE=1Gateway(网关)。
将 /healthz 理解为存活:HTTP 服务器可以响应。将 /readyzGateway(网关)Gateway(网关) 理解为
可用就绪:启动插件 sidecar、通道以及就绪关键的附加后工作已稳定。Gateway(网关) 启动钩子是异步
分发的,不属于就绪保证的一部分。就绪日志时间是
Gateway(网关) 的内部就绪日志时间戳;它对于进程侧
归因很有用,但不能替代外部 /readyz 探针。
在比较更改时,请使用 JSON 输出或 --output。仅当跟踪输出
指向无法仅通过阶段时序解释的导入、编译或 CPU 密集型工作时,才使用 --cpu-prof-dir。
不要将 source-runner 结果与内置
dist/entry.js 结果作为同一基线进行比较。
Gateway(网关) 重启基准测试
Section titled “Gateway(网关) 重启基准测试”脚本:scripts/bench-gateway-restart.ts
重启基准测试仅在 macOS 和 Linux 上受支持。它使用 SIGUSR1 进行 进程内重启,并在 Windows 上立即失败。
该基准测试默认使用位于 CLIdist/entry.js 的内置 CLI 入口;在使用 package-script 命令前请先
运行 pnpm build。如果要改为测量 source
runner,请传递 --entry scripts/run-node.mjs 并将那些结果
与内置入口基线分开保存。
用法:
pnpm test:restart:gateway -- --case skipChannels --runs 1 --restarts 5pnpm test:restart:gateway -- --case default --runs 3 --restarts 3 --warmup 1pnpm test:restart:gateway -- --case skipChannelsAcpxProbe --case skipChannelsNoAcpxProbe --runs 1 --restarts 5node --import tsx scripts/bench-gateway-restart.ts --case fiftyPlugins --runs 1 --restarts 5 --output .artifacts/gateway-restart.jsonnode --import tsx scripts/bench-gateway-restart.ts --json
Case ids(用例 ID):
skipChannels: 跳过通道的重启。skipChannelsAcpxProbe: 跳过通道并开启 ACPX 启动探针的重启。skipChannelsNoAcpxProbe: 跳过通道并关闭 ACPX 启动探针的重启。default: 正常重启。fiftyPlugins: 带有 50 个清单插件的重启。
输出包括 next /healthz、next /readyz、停机时间、重启就绪时间、
替换进程的 CPU、RSS、启动跟踪指标,以及信号处理、
活跃工作排空、关闭阶段、下次启动、就绪时间和内存快照的
重启跟踪指标。该脚本在
子 Gateway(网关) 环境中启用
OPENCLAW_GATEWAY_STARTUP_TRACE=1 和 OPENCLAW_GATEWAY_RESTART_TRACE=1Gateway(网关)。
当变更涉及重启信号、关闭处理程序、
重启后启动、Sidecar 关闭、服务切换或重启后
就绪时,请使用此基准测试。当将 Gateway(网关) 机制与渠道
启动隔离时,请从 skipChannelsGateway(网关) 开始。仅在特定用例解释了
重启路径之后,才使用 default 或插件繁重的场景。
跟踪指标是归因提示,而非结论。应从多个样本、匹配的所有者 Span、/healthz 和 /readyz
行为以及用户可见的重启契约来判断重启变更。
新手引导 E2E (Docker)
Section titled “新手引导 E2E (Docker)”Docker 是可选的;仅容器化的新手引导冒烟测试需要它。
在干净的 Linux 容器中完整的冷启动流程:
scripts/e2e/onboard-docker.sh此脚本通过伪终端驱动交互式向导,验证配置/工作区/会话文件,然后启动 gateway 并运行 openclaw health。
QR 导入冒烟测试 (Docker)
Section titled “QR 导入冒烟测试 (Docker)”确保维护的 QR 运行时辅助程序在支持的 Docker Node 运行时(默认 Node 24,兼容 Node 22)下加载:
pnpm test:docker:qr