Skip to content

feat: add shinyloadtest report subcommand#3

Merged
gadenbuie merged 8 commits intomainfrom
feat/report
Mar 20, 2026
Merged

feat: add shinyloadtest report subcommand#3
gadenbuie merged 8 commits intomainfrom
feat/report

Conversation

@gadenbuie
Copy link
Collaborator

@gadenbuie gadenbuie commented Mar 18, 2026

Summary

Adds a shinyloadtest report subcommand that generates performance reports from load test output, porting the reporting features from the R shinyloadtest package.

What's included

  • CLI: shinyloadtest report [dirs...] [options]
    • Auto-detects test-logs-* dirs in CWD if none specified
    • --format html|text|json (default: html)
    • Serves report on localhost by default; --output saves to file
    • --no-open to skip opening the browser
  • HTML Dashboard: Self-contained interactive report with Observable Plot + D3
    • 6 sections: Sessions Gantt, Session Duration, Event Waterfall, Latency, Event Duration, Event Concurrency
    • Light/dark mode, responsive layout, URL state
    • Run selector for multi-run comparisons
  • Text format: Markdown tables for terminal/CI use
  • JSON format: Machine-readable output for custom analysis
  • Docs: README and NEWS updated with report documentation

Architecture

  • src/report/load.ts — data loading from CSV + recording
  • src/report/stats.ts — server-side stat computation
  • src/report/report.ts — orchestrator (serve/save)
  • src/report/format-text.ts — Markdown table formatter
  • src/report/format-json.ts — JSON formatter
  • src/report/template.ts — HTML embedding
  • src/report/app/ — Vite-built browser app

Verification

# From a directory with test output
shinyloadtest report

# Save HTML to file
shinyloadtest report --output report.html

# Markdown tables for terminal/CI
shinyloadtest report --format text

# Machine-readable JSON
shinyloadtest report --format json

@gadenbuie gadenbuie marked this pull request as ready for review March 20, 2026 17:18
@gadenbuie gadenbuie merged commit 1304126 into main Mar 20, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant