Recording of the visual regression run on app.grammar.so · grammar.so — app walkthrough.

In this video· click a step to jump to it

A
Passed ✓

Test recording

grammar.so — app walkthrough

36,104 ms · 10,362 pixels changed

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

Take this test with you

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

export async function test(page, baseUrl, screenshotPath, stepLogger) {
  // AUTH_MODE=google, storage_state replay (better-auth HttpOnly session cookie).
  // Grammar's ONLY signup path is "Continue with Google" (no email/password
  // fallback exists on /sign-up). A live OAuth handshake was completed once via
  // the MCP browser as [email protected] (the shared GTM Google identity),
  // and the resulting better-auth session cookie was captured + attached to
  // this test via setupOverrides.extraSteps (storage_state). The EB run below
  // starts already authenticated; no inline OAuth is attempted at runtime
  // (Google's automation detection makes that unreliable on a fresh EB pod).

  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' });
  const routeBlock = async (p) => {
+172 more lines — claim the test to get the full code.

Checks run

Run
✓
Visual
41.19%
Text
—
DOM
✓
Network
✓
Console
✓
A11y
A
Perf
96 over
URL
✓
Variables
—
Full report
Log in →
10,362
Diff px
36s
Duration
A
Accessible
WCAG 2.2 · 100
C
Fast
Web Vitals · 70

Notes from the demo run

AI-generated

Grammar (app.grammar.so) is an AI meeting-notes and canvas workspace: meeting capture (Google Meet bot or desktop recorder), rich-text notes, and a freehand/AI diagram canvas on one page. Signup is Google-OAuth-only (no email/password fallback), but the OAuth handshake completed cleanly with the shared demo Google account and landed in a real 6-step onboarding wizard (Goal, Capture method, Role, Team size, Workflow, Tools used today) before dropping into a working dashboard with a pre-seeded 'Getting started' workspace/notebook.

Highlights
  • Clean 6-step onboarding wizard
    Goal -> Capture -> Role -> Team -> Workflow -> Tools, each step persisted and summarized live in a 'Your setup' sidebar. Ends on a 'You're all set' state with a contextual next-step CTA (download desktop app) rather than dumping the user cold into an empty product.
  • Notes + Diagram live on the same page
    The 'Diagram' button opens a full Excalidraw-style canvas as an overlay dialog without navigating away from the notes editor — shapes, stroke/background styling, and layering all worked in a single interaction, reinforcing the 'everything on one page' pitch from the homepage.
  • Rich account/profile surface
    Profile page shows verified-email status, a real account timeline (created/updated timestamps), a completeness checklist (Email Verified / Profile Picture / Name Set), and a clear Free-vs-Pro comparison table with a 3-day free trial CTA — more polish than most indie SaaS profile pages at this stage.
Friction points
  • Google OAuth is the only signup path
    There is no email/password fallback on /sign-up (confirmed on the actual account-creation flow, not just /sign-in). Any evaluator whose Google session gets flagged by Google's automation heuristics, or who doesn't want to grant Google account access, has no other way into the free workspace.
  • Tiptap 'mismatched transaction' console error
    Clicking the Task-list toolbar button on a freshly-created empty line threw a caught RangeError ('Applying a mismatched transaction') in the editor. It did not lose data or break the page, but it is a reproducible console error in the core notes-writing flow.
  • Bare grammar.so does not resolve
    The root domain grammar.so has no DNS record; only the app.grammar.so subdomain is live. Any outreach or backlink pointing at the bare domain will dead-end.

5 visual changes

Step 1103 px changed
Before
Before
After
After
Diff
Diff
Step 223 px changed
Before
Before
After
After
Diff
Diff
Step 35,295 px changed
Before
Before
After
After
Diff
Diff
Step 41,943 px changed
Before
Before
After
After
Diff
Diff
Step 52,998 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.
57,311 test runs recorded · 1,174 products tested with Lastest

This test was built for app.grammar.so — 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.