In this video· click a step to jump to it
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) ────────────────────────────────Checks run
Notes from the demo run
AI-generatedWe 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.
- Verify-then-sign-in handoffThe 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 stepThe 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 tierResize, 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.
- Your ad slot served a fake-prize scam creative inside the authed dashboardOn 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-stateA 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
Share this run
Proof your app is not AI slop
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.



































