Recording of the visual regression run on nagi-note.app · Nagi — PARA notes walkthrough.

In this video· click a step to jump to it

N
Passed ✓

Test recording

Nagi — PARA notes walkthrough

89,821 ms · 110,082 pixels changed

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

Take this test with you

This is a real Playwright test, recorded against nagi-note.app. Claim it into your own workspace and re-run it on every deploy — free.

export async function test(page, baseUrl, screenshotPath, stepLogger) {
  const PROJECT = '/projects/01a0cf0f-500b-7d56-bbdb-923c29542cc9';
  const PARA_NOTE = '/notes/01a0cf0f-62af-7e4a-93b9-66757c727c19';
  const STAMP = Date.now().toString(36);
  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, 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/**/email-decode.min.js', function (r) { r.abort(); }).catch(function () {});
  await page.route('**/sentry-cdn.com/**', function (r) { r.abort(); }).catch(function () {});

  // ─── 1. Public landing ────────────────────────────────────────────────────
+121 more lines — claim the test to get the full code.

Checks run

Run
✓
Visual
68.85%
Text
—
DOM
✓
Network
+1920 −832
Console
✓
A11y
C
Perf
416 drift
URL
544 diverged
Variables
—
Full report
Log in →
110,082
Diff px
1m 30s
Duration
C
Accessible
WCAG 2.2 · 76
A
Fast
Web Vitals · 100

Notes from the demo run

AI-generated

We signed into Nagi with Google, walked the four PARA buckets, read one of your seeded how-to notes, then made a note, wrote into it and tagged it with a colour we invented on the spot. The thing that stands out is how little Nagi asks of you: no workspace wizard, no onboarding tour, and the sample project and two how-to notes are already sitting there doing the explaining. From sign-in to a tagged note took under a minute.

Highlights
  • Sample data that teaches the model
    "Sample: Move to Tokyo" as a Project and "Sample: Home" as an Area is the clearest possible way to show what the Project/Area distinction means. The how-to notes live in Resources, which is itself an example of the rule they describe.
  • Note to tagged note in four clicks
    Note -> title -> Create lands straight in the editor with the cursor ready. Add tag -> New tag -> name + colour -> Create tag applies it immediately. No save button anywhere, and nothing was lost.
  • Local-first, and you can feel it
    Navigating between Projects, Areas, Resources and Tags is instant because it is all reading a local cache. Our tags index updated the moment the tag was created, without a round trip.
Friction points
  • A signed-in session on a new device starts empty
    We replayed a valid session cookie into a fresh browser and Nagi showed "No projects yet" and "Note not found" on a real note URL until the local cache rebuilt. That is the local-first tradeoff, but a second-device visitor or anyone following a shared note link hits it too. A short "syncing your notes" state instead of the empty/not-found copy would stop it reading as data loss.
  • The tag picker shows "No tags yet" before the cache lands
    Same root cause, smaller blast radius: on a cold session the picker offered only "New tag" even though six tags existed server-side. A skeleton row while tags load would keep people from creating duplicates.
Couldn't reach
  • /browse·Linked as a section heading in the sidebar but 404s on direct navigation — we treated it as a label, not a route, and did not screenshot it.

15 visual changes

Step 24,200 px changed
Before
Before
After
After
Diff
Diff
Step 311,834 px changed
Before
Before
After
After
Diff
Diff
Step 44,324 px changed
Before
Before
After
After
Diff
Diff
Step 56,122 px changed
Before
Before
After
After
Diff
Diff
Step 619,497 px changed
Before
Before
After
After
Diff
Diff
Step 76,563 px changed
Before
Before
After
After
Diff
Diff
Step 84,312 px changed
Before
Before
After
After
Diff
Diff
Step 9151 px changed
Before
Before
After
After
Diff
Diff
Step 103,210 px changed
Before
Before
After
After
Diff
Diff
Step 113,210 px changed
Before
Before
After
After
Diff
Diff
Step 129,907 px changed
Before
Before
After
After
Diff
Diff
Step 1322,662 px changed
Before
Before
After
After
Diff
Diff
Step 143,166 px changed
Before
Before
After
After
Diff
Diff
Step 156,636 px changed
Before
Before
After
After
Diff
Diff
Step 164,288 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 nagi-note.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.