Introduction
Allure Report transforms raw test result data into interactive, visually rich HTML reports that show pass/fail status, failure details, execution timelines, and trend history. It supports adapters for virtually every major test framework across Java, Python, JavaScript, C#, Ruby, and more. By separating test execution from reporting, Allure lets teams standardize on one report format regardless of which test runner each project uses.
What Allure Does
- Generates interactive HTML reports from test result files in a standard JSON format
- Provides adapters for JUnit, pytest, Mocha, Jest, Cypress, Playwright, TestNG, and 30+ frameworks
- Shows test execution timelines, retries, flaky test detection, and historical trends
- Supports attaching screenshots, logs, and custom data to individual test cases
- Categorizes failures by defect type, severity, and custom labels
Architecture Overview
Allure uses a two-phase model: adapters and the report generator. During test execution, a language-specific adapter (e.g., allure-pytest, allure-mocha) writes structured JSON result files to an output directory. After tests complete, the Allure CLI reads those files and generates a static HTML report with embedded JavaScript for interactive navigation. The report includes graphs, timelines, and drill-down views. Historical data is preserved across runs by copying a history/ folder between generations, enabling trend charts.
Self-Hosting & Configuration
- Install the CLI via Homebrew, npm, or download from GitHub Releases
- Add the appropriate adapter to your test project (e.g.,
pip install allure-pytest) - Configure your test runner to output results to an
allure-resultsdirectory - Generate reports with
allure generate ./allure-results -o ./allure-report - Serve reports locally with
allure openor deploy the static HTML to any web server
Key Features
- Adapters for 30+ test frameworks across Java, Python, JS, C#, Ruby, PHP, and Go
- Interactive HTML reports with graphs, timelines, and drill-down test details
- Flaky test detection and retry tracking across multiple executions
- Attachment support for screenshots, videos, logs, and arbitrary files
- Historical trend charts when preserving the history directory between runs
Comparison with Similar Tools
- JUnit XML reports — plain XML without visualization; Allure adds rich interactive HTML
- Mochawesome — Mocha-specific HTML reporter; Allure works across all languages and frameworks
- ReportPortal — full SaaS/self-hosted test management platform; Allure is a lightweight static report generator
- pytest-html — Python-only single-page report; Allure offers deeper drill-downs and cross-framework consistency
- Cucumber Reports — BDD-focused; Allure handles both BDD and traditional test styles with the same interface
FAQ
Q: How do I keep historical trends across CI runs?
A: Copy the allure-report/history directory into allure-results/history before generating the next report. Most CI plugins handle this automatically.
Q: Can I attach screenshots to failed tests?
A: Yes. Use the adapter's attachment API (e.g., allure.attach(screenshot_bytes, name='screenshot', attachment_type=AttachmentType.PNG)) in your test hooks.
Q: Does Allure work with Playwright?
A: Yes. Install allure-playwright and configure Playwright to use the Allure reporter. Screenshots and traces attach automatically on failure.
Q: Is Allure Report free? A: Yes. Allure Report (the CLI and framework adapters) is fully open source under Apache 2.0. Allure TestOps is the commercial product for team-scale test management.