2025-12-13 13:25:49 +00:00
---
summary: "How to run tests locally (vitest) and when to use force/coverage modes"
read_when:
- Running or fixing tests
---
# Tests
2025-12-10 01:00:29 +00:00
2026-01-10 01:15:42 +00:00
- Full testing kit (suites, live, Docker): [Testing ](/testing )
2025-12-11 15:17:40 +00:00
- `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.
2025-12-13 13:25:49 +00:00
- `pnpm test:coverage` : Runs Vitest with V8 coverage. 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.
2026-01-03 13:37:46 +01:00
- `pnpm test:e2e` : Runs gateway end-to-end smoke tests (multi-instance WS/HTTP/node pairing).
2026-01-08 02:00:11 +01:00
- `pnpm test:live` : Runs provider live tests (minimax/zai). Requires API keys and `LIVE=1` (or provider-specific `*_LIVE_TEST=1` ) to unskip.
2025-12-31 22:39:42 +01:00
## Model latency bench (local keys)
2026-01-30 03:15:10 +01:00
Script: [`scripts/bench-model.ts` ](https://github.com/openclaw/openclaw/blob/main/scripts/bench-model.ts )
2025-12-31 22:39:42 +01:00
Usage:
2026-01-06 23:48:22 +00:00
- `source ~/.profile && pnpm tsx scripts/bench-model.ts --runs 10`
2025-12-31 22:39:42 +01:00
- 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)
2026-01-01 18:01:42 +01:00
## Onboarding E2E (Docker)
2026-01-02 20:58:50 +01:00
Docker is optional; this is only needed for containerized onboarding smoke tests.
2026-01-01 18:01:42 +01:00
Full cold-start flow in a clean Linux container:
```bash
scripts/e2e/onboard-docker.sh
```
2026-01-01 19:14:14 +01:00
2026-01-30 03:15:10 +01:00
This script drives the interactive wizard via a pseudo-tty, verifies config/workspace/session files, then starts the gateway and runs `openclaw health` .
2026-01-06 02:22:20 +01:00
## QR import smoke (Docker)
Ensures `qrcode-terminal` loads under Node 22+ in Docker:
```bash
pnpm test:docker:qr
```