Recording of the visual regression run on www.masterys.org · Masterys — Pokemon collection app walkthrough.

In this video· click a step to jump to it

W
Passed

Test recording

Masterys — Pokemon collection app walkthrough

65,663 ms · 15 pixels changed

We built this regression test for www.masterys.org — it's yours to keep, free.

Take this test with you

This is a real Playwright test, recorded against www.masterys.org. 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, 1100); await new Promise(r => setTimeout(r, 250)); await anim(max, 0, 650); })()";
  const TAB = "(t => { const b = [...document.querySelectorAll('button[aria-label]')].find(x => x.getAttribute('aria-label') === t); if (b) b.click(); return !!b; })";

  await page.route(/googletagmanager|google-analytics|posthog|hotjar|clarity\.ms|segment\.io/, function (r) { r.abort().catch(function () {}); });

  stepLogger.log('Scenario 1: Masterys marketing home');
  await page.goto(baseUrl + '/', { waitUntil: 'domcontentloaded' });
  await page.waitForTimeout(3000);
  await page.evaluate(SCROLL_THROUGH).catch(function () {});
  await page.waitForTimeout(500);
+61 more lines claim the test to get the full code.

Checks run

Run
Visual
0.03%
Text
DOM
Network
Console
A11y
A
Perf
URL
Variables
Full report
Log in →
15
Diff px
1m 06s
Duration
A
Accessible
WCAG 2.2 · 99
A
Fast
Web Vitals · 100

Notes from the demo run

AI-generated

We signed into Masterys with Google through your Auth0 tenant and drove eleven authenticated surfaces: the app home, all of Collection (cards, sets, binders, portfolio), the card catalogue, two live searches, Masterys AI and the profile. The catalogue is the standout, 20,474 English printings across 174 sets with market prices attached to every result, and it answers in well under a second.

Highlights
  • Catalogue depth with prices attached
    Searching Charizard returned 108 matches with card art, set name, collector number and a market price on every tile, from $3.15 for the Pokemon GO printing to $501.38 for Base #4. That price-on-the-tile decision is what makes the search actually useful rather than just a lookup.
  • Collection is segmented the way collectors think
    Cards, Sets, Mastery, Binders, Trade, Wishlist and Portfolio as separate views, rather than one flat list with filters. Mastery and Portfolio in particular are the reason someone picks this over a spreadsheet.
  • Legal consent handled once, plainly
    The Terms and Privacy acceptance gate is versioned (2026-09-09 and 2026-09-14) and states it will only reappear on a material change. That is a more honest pattern than a silent re-accept.
  • Empty states teach the next action
    The homepage walks Find the card, Check the card and finish, Add it and track its value as three numbered steps rather than dropping a new account into a blank grid.
Friction points
  • The first-binder modal blocks the whole Collection tab
    Opening Collection on a fresh account throws a Name your first binder modal with no dismiss, no escape and copy that says this step isn't optional. Our first recorded run captured that modal on four consecutive screenshots because there is no way past it. Letting people browse an empty collection, and offering the binder prompt when they add their first card, would remove a wall at the exact moment someone is deciding whether to stay.
  • Search result tiles did not open a card detail
    Clicking a result tile in the Charizard list did not navigate to a card page in our run, even though the page copy says Open a card to inspect its details and decide what to do next. Worth a check, since inspect-then-add is the core loop.

Visual change

Step 1015 px changed
Before
Before
After
After
Diff
Diff

Share this run

Earned · Lastest awards

Proof your app is not AI slop

LASTEST
starter
tests
all passing
a11y
WCAG AA
regressions
0
Badges stay live, ratchet upward, only downgrade on confirmed regression.
56,846 test runs recorded · 1,040 products tested with Lastest

This test was built for www.masterys.org — 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.