Recording of the visual regression run on dbimg.app · dbimg — app walkthrough.

In this video· click a step to jump to it

D
Passed ✓

Test recording

dbimg — app walkthrough

104,497 ms · 4,844,377 pixels changed

We built this regression test for dbimg.app — it's yours to keep, free.

Take this test with you

This is a real Playwright test, recorded against dbimg.app. 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 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, 1400); await new Promise(r => setTimeout(r, 350)); await anim(max, 0, 800); })()";

  await page.context().setExtraHTTPHeaders({ 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36' });
  await page.route('**/cdn-cgi/scripts/**', function (r) { r.abort(); }).catch(function () {});
  await page.route('**/*sentry-cdn.com/**', function (r) { r.abort(); }).catch(function () {});
  await page.route('**/cdn.segment.com/**', function (r) { r.abort(); }).catch(function () {});

  const findings = [];

  // ── Scenario 1: public home (context only) ────────────────────────────────
+102 more lines — claim the test to get the full code.

Checks run

Run
✓
Visual
90.11%
Text
—
DOM
✓
Network
+1092 −1092
Console
12 new
A11y
A
Perf
768 over
URL
✓
Variables
—
Full report
Log in →
4,844,377
Diff px
1m 44s
Duration
A
Accessible
WCAG 2.2 · 90
Review
Fast
Web Vitals

Notes from the demo run

AI-generated

We registered on dbimg with email + password, clicked your verification link, signed in, and walked the authenticated dashboard and the whole image-tools suite. The signup-to-dashboard path is genuinely quick: the verify link landed in under a minute and returned us to /en/auth/login?verified=1 with a clear 'Email verified! You can now sign in.' banner. Your dashboard tabs (Images / Albums / API Keys / Settings) all switch cleanly and the API Keys panel states the free-plan limits up front. The one thing we would act on today is what your ad slots are serving inside the logged-in dashboard.

Highlights
  • Verify-then-sign-in handoff
    The verification link returns to /auth/login with ?verified=1 and an explicit success banner, so there is no 'did that work?' moment. Many indie products drop you on a blank home page instead.
  • API limits stated before any sales step
    The API Keys tab says 'Free plan: up to 3 API keys, 60 requests/minute per key, 200 requests/day' in plain text. That is exactly the number an evaluating developer is looking for, and you give it without a call or a form.
  • Tools stay client-side and usable on the free tier
    Resize, compress, effects and favicon all run in-browser and remain available while signed in, so the free tier reads as the product rather than a teaser.
Friction points
  • Your ad slot served a fake-prize scam creative inside the authed dashboard
    On our final pass of /en/dashboard, a full-screen interstitial dimmed the whole dashboard and a banner rendered reading 'CONGRATULATIONS — You are the lucky visitor! Click here to get a prize!' with a fake OK button. That is classic malvertising, served to a signed-in user on a product that sells trustworthy permanent links. It is worth pulling the ad network or allow-listing creatives — this one is a direct trust and possibly a security problem, and it does not show on every load, so it is easy to miss.
  • A leveraged-trading ad also renders under the upload empty-state
    A CFD/forex 'Deposit Bonuses' banner sits directly beneath 'Upload your first image' on the authed dashboard. Even setting the scam creative aside, that is the wrong neighbour for a new user's first decision. Gating ads to logged-out pages would fix both issues at once.

12 visual changes

Step 1232,617 px changed
Before
Before
After
After
Diff
Diff
Step 2186,757 px changed
Before
Before
After
After
Diff
Diff
Step 3182,172 px changed
Before
Before
After
After
Diff
Diff
Step 4178,615 px changed
Before
Before
After
After
Diff
Diff
Step 5249,719 px changed
Before
Before
After
After
Diff
Diff
Step 6838,119 px changed
Before
Before
After
After
Diff
Diff
Step 7852,717 px changed
Before
Before
After
After
Diff
Diff
Step 8193,379 px changed
Before
Before
After
After
Diff
Diff
Step 9164,973 px changed
Before
Before
After
After
Diff
Diff
Step 1080,184 px changed
Before
Before
After
After
Diff
Diff
Step 111,349,947 px changed
Before
Before
After
After
Diff
Diff
Step 12335,178 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,226 test runs recorded · 1,151 products tested with Lastest

This test was built for dbimg.app — 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.