Pruebas
- Kit completo de pruebas (suites, en vivo, Docker): Testing
-
pnpm test:force: Mata cualquier proceso persistente del gateway que esté reteniendo el puerto de control predeterminado y luego ejecuta la suite completa de Vitest con un puerto de gateway aislado para que las pruebas del servidor no colisionen con una instancia en ejecución. Úsalo cuando una ejecución previa del gateway haya dejado ocupado el puerto 18789. -
pnpm test:coverage: Ejecuta la suite unitaria con cobertura V8 (mediantevitest.unit.config.ts). Los umbrales globales son 70% de líneas/ramas/funciones/instrucciones. La cobertura excluye puntos de entrada con mucha integración (cableado de CLI, puentes de gateway/telegram y servidor estático de webchat) para mantener el objetivo centrado en la lógica comprobable con pruebas unitarias. -
pnpm test:coverage:changed: Ejecuta cobertura unitaria solo para los archivos modificados desdeorigin/main. -
pnpm test:changed: ejecuta la configuración nativa de proyectos de Vitest con--changed origin/main. La configuración base trata los archivos de proyectos/configuración comoforceRerunTriggerspara que los cambios de cableado sigan relanzando ampliamente cuando sea necesario. -
pnpm test: ejecuta directamente la configuración nativa de proyectos raíz de Vitest. Los filtros de archivos funcionan de forma nativa en todos los proyectos configurados. -
La configuración base de Vitest ahora usa por defecto
pool: "threads"eisolate: false, con el runner compartido no aislado habilitado en las configuraciones del repositorio. -
pnpm test:channelsejecutavitest.channels.config.ts. -
pnpm test:extensionsejecutavitest.extensions.config.ts. -
pnpm test:extensions: ejecuta las suites de extensiones/plugins. -
pnpm test:perf:imports: habilita los informes de duración de importación + desglose de importaciones de Vitest para la ejecución nativa de proyectos raíz. -
pnpm test:perf:imports:changed: el mismo perfilado de importaciones, pero solo para los archivos modificados desdeorigin/main. -
pnpm test:perf:profile:main: escribe un perfil de CPU para el hilo principal de Vitest (.artifacts/vitest-main-profile). -
pnpm test:perf:profile:runner: escribe perfiles de CPU + heap para el runner unitario (.artifacts/vitest-runner-profile). -
Integración de gateway: activación opcional mediante
OPENCLAW_TEST_INCLUDE_GATEWAY=1 pnpm testopnpm test:gateway. -
pnpm test:e2e: Ejecuta las pruebas de humo end-to-end del gateway (emparejamiento multiinstancia WS/HTTP/nodo). Usa por defectothreads+isolate: falsecon workers adaptativos envitest.e2e.config.ts; ajústalo conOPENCLAW_E2E_WORKERS=<n>y estableceOPENCLAW_E2E_VERBOSE=1para registros detallados. -
pnpm test:live: Ejecuta pruebas en vivo de proveedores (minimax/zai). Requiere claves API yLIVE=1(o*_LIVE_TEST=1específico del proveedor) para dejar de omitirlas. -
pnpm test:docker:openwebui: Inicia OpenClaw + Open WebUI en Docker, inicia sesión a través de Open WebUI, comprueba/api/modelsy luego ejecuta un chat real proxyado a través de/api/chat/completions. Requiere una clave de modelo en vivo utilizable (por ejemplo, OpenAI en~/.profile), descarga una imagen externa de Open WebUI y no se espera que sea estable en CI como las suites normales unitarias/e2e. -
pnpm test:docker:mcp-channels: Inicia un contenedor Gateway preconfigurado y un segundo contenedor cliente que lanzaopenclaw mcp serve, luego verifica el descubrimiento enrutado de conversaciones, lecturas de transcripciones, metadatos de adjuntos, comportamiento de la cola de eventos en vivo, enrutamiento de envíos salientes y notificaciones de canal + permisos al estilo Claude sobre el puente stdio real. La aserción de notificación de Claude lee directamente los frames MCP raw de stdio para que la prueba de humo refleje lo que el puente realmente emite.
Puerta local de PR
Para comprobaciones locales de aterrizaje/puerta de PR, ejecuta:pnpm checkpnpm buildpnpm testpnpm check:docs
pnpm test falla de forma intermitente en un host cargado, vuelve a ejecutarlo una vez antes de tratarlo como una regresión y luego aíslalo con pnpm test <path/to/test>. Para hosts con memoria limitada, usa:
OPENCLAW_VITEST_MAX_WORKERS=1 pnpm testOPENCLAW_VITEST_FS_MODULE_CACHE_PATH=/tmp/openclaw-vitest-cache pnpm test:changed
Benchmark de latencia de modelos (claves locales)
Script:scripts/bench-model.ts
Uso:
source ~/.profile && pnpm tsx scripts/bench-model.ts --runs 10- Variables de entorno opcionales:
MINIMAX_API_KEY,MINIMAX_BASE_URL,MINIMAX_MODEL,ANTHROPIC_API_KEY - Prompt predeterminado: “Reply with a single word: ok. No punctuation or extra text.”
- mediana de minimax: 1279ms (mín. 1114, máx. 2431)
- mediana de opus: 2454ms (mín. 1224, máx. 3170)
Benchmark de inicio de CLI
Script:scripts/bench-cli-startup.ts
Uso:
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: ambos preajustes
sampleCount, avg, p50, p95, min/max, distribución de códigos de salida/señales y resúmenes de RSS máximo para cada comando. La opción --cpu-prof-dir / --heap-prof-dir escribe perfiles V8 por ejecución para que la medición de tiempo y la captura de perfiles usen el mismo arnés.
Convenciones de salida guardada:
pnpm test:startup:bench:smokeescribe el artefacto de humo dirigido en.artifacts/cli-startup-bench-smoke.jsonpnpm test:startup:bench:saveescribe el artefacto de la suite completa en.artifacts/cli-startup-bench-all.jsonusandoruns=5ywarmup=1pnpm test:startup:bench:updateactualiza el fixture base versionado entest/fixtures/cli-startup-bench.jsonusandoruns=5ywarmup=1
test/fixtures/cli-startup-bench.json- Actualízalo con
pnpm test:startup:bench:update - Compara los resultados actuales con el fixture mediante
pnpm test:startup:bench:check
E2E de onboarding (Docker)
Docker es opcional; esto solo se necesita para pruebas de humo de onboarding en contenedores. Flujo completo de inicio en frío en un contenedor Linux limpio:openclaw health.
Prueba de humo de importación de QR (Docker)
Asegura queqrcode-terminal se cargue bajo los runtimes de Node para Docker compatibles (Node 24 predeterminado, Node 22 compatible):