Files
bot/docs/reference/test.md
zeekay 4bdc9ee3e4 chore: rebrand openclaw → hanzo-bot for bridge merge
Comprehensive rename of all openclaw references to hanzo-bot equivalents:
- Package: openclaw → @hanzo/bot
- Binary: openclaw → hanzo-bot
- Types: OpenClaw* → Bot*
- Env vars: OPENCLAW_* → BOT_*
- Android: ai.openclaw.android → ai.hanzo.bot.android
- iOS/macOS: ai.openclaw.* → ai.hanzo.*
- Swift modules: OpenClaw* → Bot*
- Plugins: openclaw.plugin.json → bot.plugin.json
- Paths: .openclaw/ → .hanzo/bot/
- URLs: github.com/openclaw → github.com/hanzoai
2026-02-26 22:36:01 -08:00

2.7 KiB
Raw Permalink Blame History

summary, read_when, title
summary read_when title
How to run tests locally (vitest) and when to use force/coverage modes
Running or fixing tests
Tests

Tests

  • Full testing kit (suites, live, Docker): Testing

  • pnpm test:force: Kills any lingering gateway process holding the default control port, then runs the full Vitest suite with an isolated gateway port so server tests don’t collide with a running instance. Use this when a prior gateway run left port 18789 occupied.

  • pnpm test:coverage: Runs the unit suite with V8 coverage (via vitest.unit.config.ts). Global thresholds are 70% lines/branches/functions/statements. Coverage excludes integration-heavy entrypoints (CLI wiring, gateway/telegram bridges, webchat static server) to keep the target focused on unit-testable logic.

  • pnpm test on Node 24+: Bot auto-disables Vitest vmForks and uses forks to avoid ERR_VM_MODULE_LINK_FAILURE / module is already linked. You can force behavior with BOT_TEST_VM_FORKS=0|1.

  • pnpm test:e2e: Runs gateway end-to-end smoke tests (multi-instance WS/HTTP/node pairing). Defaults to vmForks + adaptive workers in vitest.e2e.config.ts; tune with BOT_E2E_WORKERS=<n> and set BOT_E2E_VERBOSE=1 for verbose logs.

  • pnpm test:live: Runs provider live tests (minimax/zai). Requires API keys and LIVE=1 (or provider-specific *_LIVE_TEST=1) to unskip.

Local PR gate

For local PR land/gate checks, run:

  • pnpm check
  • pnpm build
  • pnpm test
  • pnpm check:docs

If pnpm test flakes on a loaded host, rerun once before treating it as a regression, then isolate with pnpm vitest run <path/to/test>. For memory-constrained hosts, use:

  • BOT_TEST_PROFILE=low BOT_TEST_SERIAL_GATEWAY=1 pnpm test

Model latency bench (local keys)

Script: scripts/bench-model.ts

Usage:

  • source ~/.profile && pnpm tsx scripts/bench-model.ts --runs 10
  • Optional env: MINIMAX_API_KEY, MINIMAX_BASE_URL, MINIMAX_MODEL, ANTHROPIC_API_KEY
  • Default prompt: “Reply with a single word: ok. No punctuation or extra text.”

Last run (2025-12-31, 20 runs):

  • minimax median 1279ms (min 1114, max 2431)
  • opus median 2454ms (min 1224, max 3170)

Onboarding E2E (Docker)

Docker is optional; this is only needed for containerized onboarding smoke tests.

Full cold-start flow in a clean Linux container:

scripts/e2e/onboard-docker.sh

This script drives the interactive wizard via a pseudo-tty, verifies config/workspace/session files, then starts the gateway and runs hanzo-bot health.

QR import smoke (Docker)

Ensures qrcode-terminal loads under Node 22+ in Docker:

pnpm test:docker:qr