Skip to content

nireshs/pytest-html-dashboard

Repository files navigation

pytest-html-dashboard

PyPI version Python versions Downloads License: MIT GitHub stars

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

About

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

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published