Skip to main content

Beautiful dashboard-style HTML reports for pytest with charts, error analysis, and visual insights

Project description

pytest-html-dashboard

PyPI version Python versions License: MIT

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

Dashboard Report Preview

๐Ÿ”— View Live Interactive Report โ† Click to see charts, filters, and interactive features!

Or download and open locally

โœจ 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 features
  • config/sample_config.yaml - Sample configuration file
  • reports/complete_dashboard_report.html - Sample generated report
  • examples/ - 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:

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes with tests
  4. Submit a pull request

๐Ÿ“ License

MIT License - see LICENSE file for details.

๐Ÿ™ Credits

๐Ÿ“ฎ Support

๐Ÿ—บ๏ธ 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pytest_html_dashboard-1.2.0.tar.gz (53.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pytest_html_dashboard-1.2.0-py3-none-any.whl (49.8 kB view details)

Uploaded Python 3

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

Hashes for pytest_html_dashboard-1.2.0.tar.gz
Algorithm Hash digest
SHA256 aac9a07a331532337eb353ff42d6ca28ac81f679fdabd760fd3a91c38b4d9a54
MD5 2cf06fe08bf77640c3b8f880f8afb6aa
BLAKE2b-256 283b0ba4bc5562996515f74f49c129171b4fe9aaf2ac8df460afee1aac462187

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytest_html_dashboard-1.2.0.tar.gz:

Publisher: publish.yml on nireshs/pytest-html-dashboard

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pytest_html_dashboard-1.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pytest_html_dashboard-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2f32ef501b64bd8895dcb09a91214a73c59f218a03f5eda41815d3c73f5e138e
MD5 5d9979681b5f1077b6d310d77db67c1d
BLAKE2b-256 86260f1880e7d03090b2377a56395c61ce4a187c695c0253b71d25636b9ae417

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page