TTestVerse
Playwright + Pytest

A test suite that
keeps its own score.

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.

Checkout -n auto trace.zip logininventorycartcheckoutruns
Live numbers

From the latest run on main

44
tests in the suite
100.0%
latest pass rate
0
failed in latest run
2.12 s
median test
56
runs recorded
19
green runs in a row

Latest run 2026-11-11 08:59 UTC on chromium, firefox. Same history the dashboard reads.

What is inside

Three layers, one repository

01

Page-object UI suite

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.

02

API contract layer

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.

03

CI and analytics

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.

How a failure is handled

From red test to root cause

Captured

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.

Linked

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.

Recorded

reports/history/<run>.json

Outcome, the phase that failed, duration, message and artifact paths - written by utils/results_plugin.py for every run.

Explained

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.

Run it

Three commands

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