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.

Automation Test Platform screenshot

What it does

  1. 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.
  2. 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.
  3. 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.
  4. Runs in parallel. The same suite against two sites, or two frameworks against one site, run at once. Cancel stops the whole process tree.
  5. 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.
  6. Shareable reports. HTML and PDF reports for any run.
  7. 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
  1. 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.

  2. 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.