-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Summary
The current terminal UI provides functional progress reporting but could be enhanced for a better user experience during long-running mutation testing sessions.
Current State
The TUI is event-driven with a background tokio render task (src/progress/):
- Render modes: Fancy (TTY default with progress bar + spinner), Plain (no color/overwrite), Verbose (per-mutant lines), Quiet (suppress all)
- Progress bar: Shows
[#>-] pos/len mutants (ETA remaining)usingindicatif - Phase display: Animated spinner (⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏) during coverage/generation phases, checkmark on completion
- Per-mutant output (verbose mode): Colored status + file + line + mutator + original → mutated text
- Final summary: Scoreboard with killed/survived/timeouts/errors/no_coverage counts
Suggested Improvements
Real-time statistics panel
- Show live operator-level kill rates as mutations run
- Show per-file progress (e.g., "file 3/12: src/auth/login.py")
- Display running mutation score that updates as results arrive
Interactive mode
- Pause/resume capability (Ctrl+Z or
pkey) - Cancel with summary (currently Ctrl+C stops but could show partial results more prominently)
- Allow filtering/focusing on specific files mid-run
Better ETA estimation
- Use per-mutant timing history for more accurate ETA
- Show throughput (mutants/second)
Multi-line layout
- Dedicated sections for: current phase, progress bar, recent results, live stats
- Use
ratatuior similar for a richer multi-panel layout
Log file support
- Option to write detailed per-mutant results to a log file while showing summary on screen
- Useful for CI where you want both a clean output and full details
Implementation
Key files:
src/progress/reporter.rs—ProgressReporter(event sender)src/progress/event.rs— event typessrc/progress/render.rs— render loopsrc/progress/style.rs— colors and formatting
Currently uses console + indicatif crates.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request