{
  "title": "Tests",
  "content": "* Full testing kit (suites, live, Docker): [Testing](/testing)\n\n* `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.\n\n* `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.\n\n* `pnpm test:e2e`: Runs gateway end-to-end smoke tests (multi-instance WS/HTTP/node pairing).\n\n* `pnpm test:live`: Runs provider live tests (minimax/zai). Requires API keys and `LIVE=1` (or provider-specific `*_LIVE_TEST=1`) to unskip.\n\n## Model latency bench (local keys)\n\nScript: [`scripts/bench-model.ts`](https://github.com/openclaw/openclaw/blob/main/scripts/bench-model.ts)\n\n* `source ~/.profile && pnpm tsx scripts/bench-model.ts --runs 10`\n* Optional env: `MINIMAX_API_KEY`, `MINIMAX_BASE_URL`, `MINIMAX_MODEL`, `ANTHROPIC_API_KEY`\n* Default prompt: “Reply with a single word: ok. No punctuation or extra text.”\n\nLast run (2025-12-31, 20 runs):\n\n* minimax median 1279ms (min 1114, max 2431)\n* opus median 2454ms (min 1224, max 3170)\n\n## Onboarding E2E (Docker)\n\nDocker is optional; this is only needed for containerized onboarding smoke tests.\n\nFull cold-start flow in a clean Linux container:\n\nThis script drives the interactive wizard via a pseudo-tty, verifies config/workspace/session files, then starts the gateway and runs `openclaw health`.\n\n## QR import smoke (Docker)\n\nEnsures `qrcode-terminal` loads under Node 22+ in Docker:",
  "code_samples": [
    {
      "code": "This script drives the interactive wizard via a pseudo-tty, verifies config/workspace/session files, then starts the gateway and runs `openclaw health`.\n\n## QR import smoke (Docker)\n\nEnsures `qrcode-terminal` loads under Node 22+ in Docker:",
      "language": "unknown"
    }
  ],
  "headings": [
    {
      "level": "h2",
      "text": "Model latency bench (local keys)",
      "id": "model-latency-bench-(local-keys)"
    },
    {
      "level": "h2",
      "text": "Onboarding E2E (Docker)",
      "id": "onboarding-e2e-(docker)"
    },
    {
      "level": "h2",
      "text": "QR import smoke (Docker)",
      "id": "qr-import-smoke-(docker)"
    }
  ],
  "url": "llms-txt#tests",
  "links": []
}