Recording of the visual regression run on mixchefai.com · MixChefAI — AI recipe studio walkthrough.

In this video· click a step to jump to it

M
Passed

Test recording

MixChefAI — AI recipe studio walkthrough

112,261 ms · 2,363,090 pixels changed

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

Take this test with you

This is a real Playwright test, recorded against mixchefai.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 = (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); })()";

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

  stepLogger.log('Scenario 1: MixChefAI studio, signed in with credits');
  await page.goto(baseUrl + '/index.html', { waitUntil: 'domcontentloaded' });
  await page.waitForTimeout(3500);
  await page.screenshot({ path: shot(1, 'studio-signed-in'), fullPage: true });

  stepLogger.log('Scenario 2: Fill the pantry with staples and spices');
+67 more lines claim the test to get the full code.

Checks run

Run
Visual
46.90%
Text
DOM
Network
+48 −2052
Console
A11y
A
Perf
1644 over
URL
Variables
Full report
Log in →
2,363,090
Diff px
1m 52s
Duration
A
Accessible
WCAG 2.2 · 100
Review
Fast
Web Vitals

Notes from the demo run

AI-generated

We signed up for MixChefAI with email and password, landed straight in the studio with credits, and ran your actual generate flow on camera: pantry staples, cooking equipment, cuisine, exclusions, then four fridge ingredients into the studio bar. Twenty seconds later the recording shows three complete plated Italian recipes with macros, timings, numbered method and a kitchen advisory each. We then walked the recipe library, account overview, subscription and preferences.

Highlights
  • Signup to first result with nothing in the way
    Email plus password, no verification gate, no onboarding wizard, straight into the studio with 10 credits. We generated a real recipe within a minute of creating the account. In 2026 that is genuinely rare and it is your strongest asset.
  • The output is a real recipe, not a blob of text
    Each result carries calories, protein, carbs, fat, cook time, an ingredient tag row, numbered method steps with the timings highlighted, and a Kitchen Advisory explaining the technique. Three variations per generation gives a real choice.
  • Constraints are first-class, not buried in a prompt
    Pantry, equipment, country, category and exclusions are separate fields above the ingredient bar. Telling the model you only have an oven and a cast iron pan, and that shellfish is out, is a form field rather than prompt-engineering.
  • 500-recipe library covers the cold start
    The library gives a new account something to browse before spending a credit, which softens the empty-cookbook problem most generative tools have on day one.
Friction points
  • Credits burn before you understand the cost
    Our first generation dropped the balance from 10 to 9 with no confirmation, and Advanced Mode is labelled 2 CREDITS while standard generation is not labelled at all. Showing the cost on the GENERATE RECIPES button itself would stop the first-time user feeling they spent something without being asked.
  • Two of three result images stayed on Rendering visual
    In our run the first recipe rendered its plated photo but the other two still showed a Rendering visual placeholder when the result settled, and the page kept a Plating and garnishing for the photo pass banner. The text was complete and usable, so streaming the cards in as each image finishes would read better than three cards where two look broken.

12 visual changes

Step 115 px changed
Before
Before
After
After
Diff
Diff
Step 215 px changed
Before
Before
After
After
Diff
Diff
Step 3771 px changed
Before
Before
After
After
Diff
Diff
Step 4771 px changed
Before
Before
After
After
Diff
Diff
Step 515 px changed
Before
Before
After
After
Diff
Diff
Step 6307,030 px changed
Before
Before
After
After
Diff
Diff
Step 7444,356 px changed
Before
Before
After
After
Diff
Diff
Step 81,591,359 px changed
Before
Before
After
After
Diff
Diff
Step 925 px changed
Before
Before
After
After
Diff
Diff
Step 101,840 px changed
Before
Before
After
After
Diff
Diff
Step 1125 px changed
Before
Before
After
After
Diff
Diff
Step 1216,868 px changed
Before
Before
After
After
Diff
Diff

Share this run

Earned · Lastest awards

Proof your app is not AI slop

LASTEST
starter
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 mixchefai.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.