Beautiful dashboard-style HTML reports for pytest with charts, error analysis, and visual insights
Project description
pytest-html-dashboard
Transform your pytest HTML reports into beautiful, interactive dashboards!
A comprehensive pytest plugin that enhances HTML reports with interactive charts, intelligent error classification, and modern styling.
โจ Features
๐ฏ Interactive Charts - Visualize test results with Chart.js powered donut and pie charts ๐จ Modern UI - Beautiful gradient styling with responsive design ๐ Smart Error Analysis - Automatic error classification with suggested fixes ๐ Comprehensive Tables - Detailed test information with expandable error details ๐ง Highly Configurable - YAML, CLI, or programmatic configuration โก Zero Config - Works out of the box with sensible defaults ๐ฑ Mobile Responsive - Looks great on all devices ๐ญ Custom Branding - Add your logo, colors, and company name
๐ธ Sample Report
๐ผ๏ธ Preview
๐ View Live Interactive Report โ Click to see charts, filters, and interactive features!
โจ What's Included:
- ๐ Test Status Distribution - Visual breakdown of passed/failed/skipped tests with interactive charts
- ๐ Pass Rate Charts - Overall test success metrics with data labels
- ๐ Error Analysis - Categorized failures with remediation suggestions
- ๐ Comprehensive Test Table - Filterable, sortable results with expandable error details
- โก Step Execution Summary - Detailed test step information with status tracking
- ๐จ Modern UI - Beautiful purple gradient design with hover effects
๐ Quick Start
Installation
pip install pytest-html-dashboard
Basic Usage
pytest --html=report.html --self-contained-html
That's it! The plugin automatically enhances your HTML report with all features enabled.
๐ Configuration
YAML Configuration
Create pytest_html_dashboard.yaml:
branding:
company_name: "My Company"
report_title: "Test Execution Dashboard"
logo_url: "path/to/logo.png" # Or base64 encoded
primary_color: "#667eea"
secondary_color: "#764ba2"
charts:
enable_charts: true
chart_height: 300
chart_animation: true
report:
enable_enhanced_reporting: true
enable_error_classification: true
show_timestamps: true
Command Line Options
pytest --html=report.html \
--dashboard-company-name="My Company" \
--dashboard-report-title="Test Dashboard" \
--dashboard-primary-color="#667eea"
Programmatic Configuration
# conftest.py
from pytest_html_dashboard import ReporterConfig, BrandingConfig
def pytest_configure(config):
branding = BrandingConfig(
company_name="My Company",
report_title="Custom Dashboard",
primary_color="#667eea"
)
reporter_config = ReporterConfig(branding=branding)
config._dashboard_config = reporter_config
๐ Configuration Options
Branding
| Option | Default | Description |
|---|---|---|
company_name |
"Test Automation Framework" | Your company/project name |
report_title |
"Test Execution Dashboard" | Report header title |
logo_url |
None | Logo image (URL or base64) |
primary_color |
"#004488" | Primary theme color |
secondary_color |
"#0066CC" | Secondary theme color |
success_color |
"#4CAF50" | Success indicator color |
failure_color |
"#f44336" | Failure indicator color |
Charts
| Option | Default | Description |
|---|---|---|
enable_charts |
true | Enable/disable charts |
chart_height |
300 | Chart height in pixels |
chart_animation |
true | Animated chart transitions |
show_pass_rate_chart |
true | Display pass rate visualization |
show_status_distribution_chart |
true | Display status breakdown |
Report Features
| Option | Default | Description |
|---|---|---|
enable_enhanced_reporting |
true | Enable all enhanced features |
enable_error_classification |
true | Categorize and analyze errors |
enable_comprehensive_table |
true | Show detailed test table |
max_error_message_length |
100 | Truncate long error messages |
show_timestamps |
true | Display test execution times |
show_duration |
true | Show test durations |
๐ฏ CI/CD Integration
GitHub Actions
- name: Run tests
run: pytest --html=report.html --self-contained-html
- name: Upload report
uses: actions/upload-artifact@v3
with:
name: test-report
path: report.html
Jenkins
pipeline {
stages {
stage('Test') {
steps {
sh 'pytest --html=report.html --self-contained-html'
}
}
}
post {
always {
publishHTML([
reportDir: '.',
reportFiles: 'report.html',
reportName: 'Test Dashboard'
])
}
}
}
GitLab CI
test:
script:
- pytest --html=report.html --self-contained-html
artifacts:
when: always
paths:
- report.html
expire_in: 30 days
๐ฆ Examples
The repository contains:
tests/test_dashboard_features.py- Comprehensive test suite demonstrating all featuresconfig/sample_config.yaml- Sample configuration filereports/complete_dashboard_report.html- Sample generated reportexamples/- Additional examples and demos
Run the tests:
pytest tests/test_dashboard_features.py --html=reports/report.html --self-contained-html
๐ What's Enhanced?
Interactive Features
- โ Click column headers to sort table data
- โ Filter tests by status (passed/failed/skipped)
- โ Filter by error category
- โ Search tests by name
- โ Click "View Error" buttons for detailed error information
- โ Hover over charts for detailed statistics
Visual Enhancements
- โ Modern gradient backgrounds
- โ Animated charts with data labels
- โ Color-coded test status indicators
- โ Responsive layout for mobile devices
- โ Professional typography and spacing
- โ Sticky table headers for easy navigation
Error Intelligence
Automatically categorizes errors into:
- ๐ด Assertion Failures - Test logic issues
- โฑ๏ธ Timeout Errors - Performance problems
- ๐ Connection Errors - Network/API issues
- โ๏ธ Configuration Errors - Setup problems
- ๐ฆ Import Errors - Dependency issues
- ๐ Runtime Errors - Execution failures
Each error includes:
- Error type and message
- Full stack trace
- Suggested remediation steps
- Context and timestamp
๐ Comparison with pytest-html
| Feature | pytest-html | pytest-html-dashboard |
|---|---|---|
| Basic HTML reports | โ | โ |
| Interactive charts | โ | โ |
| Error classification | โ | โ |
| Custom branding | Limited | โ Full |
| Filter & sort | โ | โ |
| Suggested actions | โ | โ |
| Mobile responsive | Partial | โ Full |
| Configuration | Limited | โ Extensive |
๐ ๏ธ Development
Setup
git clone https://github.com/nireshs/pytest-html-dashboard.git
cd pytest-html-dashboard
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[dev]"
Run Tests
pytest tests/ --cov=pytest_html_dashboard --cov-report=html
Build Package
python -m build
๐ค Contributing
Contributions welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes with tests
- Submit a pull request
๐ License
MIT License - see LICENSE file for details.
๐ Credits
- Built on pytest and pytest-html
- Charts by Chart.js
- Modern design inspired by contemporary dashboard UIs
๐ฎ Support
- ๐ง Email: niresh.shanmugam@gmail.com
- ๐ Issues: GitHub Issues
- ๐ฌ Discussions: GitHub Discussions
๐บ๏ธ Roadmap
- Historical test trend analysis โ v1.2.0
- Real-time test execution dashboard โ v1.2.0
- AI-powered error analysis โ v1.2.0
- Test comparison between runs
- PDF export capability
- Additional chart types (bar, line, scatter)
- Custom theme marketplace
- Integration with test management tools
๐ v1.2.0 Features
๐ Historical Tracking
Track test results over time with SQLite database storage:
- Automatic tracking of all test runs with
--enable-history - Trend analysis showing pass rate changes, duration trends
- Flaky test detection identifies tests with inconsistent behavior
- Database storage with configurable path (
--history-db PATH)
pytest --enable-history --html=report.html
๐ค AI Error Analysis
Intelligent error pattern detection and suggestions:
- Pattern-based analysis (local, no API key required)
- Error categorization by type (AssertionError, TypeError, etc.)
- Actionable insights with root cause, quick fixes, prevention tips
- Optional AI providers (OpenAI, Anthropic) for deeper analysis
# Local analysis (default)
pytest --html=report.html
# With OpenAI
pytest --ai-provider=openai --ai-api-key=sk-... --html=report.html
๐ก Real-Time Dashboard
Live test execution monitoring via WebSocket:
- WebSocket server on port 8888 (configurable)
- Live updates as tests execute
- Session events (start, test results, finish)
- Clean lifecycle management with automatic startup/shutdown
pytest --realtime-dashboard --html=report.html
๐ฏ All Features Combined
pytest --enable-history --realtime-dashboard --html=report.html
๐ v1.2.0 Configuration Options
Historical Tracking
| Flag | Description | Default |
|---|---|---|
--enable-history |
Enable historical tracking | False |
--disable-history |
Disable historical tracking | - |
--history-db PATH |
Custom database path | test-history.db |
Real-Time Dashboard
| Flag | Description | Default |
|---|---|---|
--realtime-dashboard |
Enable WebSocket server | False |
--realtime-port PORT |
WebSocket port | 8888 |
AI Analysis
| Flag | Description | Default |
|---|---|---|
--ai-provider PROVIDER |
AI provider (local/openai/anthropic) | local |
--ai-api-key KEY |
API key for external AI providers | - |
YAML Configuration (v1.2.0)
historical:
enable_tracking: true
database_path: "test-history.db"
show_trends: true
flaky_detection: true
retention_days: 90
realtime:
enable_realtime: false
websocket_port: 8888
poll_interval: 1.0
ai:
enable_ai_analysis: true
provider: "local" # or "openai", "anthropic"
api_key: ""
pattern_matching: true
๐ Performance Impact
| Feature | Overhead | Impact |
|---|---|---|
| Historical Tracking | ~5-10ms per test run | Minimal |
| AI Pattern Analysis | ~50-100ms total | Low |
| Real-Time WebSocket | ~1-2ms per test | Very Low |
| Total | <1% of test time | Negligible |
๐ Changelog
v1.2.0 (2025-11-24)
- ๐๏ธ Historical Tracking: SQLite database for test trends and flaky detection
- ๐ค AI Error Analysis: Pattern-based error detection with actionable insights
- ๐ก Real-Time Dashboard: WebSocket server for live test monitoring
- ๐ฏ CLI Options: Complete command-line control for all features
- โ๏ธ Config Override: CLI flags override config file settings
- ๐ Trend Visualization: Historical pass rate and duration charts
- ๐ Flaky Detection: Automatic identification of inconsistent tests
v1.1.0 (2025-11-22)
- โจ Complete dashboard enhancement system
- ๐ Interactive Chart.js visualizations
- ๐จ Modern gradient styling with responsive design
- ๐ Intelligent error classification
- โ๏ธ Comprehensive configuration system
- ๐ Enhanced test tables with filter/sort
- ๐ Automatic enhancement via pytest hooks
โญ Star us on GitHub if you find this useful! โญ
Made with โค๏ธ for the pytest community
Project details
Release history Release notifications | RSS feed
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_html_dashboard-1.2.0.tar.gz.
File metadata
- Download URL: pytest_html_dashboard-1.2.0.tar.gz
- Upload date:
- Size: 53.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aac9a07a331532337eb353ff42d6ca28ac81f679fdabd760fd3a91c38b4d9a54
|
|
| MD5 |
2cf06fe08bf77640c3b8f880f8afb6aa
|
|
| BLAKE2b-256 |
283b0ba4bc5562996515f74f49c129171b4fe9aaf2ac8df460afee1aac462187
|
Provenance
The following attestation bundles were made for pytest_html_dashboard-1.2.0.tar.gz:
Publisher:
publish.yml on nireshs/pytest-html-dashboard
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pytest_html_dashboard-1.2.0.tar.gz -
Subject digest:
aac9a07a331532337eb353ff42d6ca28ac81f679fdabd760fd3a91c38b4d9a54 - Sigstore transparency entry: 720343526
- Sigstore integration time:
-
Permalink:
nireshs/pytest-html-dashboard@35a0a0df394de4af7d4ce44590689e3f8f7e1f95 -
Branch / Tag:
refs/tags/v1.2.0 - Owner: https://github.com/nireshs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@35a0a0df394de4af7d4ce44590689e3f8f7e1f95 -
Trigger Event:
release
-
Statement type:
File details
Details for the file pytest_html_dashboard-1.2.0-py3-none-any.whl.
File metadata
- Download URL: pytest_html_dashboard-1.2.0-py3-none-any.whl
- Upload date:
- Size: 49.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2f32ef501b64bd8895dcb09a91214a73c59f218a03f5eda41815d3c73f5e138e
|
|
| MD5 |
5d9979681b5f1077b6d310d77db67c1d
|
|
| BLAKE2b-256 |
86260f1880e7d03090b2377a56395c61ce4a187c695c0253b71d25636b9ae417
|
Provenance
The following attestation bundles were made for pytest_html_dashboard-1.2.0-py3-none-any.whl:
Publisher:
publish.yml on nireshs/pytest-html-dashboard
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pytest_html_dashboard-1.2.0-py3-none-any.whl -
Subject digest:
2f32ef501b64bd8895dcb09a91214a73c59f218a03f5eda41815d3c73f5e138e - Sigstore transparency entry: 720343539
- Sigstore integration time:
-
Permalink:
nireshs/pytest-html-dashboard@35a0a0df394de4af7d4ce44590689e3f8f7e1f95 -
Branch / Tag:
refs/tags/v1.2.0 - Owner: https://github.com/nireshs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@35a0a0df394de4af7d4ce44590689e3f8f7e1f95 -
Trigger Event:
release
-
Statement type: