Recording of the visual regression run on app.tallybite.app · Tallybite — app walkthrough.

In this video· click a step to jump to it

A
Passed

Test recording

Tallybite — app walkthrough

119,909 ms · 27,859 pixels changed

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

Take this test with you

This is a real Playwright test, recorded against app.tallybite.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, s) => screenshotPath.replace('.png', '-' + n + '-' + s + '.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); })()";

  const MEALS = ['two scrambled eggs and a slice of wholewheat toast', 'grilled chicken breast with rice and broccoli', 'greek yoghurt with blueberries and honey', 'a tuna sandwich and an apple'];
  const MEAL = MEALS[Date.now() % MEALS.length];

  await page.context().setExtraHTTPHeaders({ 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.0.0 Safari/537.36' });
  const noise = ['**/cdn-cgi/scripts/**/email-decode.min.js', '**/sentry-cdn.com/**', '**/browser.sentry-cdn.com/**', '**/cdn.segment.com/**', '**/connect.facebook.net/**', '**/*posthog*/**', '**/www.googletagmanager.com/**'];
  for (const pattern of noise) {
    await page.route(pattern, function (r) { return r.abort(); }).catch(function () {});
  }
+100 more lines claim the test to get the full code.

Checks run

Run
Visual
75.27%
Text
DOM
Network
Console
A11y
A
Perf
960 over
URL
Variables
Full report
Log in →
27,859
Diff px
2m 00s
Duration
A
Accessible
WCAG 2.2 · 100
C
Fast
Web Vitals · 70

Notes from the demo run

AI-generated

We signed into Tallybite with Google, set targets, then used it the way you designed it: typed meals in plain English, watched the model itemise them against USDA references, and walked Today, Stats, Log and Account. The parsing is genuinely good, it handled 'grilled chicken breast with rice and broccoli' into per-item grams and calories with the matched USDA rows shown. The gap we kept hitting is between the estimate and the day's totals.

Highlights
  • Free text in, USDA-matched card out
    'grilled chicken breast with rice and broccoli' returned a titled card with a USDA SURVEY AVG. badge, the matched source rows, and 468 kcal / 60g protein / 44g carbs / 6g fat. Showing what it matched against is what makes an AI estimate arguable instead of magic.
  • LOG MEAL and REFINE is the right commit model
    When the card renders, nothing is written until the user commits or corrects. For a macro tracker built on estimation that is exactly the trust model users need.
  • Targets are computed and shown live
    Four inputs produced 2697 kcal with protein, carb, fat and fibre splits, updating as we typed, with Mifflin-St Jeor named underneath. Naming the formula earns the number.
Friction points
  • The same request returns two different reply shapes
    Identical-style meal descriptions sometimes return the structured card with a LOG MEAL button and sometimes just prose ending in 'Look right?' with no button at all. On the prose replies there is no way to commit except answering in the chat, so whether a user can log their meal depends on which shape they happen to get.
  • Prose confirmation says logged but nothing reaches Today
    On the prose path we answered 'yes' and the assistant replied 'Logged ✅ — anything else?'. Today still read '0 meals · last logged —' with every macro ring at zero, and the chat header's own 'TODAY SO FAR' stayed at 0 kcal. Reproduced on several separate meals. The success message is the part to fix first, since it tells the user their day is tracked when it is not.

7 visual changes

Step 2296 px changed
Before
Before
After
After
Diff
Diff
Step 31,662 px changed
Before
Before
After
After
Diff
Diff
Step 45,235 px changed
Before
Before
After
After
Diff
Diff
Step 54,382 px changed
Before
Before
After
After
Diff
Diff
Step 716,072 px changed
Before
Before
After
After
Diff
Diff
Step 8207 px changed
Before
Before
After
After
Diff
Diff
Step 95 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,423 test runs recorded · 962 products tested with Lastest

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