In this video· click a step to jump to it
Test recording
ReadsHuman — app walkthrough
71,957 ms · 50,660 pixels changed
We built this regression test for readshuman.com — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against readshuman.com. Claim it into your own workspace and re-run it on every deploy — free.
export async function test(page, baseUrl, screenshotPath, stepLogger) {
const shot = (n, slug) => screenshotPath.replace('.png', '-' + n + '-' + slug + '.png');
const UA = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36';
const SCROLL_THROUGH = "(async () => { const ease = t => 1 - Math.pow(1 - t, 3); const max = Math.max(0, document.body.scrollHeight - window.innerHeight); if (max < 40) return; const anim = (a, b, ms) => new Promise(res => { const t0 = performance.now(); const step = now => { const p = Math.min(1, (now - t0) / ms); window.scrollTo(0, a + (b - a) * ease(p)); p < 1 ? requestAnimationFrame(step) : res(); }; requestAnimationFrame(step); }); await anim(0, max, 1200); await new Promise(r => setTimeout(r, 300)); await anim(max, 0, 700); })()";
const DRAFT = 'In today\'s fast-paced digital landscape, it is not merely about shipping features but about delivering genuine value. Research shows that teams who embrace a culture of continuous improvement unlock unprecedented levels of productivity. Moreover, the ability to leverage cutting-edge tooling is a testament to engineering maturity.';
await page.context().setExtraHTTPHeaders({ 'User-Agent': UA });
for (const pattern of ['**/cdn-cgi/scripts/**/email-decode.min.js', '**/sentry-cdn.com/**', '**/cdn.segment.com/**', '**/connect.facebook.net/**', '**/www.googletagmanager.com/**']) {
await page.route(pattern, function (r) { r.abort(); }).catch(function () {});
}
// ─── Scenario 1: public home (context) ──────────────────────────────────Checks run
Notes from the demo run
AI-generatedWe signed into ReadsHuman with a magic link and drove the editor end to end: mode switch, your built-in example, two real rewrites, the in-browser checker and the account page. The thing that stands out is that the rewrite is auditable — every cut is listed with the pattern it matched and a one-line reason, so the user can put a change back. That is a materially different promise from the usual humanizer black box, and it is the screenshot worth putting at the top of your landing page.
- The edit table is the productYour Essay rewrite produced 5 edits, each labelled (Not X but Y, Overused AI words, Borrowed authority, Inflated significance) with a why. Most competitors return a blob of replacement text; yours shows its work.
- Free checker needs no account/check runs entirely client-side and marks tells as you type. A visitor gets real value before the signup gate, which is rare and worth leading with.
- Magic link landed on /write, not a dashboardThe auth callback carries next=/write, so a new user lands inside the editor with the cursor where it belongs instead of on an empty home screen.
- Quota is legible'1,500 words left on Free' sits above the editor and decrements visibly per rewrite (250 words each). No hunting through settings to find out what is left.
- Output mode persists across sessions, silentlyOur second session opened with 'Article' pre-selected from the previous one, with no cue that a sticky choice was applied. A small 'last used' label on the active chip would stop a user rewriting a LinkedIn post as an article without noticing.
- /signup and /register both 404Only /login exists. Anyone typing the habitual URL, or following a stale link, hits a 404 rather than your sign-in. A two-line redirect in next.config.js fixes it.
- /em-dash-remover·Covered by /check, which exercises the same client-side pattern engine
9 visual changes
Share this run
Proof your app is not AI slop
This test was built for readshuman.com — claim it free
One click copies the test and baseline screenshots into your own Lastest workspace. Re-run on every deploy and catch regressions before your users do — free, no card required.


























