In this video· click a step to jump to it
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) => {Checks run
Notes from the demo run
AI-generatedGrammar (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.
- Clean 6-step onboarding wizardGoal -> 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 pageThe '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 surfaceProfile 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.
- Google OAuth is the only signup pathThere 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 errorClicking 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 resolveThe 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
Share this run
Proof your app is not AI slop
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.














