Recording of the visual regression run on ratifa.com · Ratifa — app walkthrough (authenticated).

In this video· click a step to jump to it

R
Passed ✓

Test recording

Ratifa — app walkthrough (authenticated)

91,331 ms · 0 pixels changed · matches baseline

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

Take this test with you

This is a real Playwright test, recorded against ratifa.com. 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 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); })()";

  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' });
  for (const pattern of ['**/cdn-cgi/scripts/**/email-decode.min.js', '**/browser.sentry-cdn.com/**', '**/cdn.segment.com/**', '**/connect.facebook.net/**', '**/www.googletagmanager.com/**']) {
    await page.route(pattern, function (r) { r.abort(); }).catch(function () {});
  }

  // ---- 1. Projects (signed in via replayed Google-OAuth session)
  stepLogger.log('1: Projects');
  await page.goto(baseUrl + '/projects', { waitUntil: 'domcontentloaded' });
+91 more lines — claim the test to get the full code.

Checks run

Run
✓
Visual
✓
Text
—
DOM
✓
Network
+0 −10
Console
✓
A11y
A
Perf
✓
URL
10 diverged
Variables
—
Full report
Log in →
0
Diff px
1m 31s
Duration
A
Accessible
WCAG 2.2 · 100
A
Fast
Web Vitals · 100

Notes from the demo run

AI-generated

We signed in with Google, created a project, and drove ten authenticated surfaces: projects, the project's memory and search, the connections matrix, agents, vault, team, account, and the Connect-an-agent block for Cursor. The writing is the standout — 'Each project has its own memory. An agent connected to one never sees another', 'A stored key is sealed. Agents never receive it', and on the security page an unusually honest 'It does not protect against somebody with access to the Ratifa server'. That last line is the kind of thing most infra products bury, and it makes everything else on the page more believable. The connections table is explicitly evidence-based too: 'Working is measured, not claimed'.

Highlights
  • The setup really is one paste
    Pick Claude Code / Claude / ChatGPT / Cursor / HTTP and the page renders the exact block, including the bootstrap and save endpoints and a rule about `supersedes` so old facts become history instead of competing. No SDK, no config file, no install step.
  • Honest security copy
    The vault page states plainly what sealed keys do not protect against. Saying the quiet part out loud is a stronger trust signal than another SOC-2 badge.
  • Per-surface, not per-vendor, support matrix
    'One row per surface, not per company — Gemini behaves differently in three products, and Copilot differently in two editors.' That is a real distinction and nobody else in the agent-memory space is drawing it.
Friction points
  • There is no /register — every CTA lands on /login
    'Get started free', 'Start Free', 'Start Pro' and every pricing CTA point at /login, and /register is a hard 404. A first-time visitor who reads 'Get started free' and lands on a page headed 'Sign in' has to work out that Continue-with-Google also creates the account.
  • A brand new project reads as five empty panels
    Project overview shows 'Nothing remembered yet', 'Current state: Nothing yet', 'Blockers', 'No agent has been given a key' all at once. Collapsing the empties behind the one action that matters — connect an agent — would make the first minute feel less like a broken page.
Couldn't reach
  • Create key·We never mint a live API credential on camera
  • Send invitation·We draft the invite but never send mail on a founder's behalf

Share this run

Earned · Lastest awards

Proof your app is not AI slop

LASTEST
starter
tests
all passing
a11y
WCAG AA
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 ratifa.com — 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.