Recording of the visual regression run on chatview.app · ChatView — app walkthrough.

In this video· click a step to jump to it

C
Passed

Test recording

ChatView — app walkthrough

71,431 ms · 255,063 pixels changed

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

Take this test with you

This is a real Playwright test, recorded against chatview.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, slug) => screenshotPath.replace('.png', `-${n}-${slug}.png`);
  const STAMP = Date.now().toString(36).slice(-4);
  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, 1300); await new Promise(r => setTimeout(r, 300)); await anim(max, 0, 700); })()";

  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 go = async (path, waitText) => {
    await page.goto(baseUrl + path, { waitUntil: 'domcontentloaded' });
    await page.waitForLoadState('networkidle', { timeout: 6000 }).catch(function () {});
    await page.getByText(waitText).first().waitFor({ state: 'visible', timeout: 20000 }).catch(function () {});
    await page.waitForTimeout(1600);
+87 more lines claim the test to get the full code.

Checks run

Run
Visual
40.62%
Text
DOM
Network
+0 −72
Console
A11y
A
Perf
108 over
URL
Variables
Full report
Log in →
255,063
Diff px
1m 11s
Duration
A
Accessible
WCAG 2.2 · 100
Review
Fast
Web Vitals

Notes from the demo run

AI-generated

We registered a ChatView account and drove the signed-in surface: the account page, developer settings where we issued a real personal access token for the ChatView MCP server, and then twelve weeks of Ship It, your solo founder board game. Two things stood out. The developer page is unusually honest for an indie product, it tells you exactly which env var the token goes in and which clients it works with, so the path from signup to a working MCP integration is one screen. And Ship It is not a marketing toy: it has real resource economics (two actions a week, runway tokens, evidence/build/quality/debt/reach), a puzzle desk that rejects a wrong answer with a reason, and a founder journal that accumulates. That is a genuinely good piece of content marketing sitting behind your login.

Highlights
  • Token page names the env var and the clients
    'Install @doculearn/chatview-mcp in Claude Desktop, Cursor, or Windsurf, and paste your token into the CHATVIEW_TOKEN env var' sits directly under the generate button. Most products make you leave for docs at exactly this moment.
  • Ship It has real mechanics, not a quiz
    Two actions per week against runway, and spending one on a wrong puzzle answer returns 'That answer does not satisfy the brief. One action spent; no resources taken.' Consequences make it worth replaying, which is rare for a game bolted onto a SaaS site.
  • Signup drops you straight into the product
    Five fields, no email verification wall, and you land on the account page with a 7-day premium trial already active.
Friction points
  • Generated tokens default to never expiring
    The expiry field defaults to blank and the resulting token lists as 'never expires'. For a long-lived credential that goes into an MCP config on a laptop, defaulting to 90 days with an explicit 'never' opt-in would be the safer default, especially given the page's own advice to treat them like passwords.
  • The account page leads with a pricing table
    After signing up, the first thing under 'Welcome, Last' is 'CHOOSE YOUR PLAN' with three Subscribe buttons. The free 7-day trial you just granted is not visible as state anywhere on that screen, so it reads as a paywall rather than a trial in progress.
Couldn't reach
  • /account subscribe·We never start a checkout on a founder's product.
  • /delete-account·Destructive.

4 visual changes

Step 264,126 px changed
Before
Before
After
After
Diff
Diff
Step 364,264 px changed
Before
Before
After
After
Diff
Diff
Step 463,405 px changed
Before
Before
After
After
Diff
Diff
Step 1263,268 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,903 test runs recorded · 1,054 products tested with Lastest

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