TestVerse automates an e-commerce app end to end - UI through page objects, API through a schema-checked client - and records every run, so the dashboard can tell a flaky test from a real regression before anyone has to guess.
Latest run 2026-11-11 08:59 UTC on chromium, firefox. Same history the dashboard reads.
Sixteen Playwright tests across login, inventory, cart and checkout. Tests call page methods, never selectors; a session-scoped browser and a fresh context per test make pytest -n auto safe. Headless by default, HEADED=1 to watch.
Twelve tests over a reusable requests client: status codes, JSON Schema validation of every response shape, a response-time SLA, and negative cases. Ten times faster than the UI, and it says where something broke, not just that it did.
GitHub Actions runs both layers in parallel on every push, nightly on two engines, and uploads reports and traces. A pytest plugin records each run; the dashboard turns the history into trends, flakiness and insights, published to this site.
SCREENSHOT=retain-on-failure TRACE=retain-on-failure VIDEO=retain-on-failure
A failing test keeps its full-page screenshot, Playwright trace and video. A passing one keeps nothing.
reports/report.html
Each artifact is linked into that test's row of the HTML report. Open the trace to step through every action, DOM snapshot and network call.
reports/history/<run>.json
Outcome, the phase that failed, duration, message and artifact paths - written by utils/results_plugin.py for every run.
flipped 3 times in 10 runs vs. failed 3 runs in a row
The dashboard reads the history and says which it is: flaky, or a regression. The rule is shown next to every insight.
python -m pytest -m smoke # the critical path, 11 tests python -m pytest -n 4 # the whole suite, four workers docker run --rm testverse -m smoke # same suite, any machine