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

In this video· click a step to jump to it

M
Passed

Test recording

mockintervew — app walkthrough

57,863 ms · 10,680 pixels changed

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

Take this test with you

This is a real Playwright test, recorded against mockintervew.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 = (i, slug) => screenshotPath.replace('.png', '-' + i + '-' + 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, 1200); await new Promise(r => setTimeout(r, 250)); await anim(max, 0, 700); })()";
  const SITE = 'https://mockintervew.com';

  for (const pattern of ['**/googletagmanager.com/**', '**/google-analytics.com/**', '**/*.posthog.com/**', '**/cdn.segment.com/**', '**/browser.sentry-cdn.com/**']) {
    await page.route(pattern, function (r) { r.abort(); }).catch(function () {});
  }

  // ── POST-LOGIN ACTION 1: authed dashboard ──
  stepLogger.log('Post-login 1: dashboard (authed landing)');
  await page.goto(SITE + '/dashboard', { waitUntil: 'domcontentloaded' }).catch(function () {});
+66 more lines claim the test to get the full code.

Checks run

Run
Visual
29.81%
Text
DOM
Network
+32 −0
Console
A11y
A
Perf
88 over
URL
40 diverged
Variables
Full report
Log in →
10,680
Diff px
58s
Duration
A
Accessible
WCAG 2.2 · 100
C
Fast
Web Vitals · 70

Notes from the demo run

AI-generated

We signed into mockintervew with a fresh account and drove the full loop: onboarding, the dashboard, the three question-set paths on /interview/new, a resume upload, and an interview start. The product reads as genuinely finished for a solo build, the onboarding is six well-paced questions rather than a wall of settings, and the three ways to get a question set (curated role, pasted job description, resume) is a smart structure. The clearest snag is what happens when someone types a role you do not curate yet.

Highlights
  • Three entry paths, one screen
    Curated role, pasted job description, and resume-grounded questions all sit side by side on /interview/new. A candidate never has to guess which one they qualify for.
  • Onboarding respects the user's time
    Six steps, every one skippable, and the resume step explicitly says 'Optional, and you can add it later'. We reached the dashboard in under a minute.
  • Honest empty state
    The dashboard says 'No completed interviews yet' with a direct 'Start your first mock interview' nudge instead of showing fake sample charts.
Friction points
  • Uncurated roles dead-end the primary CTA
    We typed 'Backend Engineer' and pressed Start interview. Instead of an interview we got 'We don't have a question set for Backend Engineer yet'. The recovery panel is good, but the role field accepts free text with no hint that only 14 roles are curated. An autocomplete on the Role input, or a note under it listing the covered roles, would stop the dead-end before the click.
  • Company and question-count reset on that re-render
    After the uncurated-role bounce, the form came back with Company repopulated as 'Backend Engineer' and the count changed from the 5 we set to 6. Preserving what the user typed across that re-render keeps the retry to one click.

3 visual changes

Step 12,924 px changed
Before
Before
After
After
Diff
Diff
Step 63,105 px changed
Before
Before
After
After
Diff
Diff
Step 84,651 px changed
Before
Before
After
After
Diff
Diff

Share this run

Earned · Lastest awards

Proof your app is not AI slop

LASTEST
starter
a11y
WCAG AA
regressions
0
Badges stay live, ratchet upward, only downgrade on confirmed regression.
56,461 test runs recorded · 968 products tested with Lastest

This test was built for mockintervew.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.