clemvault internals shipped October 6, 2026

QA Sweep

A daily Playwright sweep of live apps. Records the errors, tracks what is new and what recovered, and emails only when something changed.

PlaywrightNode.jsResendCloudflare Pages
The public recap: four of Clembot's own apps, counts and names only.
The public recap: four of Clembot's own apps, counts and names only.
The same recap at phone width.
The same recap at phone width.

Every app in this portfolio is deployed by one person, often several times a day, and until this shipped nothing checked any of them afterwards. Breakage was found by a user, or by me on my phone days later. The first real sweep found live bugs in all four apps it was pointed at, including 31 pages on one study site that 404 only when the link to them ends in a slash.

What it does

A Playwright crawler visits each registered app once a day. It discovers pages from the site’s own links, clicks the safe elements on each one from a fresh load, and records the hard errors: uncaught exceptions, console errors, failed requests, blank screens, dead links, and clicks that land on an error page.

Every finding gets a fingerprint built from the app, the route, the element, the kind of error and a normalised message, so the same failure hashes the same way every day. Each run is compared with the last, which makes a finding new, regressed, ongoing, recovered or suppressed. A recovery is only claimed for a check that actually ran again: a run cut short by its time cap carries an unreached failure forward instead of calling it fixed.

Two layers

Safe on a live site

Safety outranks coverage. Elements named buy, pay, checkout, subscribe, delete, share, submit or sign out are never clicked, and neither is an element with no name. Every request except GET, HEAD and OPTIONS is aborted before it leaves the browser, and payment, publishing and analytics hosts are blocked outright. An integration test proves a “Buy now” button is never clicked and its host is never even contacted.

Where it lives

It ships as doorman qa, a command in Clembot Doorman, so anyone can run it on their own apps with their own Playwright: doorman itself keeps zero dependencies. The results feed a launch-readiness gate, where an open finding blocks a go-live. Email goes out through Resend only when something changed, and the public recap shows counts and app names only. Routes, error messages, screenshots and traces stay on the machine that found them.