Skip to content
Allure report logoAllure Report
Main Navigation ModulesDocumentationStart

English

Español

English

Español

Appearance

Sidebar Navigation

Introduction

Install & Upgrade

Install for Windows

Install for macOS

Install for Linux

Install for Node.js

Upgrade Allure

Getting started

How to view a report

Improving readability of your test reports

Improving navigation in your test report

Features

Test steps

Attachments

Test statuses

Sorting and filtering

Defect categories

Visual analytics

Test stability analysis

History and retries

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

How it works

Overview

Test result file

Container file

Categories file

Environment file

Executor file

History files

Integrations

Azure DevOps

Bamboo

GitHub Actions

Jenkins

JetBrains IDEs

TeamCity

Visual Studio Code

Frameworks

Behat

Getting started

Configuration

Reference

Behave

Getting started

Configuration

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

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

NUnit

Getting started

Configuration

Reference

PHPUnit

Getting started

Configuration

Reference

Playwright

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

RSpec

Getting started

Configuration

Reference

SpecFlow

Getting started

Configuration

Reference

Spock

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

Integrating videos in Allure Report with Pytest and Playwright ​

Reading test results should be a quick process, allowing the reader to understand failures without digging into code, running a debugger, or interrupting teammates. To achieve this, test reports must present detailed information in a concise and accessible format. While attaching screenshots and logs is standard practice, it is sometimes insufficient.

In such cases, recording a video of the test execution can be invaluable. Videos improve issue reproduction, speed up debugging, and help automated test analysis. They also improve documentation accuracy by capturing intermittent bugs.

In this guide, we will set up tests with Pytest, record them using Playwright Pytest, and attach videos to reports in Allure Report.

1. Preparation ​

Prerequisites ​

Make sure the following prerequisites are met:

  • Python installed
  • Allure Report installed

Dependency List ​

This guide uses the following packages:

  • Pytest 8.3.4
  • allure-pytest 2.13.5
  • Pytest-playwright 0.7.0

Code sample ​

The complete source code used in this guide is available at https://github.com/allure-examples/guide-pytest-playwright-video.

Setup ​

To run the examples in this guide:

  1. Install Python
  2. Install Allure Report
  3. Download a fresh project with Pytest from Allure Start
  4. Add the Playwright Pytest plugin to your project. For example, if you use pip:
shell
pip install pytest-playwright

2. Recording videos with Playwright Pytest ​

Playwright Pytest records videos in the browser context and saves them as WebM files. To start recording manually, you can create a browser context with the new_context() method of the Browser object and pass the record_video_dir parameter for it, for example:

python
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    # Start a browser
    browser = p.chromium.launch()
    # Initialising a browser context with video recording
    context = browser.new_context(record_video_dir="path/to/videos")

    page = context.new_page()
    page.goto("https://playwright.dev")

3. Automatic videos on failure ​

To automatically save the video in case of a test failure, set the --video option to retain-on-failure in your project's Pytest configuration. For example, if you use pyproject.toml as a configuration file, add the following:

toml
[tool.pytest.ini_options]
...
addopts = [
    ...
    "--video", "retain-on-failure",
]

For each test, Playwright Pytest creates a subdirectory in the test-results directory and saves the related video there.

4. Attaching videos to an Allure Report ​

While capturing videos is beneficial for diagnosing test failures, viewing them separately can be inefficient. When test data is scattered across multiple locations, identifying and resolving issues becomes more time-consuming.

To streamline this process, videos should be directly attached to Allure Reports, ensuring all relevant test information is consolidated in one place for efficient analysis and troubleshooting.

Allure Report displays videos within the test where they were recorded, alongside error messages and other attachments, providing everything you need to analyze test results effectively.

Video Attachment In Allure Report With Pytest

To add a local video file to Allure Report, use the allure.attach.file() function:

python
import allure

allure.attach.file(
    "file_name.webm",
    name="video attachment",
    attachment_type=allure.attachment_type.WEBM
)

To attach a local video automatically on every test failure, you can write a hook in the conftest.py file in your project's test root directory. Assuming you set the --video configuration option as described in Automatic videos on failure section, the hook may look up the saved videos and attach them to Allure Report. For example:

python
# Contents of conftest.py
import pathlib
import allure
import pytest


@pytest.hookimpl(hookwrapper=True)
def pytest_runtest_teardown(item, nextitem):
    yield

    try:
        # Get the output directory for the test
        artifacts_dir = item.funcargs.get("output_path")
        if artifacts_dir:
            artifacts_dir_path = pathlib.Path(artifacts_dir)

            if artifacts_dir_path.is_dir():
                for file in artifacts_dir_path.iterdir():
                    # Find the video file and attach it to Allure Report
                    if file.is_file() and file.suffix == ".webm":
                        allure.attach.file(
                            file,
                            name=file.name,
                            attachment_type=allure.attachment_type.WEBM,
                        )

    except Exception as e:
        print(f"Error attaching video: {e}")

5. Other attachment types ​

Allure Report can also handle other types of attachments - images, text, tables, URI lists, or documents (XML, JSON, YAML). For example:

python
allure.attach(
    response_content,
    name="response content",
    attachment_type=allure.attachment_type.XML
)

Allure Pytest makes some attachments automatically:

  1. everything passed to sys.stdout - e.g. print(...)
  2. everything passed to sys.stderr - e.g. print(..., file=sys.stderr)
  3. logging, e.g. logging.warning(...)

These outputs are attached as pseudo-files to the report:

Automatic Attachments In Allure Report With Pytest

If you don’t want these automatic Pytest attachments to appear in the report, use the --allure-no-capture option.

If you want to learn how attach screenshots, consult the guide for attachments with Pytest and Playwright and the documentation for attachment types.

6. Conclusion ​

With Pytest and Playwright, you can record videos of your tests to provide maximum visibility of your tests’ execution. Allure Report allows you to view those videos with other attachment types (screenshots, text, documents, tables) inside the respective test case, providing the test reader with the maximum amount of data to resolve failures.

Pager
Previous pagePytest & Playwright: screenshots and attachments
Next pagePlaywright parameterization
Powered by

Join our newsletter

Allure TestOps
  • Overview
  • Why choose us
  • Cloud
  • Self-hosted
  • Success Stories
Company
  • Documentation
  • Blog
  • About us
  • Contact
  • Events
© 2025 Qameta Software Inc. All rights reserved.