Skip to content
Allure report logoAllure Report
Main Navigation ModulesDocumentationStarter Project

English

Español

English

Español

Appearance

Sidebar Navigation

Allure 3

Install & Upgrade

Install Allure

Upgrade Allure

Configure

Create Reports

How to generate a report

How to view a report

Improving readability of your test reports

Improving navigation in your test report

Reading Allure charts

Migrate from Allure 2

Allure 2

Install & Upgrade

Install for Windows

Install for macOS

Install for Linux

Install for Node.js

Upgrade Allure

Create Reports

How to generate a report

How to view a report

Improving readability of your test reports

Improving navigation in your test report

Features

Agent Mode

Test steps

Attachments

Test statuses

Assertion diffs

Sorting and filtering

Environments

Multistage Builds

Categories

Visual analytics

Test stability analysis

History and retries

Self-hosted storage

Quality Gate

Global Errors and Attachments

Timeline

Export to CSV

Export metrics

Guides

JUnit 5 parametrization

JUnit 5 & Selenide: screenshots and attachments

JUnit 5 & Selenium: screenshots and attachments

Setting up JUnit 5 with GitHub Actions

Pytest parameterization

Pytest & Selenium: screenshots and attachments

Pytest & Playwright: screenshots and attachments

Pytest & Playwright: videos

Playwright parameterization

Publishing Reports to GitHub Pages

Deploying Self-Hosted Storage with Docker

Deploying Self-Hosted Storage on Cloudflare Workers

Allure Report 3: XCResults Reader

How it works

Overview

Glossary

Test result file

Container file

Categories file

Environment file

Executor file

History files

Test Identifiers

Integrations

Azure DevOps

Bamboo

GitHub Action

Gradle

Jenkins

JetBrains IDEs

Maven

TeamCity

Visual Studio Code

Frameworks

AVA

Getting started

Configuration

Reference

Axios

Getting started

Configuration

Reference

Behat

Getting started

Configuration

Reference

Behave

Getting started

Configuration

Reference

Bun

Getting started

Configuration

Reference

Chai

Getting started

Reference

Codeception

Getting started

Configuration

Reference

CodeceptJS

Getting started

Configuration

Reference

Cucumber.js

Getting started

Configuration

Reference

Cucumber-JVM

Getting started

Configuration

Reference

Cucumber.rb

Getting started

Configuration

Reference

Cypress

Getting started

Configuration

Reference

Dart and Flutter

Getting started

Configuration

Reference

Fetch

Getting started

Configuration

Reference

Go

Getting started

Configuration

Reference

Jasmine

Getting started

Configuration

Reference

JBehave

Getting started

Configuration

Reference

Jest

Getting started

Configuration

Reference

JUnit 4

Getting started

Configuration

Reference

JUnit 5

Getting started

Configuration

Reference

Mocha

Getting started

Configuration

Reference

Newman

Getting started

Configuration

Reference

Node.js Test Runner

Getting started

Configuration

Reference

NUnit

Getting started

Configuration

Reference

PHPUnit

Getting started

Configuration

Reference

Playwright

Getting started

Configuration

Reference

Playwright Java

Getting started

Configuration

Reference

pytest

Getting started

Configuration

Reference

Pytest-BDD

Getting started

Configuration

Reference

Reqnroll

Getting started

Configuration

Reference

REST Assured

Getting started

Configuration

Robot Framework

Getting started

Configuration

Reference

Rust Cargo Test

Getting started

Configuration

Reference

RSpec

Getting started

Configuration

Reference

Selenium BiDi

Getting started

Configuration

Reference

SpecFlow

Getting started

Configuration

Reference

Spock

Getting started

Configuration

Reference

TestCafe

Getting started

Configuration

Reference

TestNG

Getting started

Configuration

Reference

Vitest

Getting started

Configuration

Reference

WebdriverIO

Getting started

Configuration

Reference

xUnit.net

Getting started

Configuration

Reference

On this page

Getting started with Allure Selenium BiDi ​

Allure Selenium BiDi latest version

Capture browser log events and network events from Selenium WebDriver 4 tests using the BiDi protocol, and attach them as diagnostics to your Allure Report test results. The integration targets Selenium WebDriver 4 with BiDi support and is validated against Selenium Java 4.44.

Allure Selenium BiDi is compatible with any Allure Java framework integration, including Allure JUnit 5 and Allure TestNG. Requires Java 17 or newer.

To enable the integration in your project:

  1. Make sure you have an Allure integration set up for the test framework you use.

    See the instructions in the integration's documentation in Frameworks.

  2. Add allure-selenium-bidi to your project dependencies.

    xml
    <!-- Define the version of Allure you want to use via the allure.version property -->
    <properties>
        <allure.version>VERSION</allure.version>
    </properties>
    
    <!-- Add allure-bom to dependency management to ensure correct versions of all the dependencies are used -->
    <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>
    kts
    val allureVersion = "VERSION"
    
    dependencies {
        testImplementation(platform("io.qameta.allure:allure-bom:$allureVersion"))
        testImplementation("io.qameta.allure:allure-selenium-bidi")
    }
    groovy
    def allureVersion = "VERSION"
    
    dependencies {
        testImplementation platform("io.qameta.allure:allure-bom:$allureVersion")
        testImplementation "io.qameta.allure:allure-selenium-bidi"
    }
  3. Enable BiDi on your WebDriver options.

    java
    ChromeOptions options = new ChromeOptions().enableBiDi();

    BiDi must be enabled at the driver level — without it, the integration silently produces no attachments. Check your browser's Selenium documentation for BiDi support.

  4. Decorate your WebDriver instance with AllureWebDriverBiDi.

    java
    import io.qameta.allure.seleniumbidi.AllureWebDriverBiDi;
    
    AllureWebDriverBiDi bidi = new AllureWebDriverBiDi();
    WebDriver driver = bidi.decorate(new ChromeDriver(options));

    Use the decorated driver for all test interactions. When driver.quit() is called, the collected browser log and network events are flushed as JSON attachments to the active test result.

    INFO

    Events are only captured and attached while there is an active Allure test context. Browser activity that happens outside of a test — for example, in setup code that runs before any test starts — is not captured. Similarly, if driver.quit() is called after the test has ended (for example, in teardown code that runs after the test result is finalized), the collected events are not attached.

  5. Run your tests and generate a test report the same way as you would normally.

Report output ​

Each test result receives up to two JSON attachments:

  • WebDriver BiDi logs — browser log events including console output (console.log, console.warn, console.error, etc.), uncaught JavaScript exceptions, and other generic browser log entries.
  • WebDriver BiDi network — network events: beforeRequestSent, responseStarted, responseCompleted, and fetchError.

An attachment is omitted when no events of that type were received during the test and none were dropped.

Sensitive header values are redacted by default. See configuration to control which event types are captured, set per-test entry limits, or customize header redaction. See reference for the full attachment schema.

Closing the listener manually ​

Attachments are flushed when driver.quit() is called on the decorated driver. To flush earlier — for example, before teardown logic runs — call bidi.close() explicitly:

java
bidi.close(); // flush buffered events as attachments now
driver.quit(); // then quit the browser — no second flush occurs

INFO

close() has the same context requirement as driver.quit(): events are only attached if an active Allure test context exists when close() is called. If you call it after the test result has been finalized, the collected events are discarded.

After close(), the subsequent driver.quit() does not produce a second flush — the session has already been removed.

Pager
Previous pageReference
Next pageConfiguration
Powered by

Subscribe to our newsletter

Get product news you actually need, no spam.

Subscribe
Allure TestOps
  • Overview
  • Why choose us
  • Cloud
  • Self-hosted
  • Success Stories
Company
  • Documentation
  • Blog
  • About us
  • Contact
  • Events
© 2026 Qameta Software Inc. All rights reserved.
A Markdown version of this page is available at /docs/selenium-bidi.md