Tests
- Kit complet de tests (suites, live, Docker) : Testing
-
pnpm test:force: tue tout processus de passerelle persistant qui retient le port de contrôle par défaut, puis exécute la suite Vitest complète avec un port de passerelle isolé afin que les tests serveur n’entrent pas en collision avec une instance en cours d’exécution. Utilisez cette commande lorsqu’une précédente exécution de la passerelle a laissé le port 18789 occupé. -
pnpm test:coverage: exécute la suite unitaire avec couverture V8 (viavitest.unit.config.ts). Les seuils globaux sont de 70 % pour les lignes/branches/fonctions/instructions. La couverture exclut les points d’entrée riches en intégration (câblage CLI, bridges gateway/telegram, serveur statique webchat) afin de garder la cible centrée sur une logique testable unitairement. -
pnpm test:coverage:changed: exécute la couverture unitaire uniquement pour les fichiers modifiés depuisorigin/main. -
pnpm test:changed: exécute la configuration native des projets Vitest avec--changed origin/main. La configuration de base traite les fichiers de projets/configuration comme desforceRerunTriggers, de sorte que les changements de câblage relancent toujours largement quand nécessaire. -
pnpm test: exécute directement la configuration native des projets racine Vitest. Les filtres de fichiers fonctionnent nativement sur les projets configurés. -
La configuration Vitest de base utilise désormais par défaut
pool: "threads"etisolate: false, avec le runner partagé non isolé activé dans toute la configuration du dépôt. -
pnpm test:channelsexécutevitest.channels.config.ts. -
pnpm test:extensionsexécutevitest.extensions.config.ts. -
pnpm test:extensions: exécute les suites extension/plugin. -
pnpm test:perf:imports: active le rapport de durée des imports + détail des imports de Vitest pour l’exécution native des projets racine. -
pnpm test:perf:imports:changed: même profilage d’imports, mais uniquement pour les fichiers modifiés depuisorigin/main. -
pnpm test:perf:profile:main: écrit un profil CPU pour le thread principal Vitest (.artifacts/vitest-main-profile). -
pnpm test:perf:profile:runner: écrit des profils CPU + heap pour le runner unitaire (.artifacts/vitest-runner-profile). -
Intégration de la passerelle : opt-in via
OPENCLAW_TEST_INCLUDE_GATEWAY=1 pnpm testoupnpm test:gateway. -
pnpm test:e2e: exécute les tests smoke end-to-end de la passerelle (pairage WS/HTTP/nœud multi-instances). Utilise par défautthreads+isolate: falseavec workers adaptatifs dansvitest.e2e.config.ts; ajustez avecOPENCLAW_E2E_WORKERS=<n>et définissezOPENCLAW_E2E_VERBOSE=1pour des journaux verbeux. -
pnpm test:live: exécute les tests live des fournisseurs (minimax/zai). Nécessite des clés API etLIVE=1(ou*_LIVE_TEST=1spécifique au fournisseur) pour retirer le skip. -
pnpm test:docker:openwebui: démarre OpenClaw + Open WebUI dans Docker, se connecte via Open WebUI, vérifie/api/models, puis exécute un vrai chat proxifié via/api/chat/completions. Nécessite une clé live de modèle utilisable (par exemple OpenAI dans~/.profile), télécharge une image externe Open WebUI, et n’est pas censé être aussi stable en CI que les suites unitaires/e2e normales. -
pnpm test:docker:mcp-channels: démarre un conteneur Gateway amorcé et un second conteneur client qui lanceopenclaw mcp serve, puis vérifie la découverte des conversations routées, les lectures de transcription, les métadonnées de pièces jointes, le comportement de file d’événements en direct, le routage des envois sortants, et les notifications de type Claude sur les canaux + autorisations via le vrai bridge stdio. L’assertion de notification Claude lit directement les trames stdio MCP brutes afin que le smoke reflète ce que le bridge émet réellement.
Porte locale de PR
Pour les vérifications locales de PR avant atterrissage/validation, exécutez :pnpm checkpnpm buildpnpm testpnpm check:docs
pnpm test est flaky sur un hôte chargé, relancez une fois avant de considérer cela comme une régression, puis isolez avec pnpm test <path/to/test>. Pour les hôtes à mémoire contrainte, utilisez :
OPENCLAW_VITEST_MAX_WORKERS=1 pnpm testOPENCLAW_VITEST_FS_MODULE_CACHE_PATH=/tmp/openclaw-vitest-cache pnpm test:changed
Bench de latence modèle (clés locales)
Script :scripts/bench-model.ts
Utilisation :
source ~/.profile && pnpm tsx scripts/bench-model.ts --runs 10- Env facultatif :
MINIMAX_API_KEY,MINIMAX_BASE_URL,MINIMAX_MODEL,ANTHROPIC_API_KEY - Invite par défaut : « Reply with a single word: ok. No punctuation or extra text. »
- minimax médiane 1279ms (min 1114, max 2431)
- opus médiane 2454ms (min 1224, max 3170)
Bench de démarrage CLI
Script :scripts/bench-cli-startup.ts
Utilisation :
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: les deux préréglages
sampleCount, moyenne, p50, p95, min/max, distribution code de sortie/signal, et résumés max RSS pour chaque commande. Les options --cpu-prof-dir / --heap-prof-dir écrivent des profils V8 par exécution afin que le chronométrage et la capture de profil utilisent le même harnais.
Conventions de sortie enregistrée :
pnpm test:startup:bench:smokeécrit l’artefact smoke ciblé dans.artifacts/cli-startup-bench-smoke.jsonpnpm test:startup:bench:saveécrit l’artefact de la suite complète dans.artifacts/cli-startup-bench-all.jsonavecruns=5etwarmup=1pnpm test:startup:bench:updateactualise la fixture de référence versionnée danstest/fixtures/cli-startup-bench.jsonavecruns=5etwarmup=1
test/fixtures/cli-startup-bench.json- Actualisez-la avec
pnpm test:startup:bench:update - Comparez les résultats courants à la fixture avec
pnpm test:startup:bench:check
Onboarding E2E (Docker)
Docker est facultatif ; ce n’est nécessaire que pour les tests smoke d’onboarding conteneurisés. Flux complet de démarrage à froid dans un conteneur Linux propre :openclaw health.
Smoke d’import QR (Docker)
Garantit queqrcode-terminal se charge sous les runtimes Node Docker pris en charge (Node 24 par défaut, Node 22 compatible) :