Recording of the visual regression run on rekroots.com · rekroots — marketing + sign-in + full authed dashboard walk (Overview / Jobs / Applications / Saved / Resumes / Alerts / Profile / Settings).

In this video· click a step to jump to it

R
Passed ✓

Test recording

rekroots — marketing + sign-in + full authed dashboard walk (Overview / Jobs / Applications / Saved / Resumes / Alerts / Profile / Settings)

56,700 ms · 0 pixels changed · matches baseline

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

Take this test with you

This is a real Playwright test, recorded against rekroots.com. Claim it into your own workspace and re-run it on every deploy — free.

export async function test(page, baseUrl, screenshotPath, stepLogger) {
  const EMAIL = '[email protected]';
  const PASSWORD = '•••';
  const SITE = 'https://rekroots.com';

  let __step = 0;
  const shot = async (label) => {
    __step++;
    const tag = String(__step).padStart(2, '0') + '-' + label;
    const p = screenshotPath.replace(/(\.png)?$/, '-' + tag + '.png');
    await page.screenshot({ path: p, fullPage: true });
    stepLogger.log('📸 ' + __step + ': ' + label);
+89 more lines — claim the test to get the full code.

Checks run

Run
✓
Visual
✓
Text
—
DOM
✓
Network
—
Console
✓
A11y
—
Perf
26 over
URL
✓
Variables
—
Full report
Log in →
0
Diff px
57s
Duration
—
Accessible
B
Fast
Web Vitals · 85

Notes from the demo run

AI-generated

Rekroots (rekroots.com, just-launched ~2 hours ago by @coolsodhi on X) is a modern dual-sided job board built with Next.js + better-auth + 4-digit code email verification. Tested by registering via Gmail MCP (lastestcloud+rk<stamp>@gmail.com → verify code → authed account), then logging the test pod into the verified account via better-auth's /api/auth/sign-in/email REST endpoint (Playwright's form .fill() doesn't always trigger the React form's input event reliably enough for better-auth submission). Walked the full authed dashboard: Overview / Browse jobs / Applications / Saved / Resumes / Alerts / Profile / Settings. Real seed data: 4 open roles surfaced ('Oracle Unity Technical Lead / Solution Architect' from TechoTribes, 'Scrum Master', 'Test Engineer', 'React Native Developer'), profile-completion widget, PRIVATE BETA pill.

Highlights
  • Dual-sided role-select wizard is the right primary surface
    /sign-up first asks 'I'm looking for work' or 'I'm hiring' with a one-line value prop on each card. Visitors who arrived from a 'Browse jobs' CTA pick the right path in 2 clicks instead of accidentally creating a recruiter account. Many job boards force you to guess.
  • 4-digit code verify beats magic-link for evaluator UX
    'Four digits. Ten minutes. No links to click.' — faster (no inbox tab switch + click + redirect chain) and more predictable than magic-link-only flows. 3 of the 5 indie SaaS we tested this week use magic-link and lose evaluators at the inbox-tab context switch.
  • Better-auth tag in the footer is a quiet trust signal
    'SECURED BY BETTER AUTH' footer on every auth page tells security-minded visitors which auth library is in use. Engineers recognize it. Most launches hide their auth stack; surfacing it is a small but smart credibility move.
  • Custom 404 page fits the brand
    /signup (the obvious-but-wrong guess) returns a styled 404 'Nothing here' with 'Browse jobs' + 'Go home' CTAs in the same serif as the marketing site. Most launches ship default-Vercel 404s; this one didn't.
  • Real seed data on the authed Overview
    PRIVATE BETA pill is honest, but the Overview isn't just placeholders: 4 actual open roles (Oracle Unity Tech Lead from TechoTribes, Scrum Master, Test Engineer, React Native Dev) make the dashboard feel populated. New visitors see what the product looks like with content from day one.
Friction points
  • /signup returns 404 but is the path everyone tries first
    Common-sense URL guess. /sign-up works; /signup doesn't. Add a redirect (next.config.js redirects: { source: '/signup', destination: '/sign-up', permanent: true }) and pair it with /signin → /sign-in.
  • React form submit via Playwright .fill() doesn't always trigger better-auth
    Our automated test pod (Lastest EB, fresh Playwright per run) filled the email/password form with .fill() and clicked the submit button, but better-auth's form interceptor didn't fire — the redirect to /dashboard happened transiently but the session cookie didn't stick. Workaround: POST directly to /api/auth/sign-in/email. Worth investigating whether the form's onSubmit handler debounces or requires keyboard focus events that .fill() doesn't synthesize.
  • Verify-email gate sticks the session indefinitely
    Once an account is in /verify-email pending state, /sign-out doesn't drop the pending-verify session — users who close the tab before verifying are stuck on /verify-email next visit (any /sign-up/* nav redirects back). Workaround: a POST to /api/auth/sign-out clears it (we used this to redo our test), but exposing a 'Use a different account' link on /verify-email would save users a support email.
  • Username constraint only surfaces in placeholder
    /sign-up/applicant placeholder reads 'lowercase, 3–30 chars'. No inline validation shows a checkmark or rejection as you type. New users who try 'Viktor Demo' as username won't know it'll be rejected until submit. Small lift, big polish gain.

Share this run

Earned · Lastest awards

Proof your app is not AI slop

LASTEST
starter
tests
all passing
regressions
0
Badges stay live, ratchet upward, only downgrade on confirmed regression.
57,604 test runs recorded · 1,174 products tested with Lastest

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