Tests
- Vollständiges Test-Kit (Suites, Live, Docker): Testing
-
pnpm test:force: Beendet alle noch laufenden Gateway-Prozesse, die den Standard-Control-Port belegen, und führt dann die vollständige Vitest-Suite mit einem isolierten Gateway-Port aus, damit Server-Tests nicht mit einer laufenden Instanz kollidieren. Verwenden Sie dies, wenn ein vorheriger Gateway-Lauf Port 18789 belegt zurückgelassen hat. -
pnpm test:coverage: Führt die Unit-Suite mit V8-Coverage aus (übervitest.unit.config.ts). Globale Schwellenwerte sind 70 % für Zeilen/Branches/Funktionen/Statements. Coverage schließt integrationslastige Einstiegspunkte aus (CLI-Wiring, Gateway-/Telegram-Bridges, statischer Server für Webchat), damit das Ziel auf unit-testbare Logik fokussiert bleibt. -
pnpm test:coverage:changed: Führt Unit-Coverage nur für Dateien aus, die seitorigin/maingeändert wurden. -
pnpm test:changed: führt die native Vitest-Projektkonfiguration mit--changed origin/mainaus. Die Basiskonfiguration behandelt die Projekt-/Konfigurationsdateien alsforceRerunTriggers, sodass Änderungen am Wiring bei Bedarf weiterhin breit neu ausgeführt werden. -
pnpm test: führt die native Root-Projektkonfiguration von Vitest direkt aus. Dateifilter funktionieren nativ über die konfigurierten Projekte hinweg. -
Die Basis-Vitest-Konfiguration verwendet jetzt standardmäßig
pool: "threads"undisolate: false, wobei der gemeinsame nicht isolierte Runner über die Repo-Konfigurationen hinweg aktiviert ist. -
pnpm test:channelsführtvitest.channels.config.tsaus. -
pnpm test:extensionsführtvitest.extensions.config.tsaus. -
pnpm test:extensions: führt Erweiterungs-/Plugin-Suites aus. -
pnpm test:perf:imports: aktiviert Berichte zu Vitest-Importdauer und Importaufschlüsselung für den nativen Root-Projektlauf. -
pnpm test:perf:imports:changed: dasselbe Import-Profiling, aber nur für Dateien, die seitorigin/maingeändert wurden. -
pnpm test:perf:profile:main: schreibt ein CPU-Profil für den Vitest-Hauptthread (.artifacts/vitest-main-profile). -
pnpm test:perf:profile:runner: schreibt CPU- und Heap-Profile für den Unit-Runner (.artifacts/vitest-runner-profile). -
Gateway-Integration: Opt-in über
OPENCLAW_TEST_INCLUDE_GATEWAY=1 pnpm testoderpnpm test:gateway. -
pnpm test:e2e: Führt Gateway-End-to-End-Smoke-Tests aus (Multi-Instance-WS/HTTP/Node-Pairing). Verwendet standardmäßigthreads+isolate: falsemit adaptiven Workern invitest.e2e.config.ts; anpassbar mitOPENCLAW_E2E_WORKERS=<n>undOPENCLAW_E2E_VERBOSE=1für ausführliche Logs. -
pnpm test:live: Führt Live-Tests für Provider aus (minimax/zai). Erfordert API-Schlüssel undLIVE=1(oder providerspezifisch*_LIVE_TEST=1), um sie nicht zu überspringen. -
pnpm test:docker:openwebui: Startet Dockerisiertes OpenClaw + Open WebUI, meldet sich über Open WebUI an, prüft/api/modelsund führt dann einen echten proxied Chat über/api/chat/completionsaus. Erfordert einen nutzbaren Live-Modellschlüssel (zum Beispiel OpenAI in~/.profile), zieht ein externes Open WebUI-Image und ist nicht dafür gedacht, CI-stabil wie die normalen Unit-/E2E-Suites zu sein. -
pnpm test:docker:mcp-channels: Startet einen vorbefüllten Gateway-Container und einen zweiten Client-Container, deropenclaw mcp serveausführt, und überprüft dann das geroutete Erkennen von Unterhaltungen, das Lesen von Transkripten, Metadaten von Anhängen, das Verhalten der Live-Event-Queue, ausgehendes Send-Routing und Claude-artige Kanal- und Berechtigungsbenachrichtigungen über die echte stdio-Bridge. Die Claude-Benachrichtigungsprüfung liest die rohen stdio-MCP-Frames direkt, sodass der Smoke-Test widerspiegelt, was die Bridge tatsächlich ausgibt.
Lokales PR-Gate
Führen Sie für lokale PR-Land/Gate-Prüfungen Folgendes aus:pnpm checkpnpm buildpnpm testpnpm check:docs
pnpm test auf einem ausgelasteten Host flakey ist, führen Sie es einmal erneut aus, bevor Sie es als Regression behandeln, und isolieren Sie dann mit pnpm test <path/to/test>. Für Hosts mit begrenztem Speicher verwenden Sie:
OPENCLAW_VITEST_MAX_WORKERS=1 pnpm testOPENCLAW_VITEST_FS_MODULE_CACHE_PATH=/tmp/openclaw-vitest-cache pnpm test:changed
Modell-Latenz-Benchmark (lokale Schlüssel)
Skript:scripts/bench-model.ts
Verwendung:
source ~/.profile && pnpm tsx scripts/bench-model.ts --runs 10- Optionale Umgebungsvariablen:
MINIMAX_API_KEY,MINIMAX_BASE_URL,MINIMAX_MODEL,ANTHROPIC_API_KEY - Standard-Prompt: „Antworten Sie mit einem einzelnen Wort: ok. Keine Satzzeichen oder zusätzlicher Text.“
- minimax Median 1279 ms (min. 1114, max. 2431)
- opus Median 2454 ms (min. 1224, max. 3170)
CLI-Startup-Benchmark
Skript:scripts/bench-cli-startup.ts
Verwendung:
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 --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,agents list --json,gateway status,gateway status --json,gateway health --json,config get gateway.portall: beide Presets
sampleCount, Durchschnitt, p50, p95, min./max., Exit-Code-/Signalverteilung und Zusammenfassungen des maximalen RSS für jeden Befehl. Optionales --cpu-prof-dir / --heap-prof-dir schreibt V8-Profile pro Lauf, sodass Timing und Profilerfassung denselben Harness verwenden.
Konventionen für gespeicherte Ausgaben:
pnpm test:startup:bench:smokeschreibt das gezielte Smoke-Artefakt nach.artifacts/cli-startup-bench-smoke.jsonpnpm test:startup:bench:saveschreibt das Artefakt der vollständigen Suite nach.artifacts/cli-startup-bench-all.jsonmitruns=5undwarmup=1pnpm test:startup:bench:updateaktualisiert die eingecheckte Baseline-Fixture untertest/fixtures/cli-startup-bench.jsonmitruns=5undwarmup=1
test/fixtures/cli-startup-bench.json- Aktualisieren mit
pnpm test:startup:bench:update - Aktuelle Ergebnisse mit der Fixture vergleichen über
pnpm test:startup:bench:check
Onboarding E2E (Docker)
Docker ist optional; dies wird nur für containerisierte Onboarding-Smoke-Tests benötigt. Vollständiger Cold-Start-Ablauf in einem sauberen Linux-Container:openclaw health aus.
QR-Import-Smoketest (Docker)
Stellt sicher, dassqrcode-terminal unter den unterstützten Docker-Node-Laufzeiten geladen wird (Node 24 standardmäßig, Node 22 kompatibel):