Recording of the visual regression run on app.learnchess.ai · LearnChess — app walkthrough.

In this video· click a step to jump to it

A
Passed ✓

Test recording

LearnChess — app walkthrough

50,416 ms · 1,358,349 pixels changed

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

Take this test with you

This is a real Playwright test, recorded against app.learnchess.ai. 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, 1200); await new Promise(r => setTimeout(r, 300)); 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' });
  for (const pattern of ['**/cdn-cgi/scripts/**/email-decode.min.js', '**/sentry-cdn.com/**', '**/browser.sentry-cdn.com/**', '**/cdn.segment.com/**', '**/connect.facebook.net/**', '**/googletagmanager.com/**']) {
    await page.route(pattern, function (r) { r.abort(); }).catch(function () {});
  }

  // Scenario 1: Dashboard (authed home) - puzzle rating + leaderboard
  stepLogger.log('Scenario 1: Dashboard');
  await page.goto(baseUrl, { waitUntil: 'domcontentloaded' });
+78 more lines — claim the test to get the full code.

Checks run

Run
✓
Visual
100.00%
Text
—
DOM
✓
Network
+20 −20
Console
✓
A11y
B
Perf
160 over
URL
20 diverged
Variables
—
Full report
Log in →
1,358,349
Diff px
50s
Duration
B
Accessible
WCAG 2.2 · 89
B
Fast
Web Vitals · 85

Notes from the demo run

AI-generated

We drove LearnChess signed-in end-to-end: your dashboard leads with a provisional 1200 puzzle rating and a 7-day + all-time leaderboard, and the practice hub fans out into Rated Puzzles, Practice by Theme, History and a Create-Puzzle builder. The rated board ('Find the Best Move') is crisp, with Show Theme / Show Piece hints and a live Score, so a new player always knows what to do next.

Highlights
  • Guided provisional rating
    The dashboard tells a fresh account exactly what to do ('Solve 16 more rated puzzles to establish your rating') instead of showing an empty stat, which is a great first-session nudge.
  • Hint system on the board
    The rated 'Find the Best Move' view offers Show Theme and Show Piece as graded hints plus a Score, so the puzzle teaches rather than just tests.
Friction points
  • Profile-setup banner rides every route
    'Welcome! Complete your profile setup when you're ready' stays pinned across dashboard, practice and board views; a one-time dismiss (or completing it inline) would tidy the in-app chrome.
  • Account usable before email verify
    The session is fully active while emailVerified is still false; worth confirming that's intended before rated scores count toward the public leaderboard.

4 visual changes

Step 1660,569 px changed
Before
Before
After
After
Diff
Diff
Step 318,468 px changed
Before
Before
After
After
Diff
Diff
Step 418,807 px changed
Before
Before
After
After
Diff
Diff
Step 10660,505 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,399 test runs recorded · 1,174 products tested with Lastest

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