테스트
- 전체 테스트 키트(suites, live, Docker)는 테스트를 참고하세요.
-
pnpm test:force: 기본 control port를 점유한 남아 있는 gateway process를 종료한 뒤, 격리된 gateway port로 전체 Vitest suite를 실행합니다. 이전 gateway run 때문에 port 18789가 점유된 경우에 사용하세요. -
pnpm test:coverage: V8 coverage와 함께 unit suite를 실행합니다 (vitest.unit.config.ts사용). 전역 threshold는 lines/branches/functions/statements 70%입니다. coverage는 unit-testable logic에 집중할 수 있도록 integration-heavy entrypoints(CLI wiring, gateway/telegram bridges, webchat static server)를 제외합니다. -
Node 24+에서
pnpm test: OpenClaw는ERR_VM_MODULE_LINK_FAILURE/module is already linked를 피하기 위해 VitestvmForks를 자동으로 비활성화하고forks를 사용합니다.OPENCLAW_TEST_VM_FORKS=0|1로 동작을 강제할 수 있습니다. -
pnpm test: 빠른 로컬 피드백을 위해 fast core unit lane을 기본으로 실행합니다. -
pnpm test:channels: channel-heavy suites를 실행합니다. -
pnpm test:extensions: extension/plugin suites를 실행합니다. -
Gateway integration:
OPENCLAW_TEST_INCLUDE_GATEWAY=1 pnpm test또는pnpm test:gateway로 opt-in합니다. -
pnpm test:e2e: gateway end-to-end smoke tests(multi-instance WS/HTTP/node pairing)를 실행합니다. 기본값은vitest.e2e.config.ts의vmForks+ adaptive workers이며,OPENCLAW_E2E_WORKERS=<n>으로 조정하고 자세한 로그가 필요하면OPENCLAW_E2E_VERBOSE=1을 설정하세요. -
pnpm test:live: provider live tests(minimax/zai)를 실행합니다. API keys와LIVE=1(또는 provider별*_LIVE_TEST=1)이 있어야 skip되지 않습니다.
로컬 PR 게이트
로컬 PR gate 점검에는 다음을 실행하세요.pnpm checkpnpm buildpnpm testpnpm check:docs
pnpm test가 부하가 큰 host에서 flaky하게 실패하면 회귀로 간주하기 전에 한 번 더 실행한 뒤, pnpm vitest run <path/to/test>로 분리해서 확인하세요. 메모리가 제한된 host에서는 다음을 사용하세요.
OPENCLAW_TEST_PROFILE=low OPENCLAW_TEST_SERIAL_GATEWAY=1 pnpm test
모델 지연 시간 벤치마크 (로컬 키)
스크립트:scripts/bench-model.ts
사용법:
source ~/.profile && pnpm tsx scripts/bench-model.ts --runs 10- 선택적 environment variables:
MINIMAX_API_KEY,MINIMAX_BASE_URL,MINIMAX_MODEL,ANTHROPIC_API_KEY - 기본 프롬프트: “한 단어로만 답하세요: ok. 구두점이나 추가 텍스트는 넣지 마세요.”
- minimax median 1279ms (최소 1114, 최대 2431)
- opus median 2454ms (최소 1224, 최대 3170)
CLI 시작 벤치마크
스크립트:scripts/bench-cli-startup.ts
사용법:
pnpm tsx scripts/bench-cli-startup.tspnpm tsx scripts/bench-cli-startup.ts --runs 12pnpm tsx scripts/bench-cli-startup.ts --entry dist/entry.js --timeout-ms 45000
--version--helphealth --jsonstatus --jsonstatus
온보딩 E2E (Docker)
Docker는 선택 사항이며, containerized onboarding smoke tests에만 필요합니다. 깨끗한 Linux 컨테이너에서의 전체 콜드 스타트 흐름:openclaw health를 실행합니다.
QR import smoke (Docker)
Docker의 Node 22+에서qrcode-terminal이 로드되는지 확인합니다.