Introducción a Allure Selenium BiDi
Captura eventos de logs del navegador y eventos de red desde pruebas de Selenium WebDriver 4 usando el protocolo BiDi, y adjúntalos como diagnósticos a los resultados de prueba en tu Allure Report. La integración está dirigida a Selenium WebDriver 4 con soporte BiDi y está validada contra Selenium Java 4.44.
Allure Selenium BiDi es compatible con cualquier integración de Allure Java para frameworks, incluyendo Allure JUnit 5 y Allure TestNG. Requiere Java 17 o superior.
Para habilitar la integración en tu proyecto:
Asegúrate de tener una integración de Allure configurada para el framework de pruebas que utilizas.
Consulta las instrucciones en la documentación de la integración en Frameworks.
Añade
allure-selenium-bidia las dependencias de tu proyecto.xml<!-- Define la versión de Allure que quieres usar mediante la propiedad allure.version --> <properties> <allure.version>VERSION</allure.version> </properties> <!-- Añade allure-bom a la gestión de dependencias para asegurar que se usen las versiones correctas de todas las dependencias --> <dependencyManagement> <dependencies> <dependency> <groupId>io.qameta.allure</groupId> <artifactId>allure-bom</artifactId> <version>${allure.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>io.qameta.allure</groupId> <artifactId>allure-selenium-bidi</artifactId> <scope>test</scope> </dependency> </dependencies>ktsval allureVersion = "VERSION" dependencies { testImplementation(platform("io.qameta.allure:allure-bom:$allureVersion")) testImplementation("io.qameta.allure:allure-selenium-bidi") }groovydef allureVersion = "VERSION" dependencies { testImplementation platform("io.qameta.allure:allure-bom:$allureVersion") testImplementation "io.qameta.allure:allure-selenium-bidi" }Habilita BiDi en las opciones de tu WebDriver.
javaChromeOptions options = new ChromeOptions().enableBiDi();BiDi debe estar habilitado a nivel del driver — sin esto, la integración no produce adjuntos de manera silenciosa. Consulta la documentación de Selenium de tu navegador para el soporte de BiDi.
Decora tu instancia de WebDriver con
AllureWebDriverBiDi.javaimport io.qameta.allure.seleniumbidi.AllureWebDriverBiDi; AllureWebDriverBiDi bidi = new AllureWebDriverBiDi(); WebDriver driver = bidi.decorate(new ChromeDriver(options));Utiliza el driver decorado para todas las interacciones de prueba. Cuando se llama a
driver.quit(), los eventos de logs del navegador y de red recopilados se descargan como adjuntos JSON al resultado de prueba activo.INFO
Los eventos solo se capturan y adjuntan mientras exista un contexto de prueba activo de Allure. La actividad del navegador que ocurre fuera de una prueba — por ejemplo, en código de setup que se ejecuta antes de que comience cualquier prueba — no se captura. De igual manera, si se llama a
driver.quit()después de que la prueba ha finalizado (por ejemplo, en código de limpieza que se ejecuta después de que el resultado de prueba se ha finalizado), los eventos recopilados no se adjuntan.Ejecuta tus pruebas y genera un reporte de pruebas como lo harías normalmente.
Salida del reporte
Cada resultado de prueba recibe hasta dos adjuntos JSON:
- WebDriver BiDi logs — eventos de logs del navegador incluyendo salida de consola (
console.log,console.warn,console.error, etc.), excepciones JavaScript no capturadas y otras entradas genéricas de logs del navegador. - WebDriver BiDi network — eventos de red:
beforeRequestSent,responseStarted,responseCompletedyfetchError.
Un adjunto se omite cuando no se recibieron eventos de ese tipo durante la prueba y ninguno fue descartado.
Los valores sensibles de encabezados se redactan por defecto. Consulta la configuración para controlar qué tipos de eventos se capturan, establecer límites de entradas por prueba o personalizar la redacción de encabezados. Consulta la referencia para el esquema completo de adjuntos.
Cierre manual del listener
Los adjuntos se descargan cuando se llama a driver.quit() en el driver decorado. Para descargar antes — por ejemplo, antes de que se ejecute la lógica de limpieza — llama explícitamente a bidi.close():
bidi.close(); // descarga los eventos almacenados como adjuntos ahora
driver.quit(); // luego cierra el navegador — no ocurre una segunda descargaINFO
close() tiene el mismo requisito de contexto que driver.quit(): los eventos solo se adjuntan si existe un contexto de prueba activo de Allure cuando se llama a close(). Si lo llamas después de que el resultado de prueba se ha finalizado, los eventos recopilados se descartan.
Después de close(), el posterior driver.quit() no produce una segunda descarga — la sesión ya ha sido eliminada.