Recording of the visual regression run on readshuman.com · ReadsHuman — app walkthrough.

In this video· click a step to jump to it

R
Passed ✓

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) ──────────────────────────────────
+98 more lines — claim the test to get the full code.

Checks run

Run
✓
Visual
44.01%
Text
—
DOM
✓
Network
+104 −78
Console
✓
A11y
A
Perf
✓
URL
✓
Variables
—
Full report
Log in →
50,660
Diff px
1m 12s
Duration
A
Accessible
WCAG 2.2 · 94
A
Fast
Web Vitals · 100

Notes from the demo run

AI-generated

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

Highlights
  • The edit table is the product
    Your 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 dashboard
    The 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.
Friction points
  • Output mode persists across sessions, silently
    Our 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 404
    Only /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.
Couldn't reach
  • /em-dash-remover·Covered by /check, which exercises the same client-side pattern engine

9 visual changes

Step 3138 px changed
Before
Before
After
After
Diff
Diff
Step 4138 px changed
Before
Before
After
After
Diff
Diff
Step 5138 px changed
Before
Before
After
After
Diff
Diff
Step 67,750 px changed
Before
Before
After
After
Diff
Diff
Step 77,750 px changed
Before
Before
After
After
Diff
Diff
Step 827,960 px changed
Before
Before
After
After
Diff
Diff
Step 112,262 px changed
Before
Before
After
After
Diff
Diff
Step 122,262 px changed
Before
Before
After
After
Diff
Diff
Step 132,262 px changed
Before
Before
After
After
Diff
Diff

Share this run

Earned · Lastest awards

Proof your app is not AI slop

LASTEST
starter
regressions
0
Badges stay live, ratchet upward, only downgrade on confirmed regression.
57,275 test runs recorded · 1,164 products tested with Lastest

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.