Markdown test report formatter for pytest-bdd with pytest-playwright screenshot support
Project description
pytest-bdd-md-report
Markdown test report formatter for pytest-bdd with pytest-playwright screenshot support.
Installation
pip install pytest-bdd-md-report
Or with uv:
uv add pytest-bdd-md-report
Optional dependencies
# With pytest-playwright support (for screenshot capture)
pip install pytest-bdd-md-report[playwright]
# With pytest-bdd support
pip install pytest-bdd-md-report[bdd]
# All optional dependencies
pip install pytest-bdd-md-report[all]
Quick Start
# Generate a markdown report
pytest --markdown-report=test_report.md
# Include detailed step information (Given/When/Then)
pytest --markdown-report=test_report.md --markdown-report-verbose
# Include screenshots for failed tests (requires pytest-playwright)
pytest --markdown-report=test_report.md --markdown-report-screenshots --screenshot=only-on-failure
CLI Options
| Option | Description |
|---|---|
--markdown-report=path |
Output path for the Markdown report (required to enable) |
--markdown-report-verbose |
Include detailed step information (Given/When/Then) |
--markdown-report-template=path |
Custom Jinja2 template file path |
--markdown-report-screenshots |
Embed failure screenshots in report |
--markdown-report-embed-images |
Base64 encode screenshots directly in markdown |
Output Example
Basic Mode
## Summary
- **Total Tests**: 3
- **Passed**: 2
- **Failed**: 1
## Test Results
### Feature: Login
#### [PASS] Scenario: Successful login
- **Status**: PASSED
- **Duration**: 1.73s
Verbose Mode (--markdown-report-verbose)
#### [PASS] Scenario: Successful login
- **Status**: PASSED
- **Duration**: 1.73s
**Steps:**
1. [PASS] **Given** the login page is displayed (0.45s)
2. [PASS] **When** user enters valid credentials (0.98s)
3. [PASS] **Then** dashboard is shown (0.30s)
Custom Templates
Create a custom Jinja2 template to customize the report format.
Template Variables
| Variable | Type | Description |
|---|---|---|
generation_time |
str | Report generation timestamp |
summary.total_tests |
int | Total test count |
summary.passed |
int | Passed count |
summary.failed |
int | Failed count |
summary.skipped |
int | Skipped count |
summary.total_duration |
str | Total execution time |
features |
dict | Feature name to scenario list mapping |
Example Custom Template
# Test Report
Generated: {{ generation_time }}
| Metric | Value |
|--------|-------|
| Total | {{ summary.total_tests }} |
| Passed | {{ summary.passed }} |
| Failed | {{ summary.failed }} |
{% for feature_name, scenarios in features.items() %}
## {{ feature_name }}
{% for scenario in scenarios %}
- **{{ scenario.scenario_name }}**: {{ scenario.status }}
{% endfor %}
{% endfor %}
Screenshot Support
Capture screenshots for failed tests using pytest-playwright:
# Screenshots saved as file references
pytest --markdown-report=test_report.md --markdown-report-screenshots --screenshot=only-on-failure
# Screenshots embedded as Base64 (single-file report)
pytest --markdown-report=test_report.md --markdown-report-screenshots --markdown-report-embed-images --screenshot=only-on-failure
Note: --screenshot=only-on-failure is a pytest-playwright option. Screenshots are saved to test-results/ directory.
Requirements
- Python >= 3.10
- pytest >= 7.0.0
- jinja2 >= 3.1.0
Optional
- pytest-bdd >= 6.0.0 (for BDD-style tests)
- pytest-playwright >= 0.4.0 (for screenshot capture)
License
MIT License
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pytest_bdd_md_report-1.0.3.tar.gz.
File metadata
- Download URL: pytest_bdd_md_report-1.0.3.tar.gz
- Upload date:
- Size: 8.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ddb2b6917f898f1aa2a456f790afabb5693c6825a24f700c26c68c106c0378a7
|
|
| MD5 |
7db52f3924ff77c2a05122d0b308b2b4
|
|
| BLAKE2b-256 |
03e1ce643fac456cf0a64f6969ca81532b70eb2175320955ab2e0a11c288a0ca
|
File details
Details for the file pytest_bdd_md_report-1.0.3-py3-none-any.whl.
File metadata
- Download URL: pytest_bdd_md_report-1.0.3-py3-none-any.whl
- Upload date:
- Size: 9.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
24f3dfba167ba53979a8dae4edfad7365c49e81c847ee492f5099b29bc66ead6
|
|
| MD5 |
0947c99d010f281fd9394c37c87247d0
|
|
| BLAKE2b-256 |
f863e24bba78c4ddaccebee6a9486f3f5ca32ecf5e5cbf632fcf89c737d5e6b8
|