Ryan Malloy 31948d6ffc
Some checks are pending
Test Dashboard / test-and-dashboard (push) Waiting to run
Rename package to mcwaddams
Named for Milton Waddams, who was relocated to the basement with
boxes of legacy documents. He handles the .doc and .xls files from
1997 that nobody else wants to touch.

- Rename package from mcp-office-tools to mcwaddams
- Update author to Ryan Malloy
- Update all imports and references
- Add Office Space themed README narrative
- All 53 tests passing
2026-01-11 11:35:35 -07:00
..
2026-01-11 11:35:35 -07:00

MCP Office Tools - Test Dashboard

Beautiful, interactive HTML dashboard for viewing test results with Microsoft Office-inspired design.

Features

  • MS Office Theme: Modern Microsoft Office 365-inspired design with Fluent Design elements
  • Category-based Organization: Separate results by Word, Excel, PowerPoint, Universal, and Server categories
  • Interactive Filtering: Search and filter tests by name, category, or status
  • Detailed Test Views: Expand any test to see inputs, outputs, errors, and tracebacks
  • Real-time Statistics: Pass/fail rates, duration metrics, and category breakdowns
  • Self-contained: Works offline with no external dependencies

Quick Start

Run All Tests with Dashboard

# Run both pytest and torture tests, generate dashboard, and open in browser
python run_dashboard_tests.py

Run Only Pytest Tests

# Run pytest with dashboard plugin
pytest -p tests.pytest_dashboard_plugin --dashboard-output=reports/test_results.json

# Open dashboard
open reports/test_dashboard.html  # macOS
xdg-open reports/test_dashboard.html  # Linux
start reports/test_dashboard.html  # Windows

View Existing Results

Simply open reports/test_dashboard.html in your browser. The dashboard will automatically load test_results.json from the same directory.

Dashboard Components

Summary Cards

Four main summary cards show:

  • Total Tests: Number of test cases executed
  • Passed: Successful tests with pass rate and progress bar
  • Failed: Tests with errors
  • Duration: Total execution time

Filter Controls

  • Search Box: Filter tests by name, module, or category
  • Category Filters: Filter by Word, Excel, PowerPoint, Universal, or Server
  • Status Filters: Show only passed, failed, or skipped tests

Test Results

Each test displays:

  • Status Icon: Visual indicator (✓ pass, ✗ fail, ⊘ skip)
  • Test Name: Descriptive test name
  • Category Badge: Color-coded category (Word=blue, Excel=green, PowerPoint=orange)
  • Duration: Execution time in milliseconds
  • Expandable Details: Click to view inputs, outputs, errors, and full traceback

File Structure

reports/
├── test_dashboard.html       # Main dashboard (open this in browser)
├── test_results.json         # Generated test data (auto-loaded by dashboard)
├── pytest_results.json       # Intermediate pytest results
└── README.md                 # This file

Design Philosophy

Microsoft Office Color Palette

  • Word Blue: #2B579A - Used for Word-related tests
  • Excel Green: #217346 - Used for Excel-related tests
  • PowerPoint Orange: #D24726 - Used for PowerPoint-related tests
  • Primary Blue: #0078D4 - Accent color (Fluent Design)

Fluent Design Principles

  • Subtle Shadows: Cards have soft shadows for depth
  • Rounded Corners: 8px border radius for modern look
  • Hover Effects: Interactive elements respond to mouse hover
  • Typography: Segoe UI font family (Office standard)
  • Clean Layout: Generous whitespace and clear hierarchy

Integration with CI/CD

GitHub Actions Example

- name: Run Tests with Dashboard
  run: |
    python run_dashboard_tests.py

- name: Upload Test Dashboard
  uses: actions/upload-artifact@v3
  with:
    name: test-dashboard
    path: reports/

GitLab CI Example

test_dashboard:
  script:
    - python run_dashboard_tests.py
  artifacts:
    paths:
      - reports/
    expire_in: 1 week

Customization

Change Dashboard Output Location

# Custom output path for pytest
pytest -p tests.pytest_dashboard_plugin --dashboard-output=custom/path/results.json

Modify Colors

Edit the CSS variables in test_dashboard.html:

:root {
    --word-blue: #2B579A;
    --excel-green: #217346;
    --powerpoint-orange: #D24726;
    /* ... more colors ... */
}

Troubleshooting

Dashboard shows "No Test Results Found"

  • Ensure test_results.json exists in the reports/ directory
  • Run tests first: python run_dashboard_tests.py
  • Check browser console for JSON loading errors

Tests not categorized correctly

  • Categories are determined by test path/name
  • Ensure test files follow naming convention (e.g., test_word_*.py)
  • Edit _categorize_test() in pytest_dashboard_plugin.py to customize

Dashboard doesn't open automatically

  • May require manual browser opening
  • Use the file path printed in terminal
  • Check that webbrowser module is available

Advanced Usage

Extend the Plugin

The pytest plugin can be customized by editing tests/pytest_dashboard_plugin.py:

def _extract_inputs(self, item):
    """Customize how test inputs are extracted"""
    # Your custom logic here
    pass

def _categorize_test(self, item):
    """Customize test categorization"""
    # Your custom logic here
    pass

Add Custom Test Data

The JSON format supports additional fields:

{
  "metadata": { /* your custom metadata */ },
  "summary": { /* summary stats */ },
  "categories": { /* category breakdown */ },
  "tests": [
    {
      "name": "test_name",
      "custom_field": "your_value",
      /* ... standard fields ... */
    }
  ]
}

Contributing

When adding new test categories or features:

  1. Update _categorize_test() in the pytest plugin
  2. Add corresponding color scheme in HTML dashboard CSS
  3. Add filter button in dashboard controls
  4. Update this README with new features

License

Part of the MCP Office Tools project. See main project LICENSE file.