Skip to content

Test Dashboard

“Yeah, I’m gonna need you to go ahead and come in on Saturday…”

53

Tests Passing


Unit tests covering all 20 tools

99.3%

Torture Test Success


299/301 random Office documents

20%

Code Coverage


Focus on critical paths

1.39s

Test Suite Runtime


Fast feedback loop


We grabbed 301 random Office documents from a real filesystem and threw them at mcwaddams.

FormatTestedPassedFailedSuccess Rate
.docx1421420100%
.xlsx89890100%
.pptx34340100%
.doc18171*94.4%
.xls12120100%
.ppt440100%
.csv211*50%
*Failed files were empty (0 bytes) or corrupt. Not extraction failures.
  • 1,293 resources indexed across all documents
  • Zero crashes — Every file handled gracefully
  • Clear error messages for the 2 failures
  • Average extraction time: 0.045s per document

CategoryCountDescription
Universal Tools12extract_text, extract_images, detect_format, etc.
Word Tools18convert_to_markdown, extract_tables, structure analysis
Excel Tools9analyze_data, extract_formulas, chart generation
MCP Resources8Resource store, URI parsing, format conversion
Validation6File validation, error handling, edge cases
  1. Happy Path — Normal documents extract correctly
  2. Legacy Formats.doc, .xls, .ppt from the basement
  3. Large Documents — Pagination triggers at 25k tokens
  4. Malformed Files — Graceful errors, no crashes
  5. Edge Cases — Empty files, Unicode, special characters
  6. URL Processing — HTTP downloads, caching

Terminal window
# Clone the repo
git clone https://github.com/ryanmalloy/mcwaddams.git
cd mcwaddams
# Install dev dependencies
uv sync --dev
# Run tests
uv run pytest
# With coverage
uv run pytest --cov=mcwaddams
Terminal window
make test # Run tests + generate HTML dashboard
make test-pytest # Just pytest, no dashboard
make view-dashboard # Open the HTML report

We built a visual test dashboard because staring at pytest output gets old.

Features:

  • Pass/fail stats at a glance
  • Expandable test details
  • MS Office-inspired theme (Word blue, Excel green, PowerPoint orange)
  • Detailed I/O for debugging

Our coverage is 20% — and that’s intentional.

We focus on:

  • Critical extraction paths — The code that touches your documents
  • Error handling — Making sure failures are graceful
  • Edge cases — The weird stuff that breaks other tools

We don’t test:

  • Boilerplate and configuration
  • Third-party library internals
  • UI/formatting code

Every push triggers:

  1. Lintruff check
  2. Formatblack --check
  3. Type Checkmypy
  4. Testspytest with coverage
  5. Build — Verify package builds

“I could set the building on fire…”

But we’d rather just run the tests.
🎉

Flair Earned!

Badge Name

🎖️

You earned your first flair!

What should we call you?