pytest-deck

An interactive browser dashboard for pytest.

Collect your suite as a foldable file → class → test tree, pick what to run with checkboxes or clickable marker chips, hit ▶ Run, and watch PASS / FAIL / ERROR / SKIP results stream in test by test. Tracebacks and captured output are one click away.

$ pip install pytest-deck
$ pytest --deck

Installing is inert until you pass --deck. Ordinary pytest runs are completely unaffected.

Why pytest-deck

Its defining promise: a deck run matches a real command-line pytest run. Every collect, reload, and run happens in a fresh python -m pytest subprocess, never in-process. What you see in the browser is exactly what you’d get in the terminal, and a crashing or hanging test can’t take the dashboard down with it.

🌳 Browse

Your suite as a foldable file → class → test → parametrized-variant tree, with live rollup counts on every group.

🎯 Select

Checkboxes for individual tests or whole groups, clickable marker chips that bulk-select every matching test, and -k / -m expression fields to narrow further.

▶️ Run live

Hit ▶ Run and watch PASS / FAIL / ERROR / SKIP fill in as each test finishes, streamed over Server-Sent Events. Click any result for the traceback and captured output.

🔁 Re-collect

Edit your tests and hit ↻ Collect. Added, removed, and changed tests are flagged, and selection plus results are preserved for tests that still exist.

Next steps

Beta software

pytest-deck is pre-1.0 (0.1.1) and under active development. It binds to localhost only, has no authentication, and executes your test code, so don’t expose it on an untrusted network. It also does not support pytest-xdist (runs are serial). See Limitations for details.