In this video· click a step to jump to it
Test recording
LevelUp — app walkthrough
35,017 ms · 295,583 pixels changed
We built this regression test for levelup-tracker-app.vercel.app — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against levelup-tracker-app.vercel.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 EMAIL = '[email protected]';
const PW = 'LevelUpLDp26!';
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); })()";
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' });
const settle = async function () {
await page.waitForLoadState('domcontentloaded').catch(function () {});
await page.waitForLoadState('networkidle', { timeout: 3000 }).catch(function () {});
await page.locator('h1, h2, main').first().waitFor({ state: 'visible', timeout: 5000 }).catch(function () {});Checks run
Notes from the demo run
AI-generatedLevelUp turns habit tracking into an RPG: a clean dark dashboard with an XP/level bar, a weekly check-in chart, a global leaderboard, and a fast create-habit modal where category, difficulty and frequency each map to an XP reward. The game loop is legible within seconds of signing in.
- XP loop is legible instantlyCreating a habit assigns XP by difficulty (Medium = +25 XP) and tags it by category, so a new user understands the reward mechanic on their very first habit, no tutorial needed.
- Live leaderboard on the dashboardThe dashboard surfaces a global leaderboard (Adebare #1, 985 XP, Lvl 10) right under your stats, adding social pull to what is otherwise a solo tracker.
- /auth and /dashboard 404 on direct loadDirect navigation (or a refresh/bookmark) to /auth or /dashboard returns a Vercel 404. There is no SPA catch-all rewrite, so any shared or bookmarked in-app link breaks. A one-line vercel.json rewrite of all paths to index.html fixes it.
- Session does not auto-resumeThe app stores a JWT in localStorage, but landing on / still shows the marketing page with a Log In button rather than resuming the session, so returning users have to log in again.
8 visual changes
Share this run
Proof your app is not AI slop
This test was built for levelup-tracker-app.vercel.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.























