Real-time results
Every test row updates live as it runs — pass, fail, skip. No more waiting for the full suite to finish before you know what broke.
Select exactly what to run
Pick individual tests, whole files, or filter by outcome. Parametrized variants are fully expanded and individually selectable.
Works with your existing setup
pytest-web wraps your existing pytest run. Your conftest.py, fixtures, plugins, and pytest.ini all work exactly as normal.
Parallel runs built in
Set the workers count and pytest-xdist handles the rest. No config changes needed — pytest-web manages the complexity for you.
One-click Allure reports
Generate and serve Allure reports with automatic history tracking. Trend graphs and retry counts work out of the box.
Env var injection
Pass environment variables to your test run directly from the UI. No need to edit .env files or restart your shell.
Why pytest-web?
The pytest terminal is powerful — but when you're iterating on a failing test, hunting through 200 lines of output is slow. pytest-web gives you a visual layer on top of the same pytest you already use.
- No config files or setup — just run pytest-web in your project
- Zero interference with your test suite — it's a thin wrapper, not a framework
- Works with any pytest plugin: Playwright, Django, FastAPI, anyio…
- Counters accumulate across runs — history is preserved until you refresh
- Cancel a run mid-flight and all xdist workers are cleanly terminated
- Fully open source, MIT licensed
$ pip install pytest-web
$ cd your-project
$ pytest-web
__ __ __
____ __ __/ /____ _____/ /_ _ _____ / /_
/ __ / / / / __/ _ / ___/ __/____| | /| / / _ / __ \
/ /_/ / /_/ / /_/ __(__ ) /_/_____/ |/ |/ / __/ /_/ /
/ .___/\__, /\__/\___/____/\__/ |__/|__/\___/_.___/
/_/ /____/
v0.2.3 http://127.0.0.1:8000 (Ctrl+C to stop)