Pruebas
Pruebas
Sección titulada «Pruebas»-
Kit de pruebas completo (suites, live, Docker): Testing
-
pnpm test:force: Mata cualquier proceso de gateway residual que mantenga 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. Use esto cuando una ejecución previa del gateway dejó el puerto 18789 ocupado. -
pnpm test:coverage: Ejecuta la suite unitaria con cobertura V8 (víavitest.unit.config.ts). Los umbrales globales son del 70% para líneas/ramas/funciones/sentencias. La cobertura excluye los puntos de entrada con mucha integración (cableado CLI, puentes gateway/telegram, servidor estático webchat) para mantener el objetivo enfocado en la lógica susceptible de pruebas unitarias. -
pnpm test:coverage:changed: Ejecuta la cobertura de unidades solo para los archivos modificados desdeorigin/main. -
pnpm test:changed: ejecuta el wrapper con--changed origin/main. La configuración base de Vitest trata los manifiestos/archivos de configuración del wrapper comoforceRerunTriggers, por lo que los cambios en el planificador todavía se vuelven a ejecutar ampliamente cuando es necesario. -
pnpm test: ejecuta el wrapper completo. Mantiene solo un pequeño manifiesto de anulación de comportamiento en git, luego usa una instantánea de sincronización registrada para separar los archivos de unidad más pesados medidos en carriles dedicados. -
Los archivos de unidad por defecto son
threadsen el wrapper; mantenga las excepciones solo de bifurcación (fork-only) documentadas entest/fixtures/test-parallel.behavior.json. -
pnpm test:channelsahora por defecto esthreadsa través devitest.channels.config.ts; la ejecución de control directa de la suite completa del 22 de marzo de 2026 pasó limpia sin excepciones de bifurcación específicas del canal. -
pnpm test:extensionsse ejecuta a través del wrapper y mantiene documentadas las excepciones solo de bifurcación de extensiones entest/fixtures/test-parallel.behavior.json; el carril de extensión compartida todavía por defecto esthreads. -
pnpm test:extensions: ejecuta las suites de extensiones/plugins. -
pnpm test:perf:imports: habilita los informes de duración de importación + desglose de importación de Vitest para el wrapper. -
pnpm test:perf:imports:changed: mismo perfilado de importación, pero solo para archivos modificados desdeorigin/main. -
pnpm test:perf:profile:main: escribe un perfil de CPU para el subproceso principal de Vitest (.artifacts/vitest-main-profile). -
pnpm test:perf:profile:runner: escribe perfiles de CPU + heap para el ejecutor de unidades (.artifacts/vitest-runner-profile). -
pnpm test:perf:update-timings: actualiza la instantánea de sincronización de archivos lentos registrada utilizada porscripts/test-parallel.mjs. -
Integración de Gateway: participación opcional a través de
OPENCLAW_TEST_INCLUDE_GATEWAY=1 pnpm testopnpm test:gateway. -
pnpm test:e2e: Ejecuta pruebas de humo de extremo a extremo de la puerta de enlace (emparejamiento de múltiples instancias WS/HTTP/nodo). Por defecto esforks+ trabajadores adaptativos envitest.e2e.config.ts; ajusta conOPENCLAW_E2E_WORKERS=<n>y estableceOPENCLAW_E2E_VERBOSE=1para registros detallados. -
pnpm test:live: Ejecuta pruebas en vivo del proveedor (minimax/zai). Requiere claves de API yLIVE=1(o*_LIVE_TEST=1específico del proveedor) para no omitir. -
pnpm test:docker:openwebui: Inicia OpenClaw y Open WebUI en Docker, inicia sesión a través de Open WebUI, verifica/api/modelsy luego ejecuta un chat proxy real a través de/api/chat/completions. Requiere una clave de modelo en vivo utilizable (por ejemplo, OpenAI en~/.profile), extrae una imagen externa de Open WebUI y no se espera que sea estable en CI como las suites normales de unitarias/e2e. -
pnpm test:docker:mcp-channels: Inicia un contenedor Gateway semillado y un segundo contenedor cliente que generaopenclaw mcp serve, luego verifica el descubrimiento de conversaciones enrutadas, lecturas de transcripciones, metadatos de adjuntos, comportamiento de la cola de eventos en vivo, enrutamiento de envío saliente y notificaciones de canal y permisos estilo Claude a través del puente stdio real. La aserción de notificación de Claude lee los marcos MCP stdio sin procesar directamente para que la prueba de humo refleje lo que el puente realmente emite.
Portero de PR local
Sección titulada «Portero de PR local»Para comprobaciones de aterizaje/portero de PR locales, ejecute:
pnpm checkpnpm buildpnpm testpnpm check:docs
Si pnpm test falla esporádicamente en un host cargado, vuelva a ejecutarlo una vez antes de tratarlo como una regresión, luego aíslelo con pnpm vitest run <path/to/test>. Para hosts con restricciones de memoria, use:
OPENCLAW_TEST_PROFILE=low OPENCLAW_TEST_SERIAL_GATEWAY=1 pnpm testOPENCLAW_VITEST_FS_MODULE_CACHE_PATH=/tmp/openclaw-vitest-cache pnpm test:changed
Bench de latencia de modelo (claves locales)
Sección titulada «Bench de latencia de modelo (claves locales)»Script: scripts/bench-model.ts
Uso:
source ~/.profile && pnpm tsx scripts/bench-model.ts --runs 10- Env opcional:
MINIMAX_API_KEY,MINIMAX_BASE_URL,MINIMAX_MODEL,ANTHROPIC_API_KEY - Prompt predeterminado: “Reply with a single word: ok. No punctuation or extra text.”
Última ejecución (2025-12-31, 20 ejecuciones):
- minimax mediana 1279ms (min 1114, max 2431)
- opus mediana 2454ms (min 1224, max 3170)
Bench de inicio de CLI
Sección titulada «Bench 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
Ajustes preestablecidos:
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
La salida incluye sampleCount, promedio, p50, p95, min/máx, distribución de código de salida/señal, y resúmenes de RSS máximo para cada comando. Opcionalmente, --cpu-prof-dir / --heap-prof-dir escribe perfiles V8 por ejecución para que la medición de tiempo y la captura de perfiles utilicen el mismo arnés.
Convenciones de salida guardada:
pnpm test:startup:bench:smokeescribe el artefacto de humo específico en.artifacts/cli-startup-bench-smoke.jsonpnpm test:startup:bench:saveescribe el artefacto de suite completa en.artifacts/cli-startup-bench-all.jsonusandoruns=5ywarmup=1pnpm test:startup:bench:updateactualiza el accesorio de línea base verificado entest/fixtures/cli-startup-bench.jsonusandoruns=5ywarmup=1
Accesorio verificado:
test/fixtures/cli-startup-bench.json- Actualizar con
pnpm test:startup:bench:update - Comparar los resultados actuales contra el accesorio con
pnpm test:startup:bench:check
Incorporación E2E (Docker)
Sección titulada «Incorporación E2E (Docker)»Docker es opcional; esto solo es necesario para pruebas de humo de incorporación en contenedores.
Flujo completo de inicio en frío en un contenedor Linux limpio:
scripts/e2e/onboard-docker.shEste script maneja el asistente interactivo a través de una pseudo-tty, verifica los archivos de configuración/espacio de trabajo/sesión, y luego inicia el gateway y ejecuta openclaw health.
Prueba de humo de importación QR (Docker)
Sección titulada «Prueba de humo de importación QR (Docker)»Asegura que qrcode-terminal se cargue bajo los tiempos de ejecución Docker Node compatibles (Node 24 por defecto, Node 22 compatible):
pnpm test:docker:qr