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

In this video· click a step to jump to it

I
Passed ✓

Test recording

InventList — app walkthrough

137,105 ms · 15,923 pixels changed

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

Take this test with you

This is a real Playwright test, recorded against inventlist.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 = function (n, slug) { return screenshotPath.replace('.png', '-' + n + '-' + slug + '.png'); };
  const ME = '/@lastestviktor';
  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, 1400); await new Promise(r => setTimeout(r, 350)); await anim(max, 0, 800); })()";

  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' });
  await page.route('**/cdn-cgi/scripts/**', function (r) { r.abort(); }).catch(function () {});
  await page.route('**/*sentry*/**', function (r) { r.abort(); }).catch(function () {});
  await page.route('**/*google-analytics*/**', function (r) { r.abort(); }).catch(function () {});

  // ── Scenario 1: public landing (context frame) ─────────────────────────────
  stepLogger.log('Scenario 1: InventList landing page');
+128 more lines — claim the test to get the full code.

Checks run

Run
✓
Visual
53.84%
Text
—
DOM
✓
Network
+56 −56
Console
✓
A11y
B
Perf
896 over
URL
✓
Variables
—
Full report
Log in →
15,923
Diff px
2m 17s
Duration
B
Accessible
WCAG 2.2 · 89
Review
Fast
Web Vitals

Notes from the demo run

AI-generated

We signed in to InventList with the passwordless magic link, completed the maker profile, and walked the workspace. The five-pillar loop (Think, Plan, Build, Write, Ship) is a genuinely distinct organising idea, and the maker apps behind it are real tools rather than placeholders: URL to Markdown converted a live page into 6,719 words of LLM-ready Markdown in 784ms with a quality score, and Nodepad accepted a named thinking node that persisted with a Synced indicator. Feed, profile, BuilderCard, ship log, stream and messages all render behind the same Rails session.

Highlights
  • The maker apps actually work
    URL to Markdown returned title, word count, token count, quality percentage, tier and elapsed time alongside the output. Showing tokens is a thoughtful touch for the LLM-context use case you are aiming at.
  • Five-pillar loop gives the workspace a spine
    Think, plan, build, write, ship maps the tools onto a workflow instead of a tool drawer. It is the clearest reason to come back daily.
  • BuilderCard is a distribution loop
    Handing makers a ready Markdown snippet for their GitHub README puts your brand on their profile at zero cost to them.
  • Profile completion is concrete
    33% complete with three named next actions (bio, location, website) beats a generic progress bar.
Friction points
  • The sign-in link lands on a 404
    The magic-link email carries return_to=%2Fusers%2Fsign_up, and after the token is consumed you get dropped on /users/sign_up, which renders your "Lost in Space" 404. The session IS established, so the next click recovers, but the first authenticated page a new maker sees is an error page. Pointing return_to at /onboarding (or /dashboard) is a one-line fix.
  • Sidebar labels do not match their routes
    Products, Series, Apps and Achievements read as top-level but resolve to /browse, /stream?type=series, /tools and /@handle/achievements. Anyone typing or deep-linking /products, /series, /apps or /achievements gets the 404 page. Adding redirects would catch it.
Couldn't reach
  • /feed (Post)·Drafted the status update but never published to your community feed
  • /products, /series, /apps, /achievements·404 - real routes are /browse, /stream?type=series, /tools, /@handle/achievements

10 visual changes

Step 1133 px changed
Before
Before
After
After
Diff
Diff
Step 2332 px changed
Before
Before
After
After
Diff
Diff
Step 31,749 px changed
Before
Before
After
After
Diff
Diff
Step 41,749 px changed
Before
Before
After
After
Diff
Diff
Step 518 px changed
Before
Before
After
After
Diff
Diff
Step 624 px changed
Before
Before
After
After
Diff
Diff
Step 76,729 px changed
Before
Before
After
After
Diff
Diff
Step 82,632 px changed
Before
Before
After
After
Diff
Diff
Step 92,351 px changed
Before
Before
After
After
Diff
Diff
Step 13206 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,226 test runs recorded · 1,151 products tested with Lastest

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