bun test admite diferentes formatos de salida a través de reporteros. Este documento cubre tanto los reporteros integrados como cómo implementar tus propios reporteros personalizados.
Reporteros integrados
Reportero de consola por defecto
Por defecto, bun test genera resultados a la consola en un formato legible:
test/package-json-lint.test.ts:
✓ test/package.json [0.88ms]
✓ test/js/third_party/grpc-js/package.json [0.18ms]
✓ test/js/third_party/svelte/package.json [0.21ms]
✓ test/js/third_party/express/package.json [1.05ms]
4 pass
0 fail
4 expect() calls
Ran 4 tests in 1.44msCuando un terminal no soporta colores, la salida evita caracteres no ascii:
test/package-json-lint.test.ts:
(pass) test/package.json [0.48ms]
(pass) test/js/third_party/grpc-js/package.json [0.10ms]
(pass) test/js/third_party/svelte/package.json [0.04ms]
(pass) test/js/third_party/express/package.json [0.04ms]
4 pass
0 fail
4 expect() calls
Ran 4 tests across 1 files. [0.66ms]Reportero de puntos
El reportero de puntos muestra . para pruebas aprobadas y F para fallos, útil para suites de pruebas grandes.
bun test --dots
bun test --reporter=dotsReportero JUnit XML
Para entornos CI/CD, Bun admite generar informes JUnit XML. JUnit XML es un formato ampliamente adoptado para resultados de pruebas que puede ser analizado por muchos sistemas CI/CD, incluyendo GitLab, Jenkins y otros.
Usando el reportero JUnit
Para generar un informe JUnit XML, usa la bandera --reporter=junit junto con --reporter-outfile para especificar el archivo de salida:
bun test --reporter=junit --reporter-outfile=./junit.xmlEsto continúa generando salida a la consola como de costumbre mientras también escribe el informe JUnit XML a la ruta especificada al final de la ejecución de pruebas.
Configurar vía bunfig.toml
También puedes configurar el reportero JUnit en tu archivo bunfig.toml:
[test.reporter]
junit = "path/to/junit.xml" # Ruta de salida para informe XML JUnitVariables de entorno en informes JUnit
El reportero JUnit automáticamente incluye información del entorno como <properties> en la salida XML. Esto puede ser útil para rastrear ejecuciones de pruebas en entornos CI.
Específicamente, incluye las siguientes variables de entorno cuando están disponibles:
| Variable de entorno | Nombre de propiedad | Descripción |
|---|---|---|
GITHUB_RUN_ID, GITHUB_SERVER_URL, GITHUB_REPOSITORY, CI_JOB_URL | ci | Información de compilación CI |
GITHUB_SHA, CI_COMMIT_SHA, GIT_SHA | commit | Identificadores de commit Git |
| Nombre de host del sistema | hostname | Nombre de host de la máquina |
Esto facilita rastrear para qué entorno y commit fue una ejecución de prueba particular.
Limitaciones actuales
El reportero JUnit actualmente tiene algunas limitaciones que se abordarán en actualizaciones futuras:
- La salida
stdoutystderrde pruebas individuales no se incluye en el informe - Los campos de marca de tiempo precisos por caso de prueba no se incluyen
Reportero de GitHub Actions
Bun test detecta automáticamente cuando se está ejecutando dentro de GitHub Actions y emite anotaciones de GitHub Actions directamente a la consola. No se necesita configuración especial más allá de instalar Bun y ejecutar bun test.
Para un ejemplo de configuración de workflow de GitHub Actions, consulta la sección de integración CI/CD de la documentación de CLI.
Reporteros personalizados
Bun permite a los desarrolladores implementar reporteros de pruebas personalizados extendiendo el Protocolo Inspector de WebKit con dominios específicos de pruebas adicionales.
Protocolo Inspector para pruebas
Para soportar reportes de pruebas, Bun extiende el Protocolo Inspector de WebKit estándar con dos dominios personalizados:
- TestReporter: Reporta descubrimiento de pruebas, inicio de ejecución y eventos de finalización
- LifecycleReporter: Reporta errores y excepciones durante la ejecución de pruebas
Estas extensiones te permiten construir herramientas de reporte personalizadas que pueden recibir información detallada sobre la ejecución de pruebas en tiempo real.
Eventos clave
Los reporteros personalizados pueden escuchar estos eventos clave:
TestReporter.found: Se emite cuando se descubre una pruebaTestReporter.start: Se emite cuando una prueba comienza a ejecutarseTestReporter.end: Se emite cuando una prueba se completaConsole.messageAdded: Se emite cuando ocurre salida de consola durante una pruebaLifecycleReporter.error: Se emite cuando ocurre un error o excepción