Release and CI
ãã¹ã
-
å®å šãªãã¹ããããïŒã¹ã€ãŒããã©ã€ããDockerïŒ: ãã¹ã
-
ã¢ããããŒããšPluginããã±ãŒãžã®æ€èšŒ: ã¢ããããŒããšPluginã®ãã¹ã
-
éåžžã®ããŒã«ã«ãã¹ãé åº:
- 倿Žã¹ã³ãŒãã® Vitest 蚌æã«ã¯
pnpm test:changedã - 1 ãã¡ã€ã«ããã£ã¬ã¯ããªããŸãã¯æç€ºçãªã¿ãŒã²ããã«ã¯
pnpm test <path-or-filter>ã - ããŒã«ã«ã® Vitest ãã«ã¹ã€ãŒããæå³çã«å¿
èŠãªå Žåã®ã¿
pnpm testã
- 倿Žã¹ã³ãŒãã® Vitest 蚌æã«ã¯
-
pnpm test:force: ããã©ã«ãã®å¶åŸ¡ããŒããä¿æããŠããæ®ç Gateway ããã»ã¹ãçµäºããéé¢ããã Gateway ããŒãã§ Vitest ãã«ã¹ã€ãŒããå®è¡ããããããµãŒããŒãã¹ããå®è¡äžã®ã€ã³ã¹ã¿ã³ã¹ãšè¡çªããŸããã以åã® Gateway å®è¡ã§ããŒã 18789 ã䜿çšäžã®ãŸãŸã«ãªã£ãå Žåã«äœ¿çšããŸãã -
pnpm test:coverage: V8 ã«ãã¬ããžã§ãŠãããã¹ã€ãŒããå®è¡ããŸãïŒvitest.unit.config.tsçµç±ïŒãããã¯ããã©ã«ããŠãããã¬ãŒã³ã®ã«ãã¬ããžã²ãŒãã§ããããªããžããªå šäœã®å šãã¡ã€ã«ã«ãã¬ããžã§ã¯ãããŸããããããå€ã¯è¡/颿°/ã¹ããŒãã¡ã³ãã 70%ããã©ã³ãã 55% ã§ããcoverage.allã false ã§ãããããã©ã«ãã¬ãŒã³ãã«ãã¬ããžå¯Ÿè±¡ãå åŒãœãŒã¹ãã¡ã€ã«ãæã€éé«éãŠããããã¹ãã«ã¹ã³ãŒãããããããã®ã²ãŒãã¯å¶ç¶èªã¿èŸŒãŸãããã¹ãŠã®æšç§»ç import ã§ã¯ãªãããã®ã¬ãŒã³ãææãããœãŒã¹ã枬å®ããŸãã -
pnpm test:coverage:changed:origin/main以éã«å€æŽããããã¡ã€ã«ã«ã€ããŠã®ã¿ãŠãããã«ãã¬ããžãå®è¡ããŸãã -
pnpm test:changed: å®äŸ¡ã§ã¹ããŒããªå€æŽãã¹ãå®è¡ã§ããçŽæ¥ã®ãã¹ãç·šéãå åŒ*.test.tsãã¡ã€ã«ãæç€ºçãªãœãŒã¹ãããã³ã°ãããŒã«ã« import ã°ã©ããã粟å¯ãªã¿ãŒã²ãããå®è¡ããŸããåºç¯ãª config/package 倿Žã¯ã粟å¯ãªãã¹ãã«ãããã³ã°ãããªãéãã¹ããããããŸãã -
OPENCLAW_TEST_CHANGED_BROAD=1 pnpm test:changed: æç€ºçãªåºç¯å²å€æŽãã¹ãå®è¡ã§ãããã¹ãããŒãã¹/config/package ã®ç·šéã§ãVitest ã®ããåºã倿Žãã¹ãåäœãžãã©ãŒã«ããã¯ãã¹ãå Žåã«äœ¿çšããŸãã -
pnpm changed:lanes:origin/mainã«å¯Ÿãã diff ã«ãã£ãŠããªã¬ãŒãããã¢ãŒããã¯ãã£ã¬ãŒã³ã衚瀺ããŸãã -
pnpm check:changed: CI å€ã§ã¯ããã©ã«ãã§ Crabbox/Testbox ã«å§è²ãããªã¢ãŒãåããã»ã¹å ã§origin/mainã«å¯Ÿãã diff ã®ã¹ããŒã倿Žãã§ãã¯ã²ãŒããå®è¡ããŸãã圱é¿ãåããã¢ãŒããã¯ãã£ã¬ãŒã³ã® typecheckãlintãã¬ãŒãã³ãã³ããå®è¡ããŸãããVitest ãã¹ãã¯å®è¡ããŸããããã¹ã蚌æã«ã¯pnpm test:changedãŸãã¯æç€ºçãªpnpm test <target>ã䜿çšããŸãã -
Codex worktree ãš linked/sparse checkout: 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 ... -- env OPENCLAW_CHECK_CHANGED_REMOTE_CHILD=1 OPENCLAW_CHANGED_LANES_RAW_SYNC=1 corepack pnpm check:changedã䜿çšããpnpm ã Testbox å ã§å®è¡ãããããã«ããŸãã -
Testbox-through-Crabbox 蚌æ: ã©ãããŒã®æçµ
exitCodeãšã¿ã€ãã³ã° JSON ãã³ãã³ãçµæãšããŠäœ¿çšããŸããå§è²ããã Blacksmith GitHub Actions å®è¡ã¯ãSSH ã³ãã³ããæåããåŸã§ããTestbox ã keepalive action ã®å€éšãã忢ãããããcancelledãšè¡šç€ºãããããšããããŸããããããã¹ã倱æãšããŠæ±ãåã«ãã©ãããŒã®èŠçŽãšã³ãã³ãåºåã確èªããŸãã -
OPENCLAW_HEAVY_CHECK_LOCK_SCOPE=worktree <local-heavy-check command>:pnpm check:changedã察象æå®ã®pnpm test ...ãªã©ã®ã³ãã³ãã«ã€ããŠãheavy-check ã®çŽååã Git common dir ã§ã¯ãªãçŸåšã® worktree å ã«ä¿æããŸããlinked worktree å šäœã§ç¬ç«ãããã§ãã¯ãæå³çã«å®è¡ããé«å®¹éã®ããŒã«ã«ãã¹ãã§ã®ã¿äœ¿çšããŸãã -
pnpm test: æç€ºçãªãã¡ã€ã«/ãã£ã¬ã¯ããªã¿ãŒã²ãããã¹ã³ãŒãããã Vitest ã¬ãŒã³ãžã«ãŒãã£ã³ã°ããŸããã¿ãŒã²ãããªãã®å®è¡ã¯ãã«ã¹ã€ãŒã蚌æã§ããåºå®ã·ã£ãŒãã°ã«ãŒãã䜿çšããããŒã«ã«äžŠåå®è¡çšã«ãªãŒã config ãžå±éããéå§åã«äºæãããããŒã«ã«ã·ã£ãŒã fanout ãåºåããŸããæ¡åŒµæ©èœã°ã«ãŒãã¯ã巚倧㪠root-project ããã»ã¹ 1 ã€ã§ã¯ãªããåžžã«æ¡åŒµæ©èœããšã®ã·ã£ãŒã config ãžå±éãããŸãã -
ãã¹ãã©ãããŒã®å®è¡ã¯ãçã
[test] passed|failed|skipped ... in ...èŠçŽã§çµäºããŸããVitest èªäœã® duration è¡ã¯ã·ã£ãŒãããšã®è©³çްã®ãŸãŸã§ãã -
å ±æ OpenClaw ãã¹ãç¶æ : ãã¹ããéé¢ããã
HOMEãOPENCLAW_STATE_DIRãOPENCLAW_CONFIG_PATHãconfig fixtureãworkspaceãagent dirããŸã㯠auth-profile store ãå¿ èŠãšããå ŽåãVitest ããsrc/test-utils/openclaw-test-state.tsã䜿çšããŸãã -
pnpm test:env-mutations:report:HOMEãOPENCLAW_STATE_DIRãOPENCLAW_CONFIG_PATHãOPENCLAW_WORKSPACE_DIRããŸãã¯é¢é£ãã OpenClaw env ããŒãçŽæ¥å€æŽãããã¹ããšããŒãã¹ã®éããããã³ã°ã¬ããŒãã§ããå ±æ test-state helper ãžã®ç§»è¡åè£ãèŠã€ããããã«äœ¿çšããŸãã -
Control UI mocked E2E: Vite Control UI ãèµ·åããmock ããã Gateway WebSocket ã«å¯ŸããŠå®éã® Chromium ããŒãžãæäœãã Vitest + Playwright ã¬ãŒã³ã«ã¯
pnpm test:ui:e2eã䜿çšããŸãããã¹ãã¯ui/src/**/*.e2e.test.tsã«ãããŸããå ±æ mock ãšå¶åŸ¡ã¯ui/src/test-helpers/control-ui-e2e.tsã«ãããŸããpnpm test:e2eã«ã¯ãã®ã¬ãŒã³ãå«ãŸããŸããCodex worktree ã§ã¯ãäŸåé¢ä¿ã®ã€ã³ã¹ããŒã«åŸã®å°ããªå¯Ÿè±¡æå®èšŒæã«ã¯node scripts/run-vitest.mjs run --config test/vitest/vitest.ui-e2e.config.ts --configLoader runner ui/src/ui/e2e/chat-flow.e2e.test.tsãåªå ããããåºç¯ãª GUI 蚌æã«ã¯ Testbox/Crabbox ã䜿çšããŸãã -
ããã»ã¹ E2E helper: Vitest ã®ããã»ã¹ã¬ãã« E2E ãã¹ãããå®è¡äžã® GatewayãCLI envããã°ãã£ããã£ãã¯ãªãŒã³ã¢ããã 1 ãæã§å¿ èŠãšããå Žåã¯
test/helpers/openclaw-test-instance.tsã䜿çšããŸãã -
TUI PTY ãã¹ã: é«é㪠fake-backend PTY ã¬ãŒã³ã«ã¯
node scripts/run-vitest.mjs run --config test/vitest/vitest.tui-pty.config.tsã䜿çšããŸããå€éšã¢ãã«ãšã³ããã€ã³ãã®ã¿ã mock ãããããé ãtui --localsmoke ã«ã¯OPENCLAW_TUI_PTY_INCLUDE_LOCAL=1ãŸãã¯pnpm tui:pty:test:watch --mode localã䜿çšããŸããçã® ANSI ã¹ãããã·ã§ããã§ã¯ãªããå®å®ããå¯èŠããã¹ããŸã㯠fixture åŒã³åºãã assert ããŸãã -
Docker/Bash E2E helper:
scripts/lib/docker-e2e-image.shã source ããã¬ãŒã³ã¯ãdocker_e2e_test_state_shell_b64 <label> <scenario>ãã³ã³ããã«æž¡ããscripts/lib/openclaw-e2e-instance.shã§ãã³ãŒãã§ããŸããmulti-home ã¹ã¯ãªããã¯docker_e2e_test_state_function_b64ãæž¡ããåãããŒã§openclaw_test_state_create <label> <scenario>ãåŒã³åºããŸããäœã¬ãã«ã®åŒã³åºãå ã¯ãã³ã³ããå ã·ã§ã«ã¹ããããã«scripts/lib/openclaw-test-state.mjs shell --label <name> --scenario <name>ã䜿çšããããsource å¯èœãªãã¹ã env ãã¡ã€ã«ã«node scripts/lib/openclaw-test-state.mjs -- create --label <name> --scenario <name> --env-file <path> --jsonã䜿çšã§ããŸããcreateã®åã®--ã¯ãæ°ãã Node ã©ã³ã¿ã€ã ã--env-fileã Node ãã©ã°ãšããŠæ±ãã®ãé²ããŸããGateway ãèµ·åãã Docker/Bash ã¬ãŒã³ã¯ãentrypoint 解決ãmock OpenAI èµ·åãGateway ã® foreground/background èµ·åãreadiness probeãstate env exportããã° dumpãããã»ã¹ã¯ãªãŒã³ã¢ããã®ããã«ãã³ã³ããå ã§scripts/lib/openclaw-e2e-instance.shã source ã§ããŸãã -
ãã«ãæ¡åŒµæ©èœãinclude-pattern ã®ã·ã£ãŒãå®è¡ã¯ãããŒã«ã«ã¿ã€ãã³ã°ããŒã¿ã
.artifacts/vitest-shard-timings.jsonã«æŽæ°ããŸããåŸç¶ã® whole-config å®è¡ã¯ããããã®ã¿ã€ãã³ã°ã䜿çšããŠé ãã·ã£ãŒããšéãã·ã£ãŒãã®ãã©ã³ã¹ãåããŸããinclude-pattern CI ã·ã£ãŒãã¯ã¿ã€ãã³ã°ããŒã«ã·ã£ãŒãåã远å ããwhole-config ã¿ã€ãã³ã°ããŒã¿ã眮ãæããã« filtered shard ã¿ã€ãã³ã°ãå¯èŠåããŸããããŒã«ã«ã¿ã€ãã³ã°ã¢ãŒãã£ãã¡ã¯ããç¡èŠããã«ã¯OPENCLAW_TEST_PROJECTS_TIMINGS=0ãèšå®ããŸãã -
éžæããã
plugin-sdkãšcommandsã®ãã¹ããã¡ã€ã«ã¯ãtest/setup.tsã®ã¿ãä¿æããå°çšã®è»œéã¬ãŒã³ãéãããã«ãªããruntime-heavy ãªã±ãŒã¹ã¯æ¢åã®ã¬ãŒã³ã«æ®ããŸãã -
å åŒãã¹ããæã€ãœãŒã¹ãã¡ã€ã«ã¯ãããåºããã£ã¬ã¯ã㪠glob ã«ãã©ãŒã«ããã¯ããåã«ããã®å åŒãžãããã³ã°ãããŸãã
src/channels/plugins/contracts/test-helpersãsrc/plugin-sdk/test-helpersãsrc/plugins/contractsé äžã® helper ç·šéã¯ãäŸåãã¹ã粟å¯ãªå Žåããã¹ãŠã®ã·ã£ãŒããåºç¯å²å®è¡ãã代ããã«ãããŒã«ã« import ã°ã©ãã䜿çšã㊠importing tests ãå®è¡ããŸãã -
auto-reply㯠3 ã€ã®å°çš configïŒcoreãtop-levelãreplyïŒã«ãåå²ãããreply harness ããã軜ã top-level status/token/helper ãã¹ããæ¯é ããªãããã«ãªããŸããã -
ããŒã¹ Vitest config ã¯ããªããžã㪠config å šäœã§å ±æã®ééé¢ runner ãæå¹ã«ããããã§ãããã©ã«ãã
pool: "threads"ãšisolate: falseã«ãªããŸããã -
pnpm test:channelsã¯vitest.channels.config.tsãå®è¡ããŸãã -
pnpm test:extensionsãšpnpm test extensionsã¯ãã¹ãŠã®æ¡åŒµæ©èœ/Plugin ã·ã£ãŒããå®è¡ããŸããéã channel Pluginãbrowser PluginãOpenAI ã¯å°çšã·ã£ãŒããšããŠå®è¡ãããŸããä»ã® Plugin ã°ã«ãŒãã¯ãããã®ãŸãŸã§ãã1 ã€ã® bundled Plugin ã¬ãŒã³ã«ã¯pnpm test extensions/<id>ã䜿çšããŸãã -
pnpm test:perf:imports: æç€ºçãªãã¡ã€ã«/ãã£ã¬ã¯ããªã¿ãŒã²ããã«ã¯ã¹ã³ãŒããããã¬ãŒã³ã«ãŒãã£ã³ã°ãåŒãç¶ã䜿çšãã€ã€ãVitest import-duration + import-breakdown ã¬ããŒããæå¹ã«ããŸãã -
pnpm test:perf:imports:changed: åã import profiling ã§ãããorigin/main以éã«å€æŽããããã¡ã€ã«ã®ã¿ã察象ã«ããŸãã -
pnpm test:perf:changed:bench -- --ref <git-ref>ã¯ãåãã³ãããæžã¿ git diff ã«ã€ããŠãã«ãŒãã£ã³ã°ããã changed-mode ãã¹ããã€ãã£ã root-project å®è¡ãšæ¯èŒããŠãã³ãããŒã¯ããŸãã -
pnpm test:perf:changed:bench -- --worktreeã¯ãå ã«ã³ãããããã«çŸåšã® worktree 倿Žã»ããããã³ãããŒã¯ããŸãã -
pnpm test:perf:profile:main: Vitest ã¡ã€ã³ã¹ã¬ããã® CPU profile ãæžã蟌ã¿ãŸãïŒ.artifacts/vitest-main-profileïŒã -
pnpm test:perf:profile:runner: unit runner ã® CPU + heap profile ãæžã蟌ã¿ãŸãïŒ.artifacts/vitest-runner-profileïŒã -
pnpm test:perf:groups --full-suite --allow-failures --output .artifacts/test-perf/baseline-before.json: ãã¹ãŠã® full-suite Vitest leaf config ãçŽåã«å®è¡ããã°ã«ãŒãåããã duration ããŒã¿ãš config ããšã® JSON/log ã¢ãŒãã£ãã¡ã¯ããæžã蟌ã¿ãŸããTest Performance Agent ã¯ãslow-test ä¿®æ£ã詊ã¿ãåã® baseline ãšããŠããã䜿çšããŸãã -
pnpm test:perf:groups:compare .artifacts/test-perf/baseline-before.json .artifacts/test-perf/after-agent.json: ããã©ãŒãã³ã¹éèŠã®å€æŽåŸã«ã°ã«ãŒãåã¬ããŒããæ¯èŒããŸãã -
pnpm test:docker:timings <summary.json>㯠Docker all å®è¡åŸã«é ã Docker ã¬ãŒã³ãæ€æ»ããŸããåãã¢ãŒãã£ãã¡ã¯ãããå®äŸ¡ãªå¯Ÿè±¡æå® rerun ã³ãã³ããåºåããã«ã¯pnpm test:docker:rerun <run-id|summary.json|failures.json>ã䜿çšããŸãã -
Gateway integration:
OPENCLAW_TEST_INCLUDE_GATEWAY=1 pnpm testãŸãã¯pnpm test:gatewayã§ opt-in ããŸãã -
pnpm test:e2e: ãªããžã㪠E2E aggregate ãå®è¡ããŸããGateway end-to-end smoke ãã¹ããš Control UI mocked browser E2E ã¬ãŒã³ã§ãã -
pnpm test:e2e:gateway: Gateway end-to-end smoke ãã¹ãïŒmulti-instance WS/HTTP/node pairingïŒãå®è¡ããŸããvitest.e2e.config.tsã§ã¯ adaptive workers ãšãšãã«ãããã©ã«ãã§threads+isolate: falseã§ããOPENCLAW_E2E_WORKERS=<n>ã§èª¿æŽãã詳现ãã°ã«ã¯OPENCLAW_E2E_VERBOSE=1ãèšå®ããŸãã -
pnpm test:live: provider live ãã¹ãïŒminimax/zaiïŒãå®è¡ããŸããskip ãè§£é€ããã«ã¯ API ããŒãšLIVE=1ïŒãŸã㯠provider åºæã®*_LIVE_TEST=1ïŒãå¿ èŠã§ãã -
pnpm test:docker:all: å ±æã©ã€ããã¹ãã€ã¡ãŒãžããã«ãããOpenClaw ã npm tarball ãšããŠäžåºŠã ãããã¯ããçŽ ã® Node/Git ã©ã³ããŒã€ã¡ãŒãžãšããã® tarball ã/appã«ã€ã³ã¹ããŒã«ããæ©èœã€ã¡ãŒãžããã«ããŸãã¯åå©çšããŠãããéã¿ä»ãã¹ã±ãžã¥ãŒã©ãŒãéããŠOPENCLAW_SKIP_DOCKER_BUILD=1ã§ Docker ã¹ã¢ãŒã¯ã¬ãŒã³ãå®è¡ããŸããçŽ ã®ã€ã¡ãŒãž (OPENCLAW_DOCKER_E2E_BARE_IMAGE) ã¯ã€ã³ã¹ããŒã©ãŒãæŽæ°ãPlugin äŸåé¢ä¿ã¬ãŒã³ã«äœ¿çšãããŸãããããã®ã¬ãŒã³ã¯ãã³ããŒããããªããžããªãœãŒã¹ã䜿ã代ããã«ãäºåãã«ãæžã¿ tarball ãããŠã³ãããŸããæ©èœã€ã¡ãŒãž (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ã¯ãDocker ããã«ããŸãã¯å®è¡ããã«ãéžæãããã¬ãŒã³ãã€ã¡ãŒãžçš®å¥ãããã±ãŒãž/ã©ã€ãã€ã¡ãŒãžã®å¿ èŠæ§ãç¶æ ã·ããªãªãèªèšŒæ å ±ãã§ãã¯ã«ã€ããŠãã¹ã±ãžã¥ãŒã©ãŒãææãã CI ãã©ã³ãåºåããŸããOPENCLAW_DOCKER_ALL_PARALLELISM=<n>ã¯ããã»ã¹ã¹ããããå¶åŸ¡ããããã©ã«ã㯠10 ã§ããOPENCLAW_DOCKER_ALL_TAIL_PARALLELISM=<n>ã¯ãããã€ããŒã«ææãªæ«å°ŸããŒã«ãå¶åŸ¡ããããã©ã«ã㯠10 ã§ããéãã¬ãŒã³ã®äžéã¯ããã©ã«ãã§OPENCLAW_DOCKER_ALL_LIVE_LIMIT=9ãOPENCLAW_DOCKER_ALL_NPM_LIMIT=5ã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ã«ãããããã©ã«ãã§ãããã€ããŒããšã«éãã¬ãŒã³ 1 æ¬ã§ãããã倧ããªãã¹ãã§ã¯OPENCLAW_DOCKER_ALL_WEIGHT_LIMITãŸãã¯OPENCLAW_DOCKER_ALL_DOCKER_LIMITã䜿çšããŸããäœäžŠåãã¹ãã§ 1 æ¬ã®ã¬ãŒã³ãæå¹ãªéã¿ãŸãã¯ãªãœãŒã¹äžéãè¶ ããå Žåã§ãã空ã®ããŒã«ããéå§ã§ãã容éãè§£æŸãããŸã§åç¬ã§å®è¡ãããŸããããŒã«ã« Docker ããŒã¢ã³ã®äœæéäžãé¿ãããããã¬ãŒã³éå§ã¯ããã©ã«ãã§ 2 ç§ãã€ãããããŸããOPENCLAW_DOCKER_ALL_START_STAGGER_MS=<ms>ã§äžæžãã§ããŸããã©ã³ããŒã¯ããã©ã«ãã§ Docker ãäºåãã§ãã¯ããå€ã OpenClaw E2E ã³ã³ãããã¯ãªãŒã³ã¢ãããã30 ç§ããšã«ã¢ã¯ãã£ãã¬ãŒã³ã®ã¹ããŒã¿ã¹ãåºåããäºææ§ã®ããã¬ãŒã³éã§ãããã€ã㌠CLI ããŒã«ãã£ãã·ã¥ãå ±æããäžæçãªã©ã€ããããã€ããŒå€±æãããã©ã«ãã§ 1 ååè©Šè¡ (OPENCLAW_DOCKER_ALL_LIVE_RETRIES=<n>) ããåŸç¶å®è¡ã§é·ããã®ããé ã«äžŠã¹ãããã«ã¬ãŒã³æèŠæéã.artifacts/docker-tests/lane-timings.jsonã«ä¿åããŸããDocker ãå®è¡ããã«ã¬ãŒã³ãããã§ã¹ãã衚瀺ããã«ã¯OPENCLAW_DOCKER_ALL_DRY_RUN=1ãã¹ããŒã¿ã¹åºåã調æŽããã«ã¯OPENCLAW_DOCKER_ALL_STATUS_INTERVAL_MS=<ms>ãæèŠæéã®åå©çšãç¡å¹ã«ããã«ã¯OPENCLAW_DOCKER_ALL_TIMINGS=0ã䜿çšããŸããæ±ºå®ç/ããŒã«ã«ã¬ãŒã³ã®ã¿ã«ã¯OPENCLAW_DOCKER_ALL_LIVE_MODE=skipãã©ã€ããããã€ããŒã¬ãŒã³ã®ã¿ã«ã¯OPENCLAW_DOCKER_ALL_LIVE_MODE=onlyã䜿çšããŸããããã±ãŒãžãšã€ãªã¢ã¹ã¯pnpm test:docker:local:allãšpnpm test:docker:live:allã§ããã©ã€ãå°çšã¢ãŒãã§ã¯ãã¡ã€ã³ãšæ«å°Ÿã®ã©ã€ãã¬ãŒã³ãé·ããã®åªå ã®åäžããŒã«ã«çµ±åãããããã€ããŒãã±ããã ClaudeãCodexãGemini ã®äœæ¥ãäžç·ã«è©°ã蟌ããããã«ããŸããOPENCLAW_DOCKER_ALL_FAIL_FAST=0ãèšå®ãããŠããªãéããã©ã³ããŒã¯æåã®å€±æåŸã«æ°ããããŒã«æžã¿ã¬ãŒã³ã®ã¹ã±ãžã¥ãŒãªã³ã°ã忢ããŸãããŸããåã¬ãŒã³ã«ã¯ 120 åã®ãã©ãŒã«ããã¯ã¿ã€ã ã¢ãŠãããããOPENCLAW_DOCKER_ALL_LANE_TIMEOUT_MSã§äžæžãã§ããŸããéžæãããã©ã€ã/æ«å°Ÿã¬ãŒã³ã§ã¯ãããå³ããã¬ãŒã³å¥äžéã䜿çšããŸãã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-snapshot: Chromium ãå©çšãããœãŒã¹ E2E ã³ã³ããããã«ãããçã® CDP ãšåé¢ããã Gateway ãèµ·åããbrowser doctor --deepãå®è¡ããŠãCDP ããŒã«ã¹ãããã·ã§ããã«ãªã³ã¯ URLãã«ãŒãœã«ææ Œãããã¯ãªãã¯å¯èœèŠçŽ ãiframe åç §ããã¬ãŒã ã¡ã¿ããŒã¿ãå«ãŸããããšãæ€èšŒããŸãã -
pnpm test:docker:skill-install: çŽ ã® Docker ã©ã³ããŒã«ããã¯æžã¿ OpenClaw tarball ãã€ã³ã¹ããŒã«ããskills.install.allowUploadedArchivesãç¡å¹åããã©ã€ã ClawHub æ€çŽ¢ããçŸåšã® Skill slug ã解決ããopenclaw skills installãéããŠã€ã³ã¹ããŒã«ããŠãSKILL.mdã.clawhub/origin.jsonã.clawhub/lock.jsonãskills info --jsonãæ€èšŒããŸãã -
CLI ããã¯ãšã³ãã®ã©ã€ã Docker ãããŒãã¯ãããšãã°
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:openwebui: Docker åããã OpenClaw + Open WebUI ãèµ·åããOpen WebUI çµç±ã§ãµã€ã³ã€ã³ãã/api/modelsã確èªããŠããã/api/chat/completionsçµç±ã§å®éã®ãããã·æžã¿ãã£ãããå®è¡ããŸããå©çšå¯èœãªã©ã€ãã¢ãã«ããŒãå¿ èŠã§ãå€éšã® Open WebUI ã€ã¡ãŒãžããã«ããŸãããŸããéåžžã®ãŠããã/E2E ã¹ã€ãŒãã®ããã« CI ã§å®å®ããããšã¯æ³å®ãããŠããŸããã -
pnpm test:docker:mcp-channels: ã·ãŒãæžã¿ Gateway ã³ã³ãããšãopenclaw mcp serveãèµ·åãã 2 ã€ç®ã®ã¯ã©ã€ã¢ã³ãã³ã³ãããéå§ããã«ãŒãã£ã³ã°ãããäŒè©±æ€åºããã©ã³ã¹ã¯ãªããèªã¿åããæ·»ä»ãã¡ã€ã«ã¡ã¿ããŒã¿ãã©ã€ãã€ãã³ããã¥ãŒã®æåãéä¿¡ã«ãŒãã£ã³ã°ãå®éã® stdio ããªããžè¶ãã® Claude ã¹ã¿ã€ã«ã®ãã£ã³ãã«ããã³æš©ééç¥ãæ€èšŒããŸããClaude éç¥ã¢ãµãŒã·ã§ã³ã¯çã® stdio MCP ãã¬ãŒã ãçŽæ¥èªã¿åããããã¹ã¢ãŒã¯ã¯ããªããžãå®éã«åºåããå 容ãåæ ããŸãã -
pnpm test:docker:upgrade-survivor: æ±ããæ§ãŠãŒã¶ãŒãã£ã¯ã¹ãã£äžã«ããã¯æžã¿ OpenClaw tarball ãã€ã³ã¹ããŒã«ããã©ã€ããããã€ããŒããŒããã£ã³ãã«ããŒãªãã§ããã±ãŒãžæŽæ°ãšé察話å doctor ãå®è¡ããŠãããloopback Gateway ãèµ·åãããšãŒãžã§ã³ãããã£ã³ãã«èšå®ãPlugin allowlistãã¯ãŒã¯ã¹ããŒã¹/ã»ãã·ã§ã³ãã¡ã€ã«ãå€ãã¬ã¬ã·ãŒ Plugin äŸåé¢ä¿ç¶æ ãèµ·åãRPC ã¹ããŒã¿ã¹ãåç¶ããããšã確èªããŸãã -
pnpm test:docker:published-upgrade-survivor: ããã©ã«ãã§openclaw@latestãã€ã³ã¹ããŒã«ããã©ã€ããããã€ããŒããŒããã£ã³ãã«ããŒãªãã§çŸå®çãªæ¢åãŠãŒã¶ãŒãã¡ã€ã«ãã·ãŒãããçŒãèŸŒã¿æžã¿ã®openclaw config setã³ãã³ãã¬ã·ãã§ãã®ããŒã¹ã©ã€ã³ãèšå®ãããã®å ¬éæžã¿ã€ã³ã¹ããŒã«ãããã¯æžã¿ OpenClaw tarball ã«æŽæ°ããé察話å doctor ãå®è¡ãã.artifacts/upgrade-survivor/summary.jsonãæžã蟌ãã§ãããloopback Gateway ãèµ·åããèšå®æžã¿ intentãã¯ãŒã¯ã¹ããŒã¹/ã»ãã·ã§ã³ãã¡ã€ã«ãå€ã Plugin èšå®ãšã¬ã¬ã·ãŒäŸåé¢ä¿ç¶æ ãèµ·åã/healthzã/readyzãRPC ã¹ããŒã¿ã¹ãåç¶ããããæ£åžžã«ä¿®åŸ©ãããããšã確èªããŸãã1 ã€ã®ããŒã¹ã©ã€ã³ãäžæžãããã«ã¯OPENCLAW_UPGRADE_SURVIVOR_BASELINE_SPECã䜿çšããopenclaw@2026.5.2 openclaw@2026.4.23 openclaw@2026.4.15ã®ãããªæ£ç¢ºãªããŒã«ã«ãããªã¯ã¹ãå±éããã«ã¯OPENCLAW_UPGRADE_SURVIVOR_BASELINE_SPECSã䜿çšããã·ããªãªãã£ã¯ã¹ãã£ã远å ããã«ã¯OPENCLAW_UPGRADE_SURVIVOR_SCENARIOS=reported-issuesã䜿çšããŸããreported-issues ã»ããã«ã¯ãèšå®æžã¿å€éš OpenClaw Plugin ãã¢ããã°ã¬ãŒãäžã«èªåçã«ã€ã³ã¹ããŒã«ãããããšãæ€èšŒããconfigured-plugin-installsãšããœãŒã¹å°çš Plugin ã·ã£ããŠãèµ·åãå£ããªãããã«ããstale-source-plugin-shadowãå«ãŸããŸããPackage Acceptance ã¯ãããããpublished_upgrade_survivor_baselineãpublished_upgrade_survivor_baselinesãpublished_upgrade_survivor_scenariosãšããŠå ¬éããæ£ç¢ºãªããã±ãŒãž spec ã Docker ã¬ãŒã³ãžæž¡ãåã«ãlast-stable-4ãall-since-2026.4.23ã®ãããªã¡ã¿ããŒã¹ã©ã€ã³ããŒã¯ã³ã解決ããŸãã -
pnpm test:docker:update-migration: ã¯ãªãŒã³ã¢ãããéãplugin-deps-cleanupã·ããªãªã§å ¬éæžã¿ã¢ããã°ã¬ãŒã survivor ããŒãã¹ãå®è¡ããããã©ã«ãã§openclaw@2026.4.23ããéå§ããŸããå¥åã®Update Migrationã¯ãŒã¯ãããŒã¯ããã®ã¬ãŒã³ãbaselines=all-since-2026.4.23ã§å±éãã.23以éã®ãã¹ãŠã®å®å®å ¬éæžã¿ããã±ãŒãžãåè£ãžæŽæ°ãããFull Release CI ã®å€ã§èšå®æžã¿ Plugin äŸåé¢ä¿ã®ã¯ãªãŒã³ã¢ããã蚌æããããã«ããŸãã -
pnpm test:docker:plugins: ããŒã«ã«ãã¹ãfile:ãå·»ãäžããããäŸåé¢ä¿ãæã€ npm registry ããã±ãŒãžãgit ã®ç§»å refãClawHub ãã£ã¯ã¹ãã£ãããŒã±ãããã¬ã€ã¹æŽæ°ãClaude ãã³ãã«ã®æå¹å/æ€æ»ã«ã€ããŠãã€ã³ã¹ããŒã«/æŽæ°ã¹ã¢ãŒã¯ãå®è¡ããŸãã
ããŒã«ã« PR ã²ãŒã
ããŒã«ã«ã® PR land/gate ãã§ãã¯ã§ã¯ã次ãå®è¡ããŸãã
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
ã¢ãã«ã¬ã€ãã³ã·ãã³ãïŒããŒã«ã«ããŒïŒ
ã¹ã¯ãªãã: scripts/bench-model.ts
äœ¿çšæ¹æ³:
pnpm tsx scripts/bench-model.ts --runs 10- ä»»æã® env:
MINIMAX_API_KEY,MINIMAX_BASE_URL,MINIMAX_MODEL,ANTHROPIC_API_KEY - ããã©ã«ãããã³ãã: ãReply with a single word: ok. No punctuation or extra text.ã
ååã®å®è¡ïŒ2025-12-31ã20 åïŒ:
- minimax äžå€®å€ 1279msïŒæå° 1114ãæå€§ 2431ïŒ
- opus äžå€®å€ 2454msïŒæå° 1224ãæå€§ 3170ïŒ
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.jsonã«æžã蟌ã¿ãŸãpnpm test:startup:bench:saveã¯ãruns=5ãšwarmup=1ã䜿çšããŠããã«ã¹ã€ãŒãã®ã¢ãŒãã£ãã¡ã¯ãã.artifacts/cli-startup-bench-all.jsonã«æžã蟌ã¿ãŸãpnpm test:startup:bench:updateã¯ãruns=5ãšwarmup=1ã䜿çšããŠããã§ãã¯ã€ã³æžã¿ã®ããŒã¹ã©ã€ã³ãã£ã¯ã¹ãã£ãtest/fixtures/cli-startup-bench.jsonã«æŽæ°ããŸã
ãã§ãã¯ã€ã³æžã¿ãã£ã¯ã¹ãã£:
test/fixtures/cli-startup-bench.jsonpnpm test:startup:bench:updateã§æŽæ°pnpm test:startup:bench:checkã§çŸåšã®çµæããã£ã¯ã¹ãã£ãšæ¯èŒ
Gateway èµ·åãã³ã
ã¹ã¯ãªãã: scripts/bench-gateway-startup.ts
ãã³ãããŒã¯ã¯ããã©ã«ãã§ dist/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:
default: éåžžã® Gateway èµ·åãskipChannels: ãã£ã³ãã«èµ·åãã¹ããããã Gateway èµ·åãoneInternalHook: èšå®æžã¿ã®å éšãã㯠1 ã€ãallInternalHooks: ãã¹ãŠã®å éšããã¯ãfiftyPlugins: 50 åã®ãããã§ã¹ã PluginãfiftyStartupLazyPlugins: 50 åã® startup-lazy ãããã§ã¹ã Pluginã
åºåã«ã¯ãæåã®ããã»ã¹åºåã/healthzã/readyzãHTTP listen ãã°æå»ãGateway ready ãã°æå»ãCPU æéãCPU ã³ã¢æ¯çãæå€§ RSSãããŒããèµ·åãã¬ãŒã¹ã¡ããªã¯ã¹ãã€ãã³ãã«ãŒãé
å»¶ãPlugin lookup-table 詳现ã¡ããªã¯ã¹ãå«ãŸããŸãããã®ã¹ã¯ãªããã¯ãå Gateway ç°å¢ã§ OPENCLAW_GATEWAY_STARTUP_TRACE=1 ãæå¹ã«ããŸãã
/healthz ã¯ã©ã€ããã¹ãšããŠèªã¿åããŸããHTTP ãµãŒããŒãå¿çã§ããŸãã/readyz ã¯äœ¿çšå¯èœãª readiness ãšããŠèªã¿åããŸããèµ·å Plugin ãµã€ãã«ãŒããã£ã³ãã«ãready-critical 㪠post-attach äœæ¥ãå®å®ããŠããŸããGateway èµ·åããã¯ã¯éåæã«ãã£ã¹ããããããreadiness ä¿èšŒã®äžéšã§ã¯ãããŸãããReady ãã°æå»ã¯ Gateway å
éšã® ready ãã°ã¿ã€ã ã¹ã¿ã³ãã§ããããã»ã¹åŽã®åž°å±åæã«ã¯æçšã§ãããå€éšã® /readyz ãããŒãã®ä»£æ¿ã«ã¯ãªããŸããã
倿Žãæ¯èŒããå Žå㯠JSON åºåãŸã㯠--output ã䜿çšããŸãããã¬ãŒã¹åºåãããã§ãŒãºã¿ã€ãã³ã°ã ãã§ã¯èª¬æã§ããªã importãcompileããŸã㯠CPU-bound ãªäœæ¥ã瀺ããå Žåã«ã®ã¿ --cpu-prof-dir ã䜿çšããŸãããœãŒã¹ã©ã³ããŒã®çµæãšãã«ãæžã¿ dist/entry.js ã®çµæãåãããŒã¹ã©ã€ã³ãšããŠæ¯èŒããªãã§ãã ããã
Gateway åèµ·åãã³ã
ã¹ã¯ãªãã: scripts/bench-gateway-restart.ts
åèµ·åãã³ãããŒã¯ã¯ macOS ãš Linux ã®ã¿ã§ãµããŒããããŸããããã»ã¹å åèµ·åã«ã¯ SIGUSR1 ã䜿çšããWindows ã§ã¯å³åº§ã«å€±æããŸãã
ãã³ãããŒã¯ã¯ããã©ã«ãã§ dist/entry.js ã«ãããã«ãæžã¿ CLI ãšã³ããªã䜿çšããŸããpackage-script ã³ãã³ãã䜿çšããåã«
pnpm build ãå®è¡ããŠãã ããã代ããã«ãœãŒã¹ã©ã³ããŒã枬å®ããã«ã¯ã--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
ã±ãŒã¹ ID:
skipChannels: ãã£ã³ãã«ãã¹ãããããåèµ·åãskipChannelsAcpxProbe: ãã£ã³ãã«ãã¹ãããããACPX èµ·åãããŒãããªã³ã«ããåèµ·åãskipChannelsNoAcpxProbe: ãã£ã³ãã«ãã¹ãããããACPX èµ·åãããŒãããªãã«ããåèµ·åãdefault: éåžžã®åèµ·åãfiftyPlugins: 50 åã®ãããã§ã¹ã Plugin ã䜿çšããåèµ·åã
åºåã«ã¯ã次㮠/healthzãæ¬¡ã® /readyzãããŠã³ã¿ã€ã ãrestart ready ã¿ã€ãã³ã°ãCPUãRSSã眮æããã»ã¹ã®èµ·åãã¬ãŒã¹ã¡ããªã¯ã¹ãã·ã°ãã«åŠçãactive-work drainãclose ãã§ãŒãºã次ã®èµ·åãready ã¿ã€ãã³ã°ãã¡ã¢ãªã¹ãããã·ã§ããã®åèµ·åãã¬ãŒã¹ã¡ããªã¯ã¹ãå«ãŸããŸãããã®ã¹ã¯ãªããã¯ãå Gateway ç°å¢ã§
OPENCLAW_GATEWAY_STARTUP_TRACE=1 ãš OPENCLAW_GATEWAY_RESTART_TRACE=1 ãæå¹ã«ããŸãã
倿Žãåèµ·åã·ã°ããªã³ã°ãclose ãã³ãã©ãŒãstartup-after-restartããµã€ãã«ãŒã·ã£ããããŠã³ããµãŒãã¹ãã³ããªãããŸãã¯åèµ·ååŸã® readiness ã«è§Šããå Žåã¯ããã®ãã³ãããŒã¯ã䜿çšããŸããGateway ã®ä»çµã¿ããã£ã³ãã«èµ·åããåãåããå Žåã¯ãskipChannels ããå§ããŸããdefault ãŸã㯠Plugin-heavy ãªã±ãŒã¹ã¯ãçãã±ãŒã¹ã§åèµ·åãã¹ã説æã§ããŠãã䜿çšããŸãã
ãã¬ãŒã¹ã¡ããªã¯ã¹ã¯åž°å±ã®æãããã§ãããå€å®ã§ã¯ãããŸãããåèµ·åã®å€æŽã¯ãè€æ°ãµã³ãã«ã察å¿ãã owner spanã/healthz ãš /readyz ã®æåããŠãŒã¶ãŒã«èŠããåèµ·åå¥çŽãã倿ããå¿
èŠããããŸãã
ãªã³ããŒãã£ã³ã° E2EïŒDockerïŒ
Docker ã¯ä»»æã§ããããã¯ã³ã³ããåããããªã³ããŒãã£ã³ã°ã¹ã¢ãŒã¯ãã¹ãã«ã®ã¿å¿ èŠã§ãã
ã¯ãªãŒã³ãª Linux ã³ã³ããã§ã®å®å šãªã³ãŒã«ãã¹ã¿ãŒããããŒ:
scripts/e2e/onboard-docker.shãã®ã¹ã¯ãªããã¯ãpseudo-tty çµç±ã§å¯Ÿè©±åãŠã£ã¶ãŒããæäœããconfig/workspace/session ãã¡ã€ã«ãæ€èšŒããåŸãGateway ãèµ·åã㊠openclaw health ãå®è¡ããŸãã
QR ã€ã³ããŒãã¹ã¢ãŒã¯ïŒDockerïŒ
ã¡ã³ããã³ã¹ãããŠãã QR ã©ã³ã¿ã€ã ãã«ããŒãããµããŒã察象㮠Docker Node ã©ã³ã¿ã€ã ïŒNode 24 ããã©ã«ããNode 22 äºæïŒã§ããŒããããããšã確èªããŸãã
pnpm test:docker:qr