Saltar al contenido principal

Reportar JUnit XML desde cualquier lenguaje

Cómo generar el JUnit XML de Playwright, pytest, Maven, Gradle, PHPUnit, .NET y Go para enviarlo a Qably desde CI.

El backend de Qably procesa cualquier archivo con estructura estándar <testsuite>/<testcase>, extrayendo el resultado de cada prueba a partir de los elementos <failure>, <error> o <skipped>. Genere el reporte XML utilizando las herramientas nativas de su lenguaje y envíe el archivo resultante en su pipeline de CI.

JavaScript y TypeScript

Jest y Vitest se detallaron en el paso 4 del inicio rápido.

Comandos por herramienta

PLAYWRIGHT_JUNIT_OUTPUT_NAME=results.xml npx playwright test --reporter=junit

Notas sobre cada herramienta

El reporter de JUnit incorporado en Playwright escribe a la salida estándar a menos que se indique un archivo, ya sea mediante una variable de entorno o en el archivo de configuración.

También puede configurarse una vez en playwright.config.ts: reporter: [['junit', { outputFile: 'results.xml' }]].

mvn test escribe un reporte por clase de prueba sin ninguna bandera extra; el plugin Surefire lo hace por defecto.

PHPUnit escribe el reporte JUnit XML en el archivo indicado a --log-junit.

Agregue el paquete NuGet JUnitXml.TestLogger al proyecto de pruebas y pase el logger por línea de comandos.

go-junit-report lee la salida de go test. Su bandera -set-exit-code hace que termine con estado 1 cuando una prueba falla, de modo que una prueba fallida sigue haciendo fallar el paso de CI.

Identidad de los casos y suites

Importante: Un caso se identifica por su classname y su name en conjunto, por lo que dos pruebas llamadas test_login en clases distintas siguen siendo casos separados. Cuando el name ya comienza con el classname, la identidad es solo el name. Si dos pruebas distintas de una suite resuelven a la misma identidad, Qably no las fusiona en un solo caso: informa la colisión en la respuesta de ingesta (caseIdentityCollisions) para que pueda renombrar una de ellas.

pytest escribe todas las pruebas en un único <testsuite name="pytest">, por lo que Qably agrupa todos los casos de pytest en una sola suite llamada pytest. La opción junit_suite_name solo cambia el nombre de esa suite raíz; no la divide. Para mantener suites separadas, ejecute pytest una vez por grupo de pruebas (por ejemplo, una ejecución por archivo) y envíe cada reporte por separado, cada uno con su propio externalId.