QA platform
Automation Test Platform
The QA tooling I always wanted. It runs end-to-end suites, shows every test live and keeps the history, without ever modifying the suites.

What it does
- Three frameworks, one live view. Playwright, Cypress and Selenium suites run from the same dashboard. Each target gets a live card with a progress bar, pass/fail/skip counts and failures as they happen.
- Any suite against any site. A suite says how to run, a site says where. Pick any registered site from a dropdown on the suite's row.
- Test a pull request in one step. Paste a GitHub PR link and it builds that plugin or theme, installs it on a local WordPress site and lets you run any suite against it.
- Runs in parallel. The same suite against two sites, or two frameworks against one site, run at once. Cancel stops the whole process tree.
- Scheduled runs and full history. Cron schedules fire while the dashboard runs, and every run is kept, filterable by site and framework, with links to its reports.
- Shareable reports. HTML and PDF reports for any run.
- Behind a login. The dashboard, API, reports and live streams all need a session, with roles for who can do what.
How it was built
I write Playwright suites for a living, and every framework came with its own runner, reports and history. On my own time I built the one dashboard I wanted: run Playwright, Cypress and Selenium suites against any site, without changing the suites.
Decisions that mattered
- Suites times sites. A suite says how to run and a site says where. Every suite gets the base URL and admin credentials as environment variables, so any suite can target any registered site.
- Adapters that admit their limits. Where a framework can't do something, the dashboard says so instead of faking it. Cypress has no command-line title filter, so a keyword filter is ignored for it, with a warning, rather than quietly running more tests than you asked for.
- Hardened before going public. A security pass on 20 August 2026 blocked environment injection into the processes it starts, encrypted stored site passwords with AES-256-GCM and bound the server to localhost by default.
Where it stands
Runs on your own machine, behind a login with roles. The source is public.
Made with
- Node.js
- Express
- Playwright
- Cypress
- Selenium
Latest changes
Full changelog-
Security hardening
An audit of how the dashboard stores user accounts and site passwords, ahead of open-sourcing it. Everything below is fixed; the through-line is that the app now assumes it may be hosted on a public domain rather than sitting on one laptop.
-
Run pacing, per-site control, and a combined report
Three problems surfaced running the full 11-product suite from the dashboard, plus a reporting gap. This release addresses all four.