Recording of the visual regression run on app.senja.io · senja — app walkthrough.

In this video· click a step to jump to it

A
Passed ✓

Test recording

senja — app walkthrough

58,265 ms · 3,907 pixels changed

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

Take this test with you

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

export async function test(page, baseUrl, screenshotPath, stepLogger) {
  const CFG = {"appEntry":"/","publicMaxNav":0,"fullPage":true,"steps":[{"goto":"/","dismiss":true,"waitMs":2200,"label":"proof-wall-8-testimonials"},{"fill":[{"sel":"input[placeholder*=\"Search for your proof\" i]","value":"revenue","seq":true}],"waitMs":2500,"label":"search-proof"},{"goto":"/forms","waitMs":1800,"label":"collection-forms"},{"goto":"/import","waitMs":1600,"label":"import"},{"goto":"/studio","waitMs":2000,"label":"studio-shareables"},{"goto":"/studio/brand","waitMs":1800,"label":"brand-kit"},{"goto":"/feedback","waitMs":1600,"label":"feedback"},{"goto":"/tags","waitMs":1500,"label":"tags"},{"goto":"/analyze","waitMs":1800,"label":"analyze"},{"goto":"/integrations","waitMs":1600,"label":"integrations"}]};
  const shot = function(i, s){ return screenshotPath.replace('.png', '-' + i + '-' + s + '.png'); };
  page.setDefaultTimeout(6000);
  // single combined noise-abort route (1 action instead of ~10)
  await page.route(function(u){ return /sentry|segment\.com|googletagmanager|google-analytics|hotjar|posthog|connect\.facebook|cdn-cgi\/scripts/.test(u.toString()); }, function(r){ r.abort().catch(function(){}); }).catch(function(){});
  let n = 1;
  const FP = CFG.fullPage !== false;
  const GOTO = 11000;
  const wait = function(ms){ return page.waitForTimeout(ms||500); };
  const dismiss = async function(){ const d = page.getByRole('button', { name: /skip|dismiss|maybe later|not now|got it|close|no thanks|continue|get started/i }).first(); if (await d.isVisible().catch(function(){return false;})) { await d.click({ timeout:2000 }).catch(function(){}); await wait(400); } };
  const clickByText = function(src){ return page.evaluate(function(s){
+55 more lines — claim the test to get the full code.

Checks run

Run
✓
Visual
1.10%
Text
—
DOM
✓
Network
+36 −36
Console
✓
A11y
Review
Perf
84 over
URL
✓
Variables
—
Full report
Log in →
3,907
Diff px
58s
Duration
Review
Accessible
WCAG 2.2
A
Fast
Web Vitals · 100

Notes from the demo run

AI-generated

Senja helps you collect, manage and share customer testimonials — collection forms, a proof wall, a Studio that turns testimonials into social images and website widgets, plus feedback, tags, analytics and integrations. Onboarding is unusually good: it scraped our seed URL and pre-populated the account with 8 real testimonials, so the authenticated app opens on a populated Proof wall rather than a blank slate. The IA maps cleanly to collect → manage → turn-into-assets → embed.

Highlights
  • Onboarding seeds real content
    Instead of an empty first run, Senja imported 8 testimonials from the URL we gave it during onboarding — the Proof wall, Studio and widgets all render with real data on first paint, which is the single best onboarding move in this batch.
  • Natural-language proof search
    The proof wall's search bar accepts natural-language queries ("revenue") rather than exact-match filters — a small, on-brand touch that fits a product about surfacing the right social proof.
  • Studio turns testimonials into assets
    The Studio auto-generated social images and website widgets from the imported testimonials — the "collect → publish everywhere" promise is legible in the product, not just the marketing.
Friction points
  • Email-verify gate before onboarding
    Account activation requires clicking a Firebase verification link before the onboarding wizard is reachable — an inbox hop on the way to first value.
  • Multi-step onboarding wizard is long
    The wizard runs first-name → sell-what → project-URL → scrape-and-select → shareables → upgrade before landing in the app; each step is nice but the cumulative click-count delays the aha of the populated proof wall.

5 visual changes

Step 1124 px changed
Before
Before
After
After
Diff
Diff
Step 2124 px changed
Before
Before
After
After
Diff
Diff
Step 3124 px changed
Before
Before
After
After
Diff
Diff
Step 63,449 px changed
Before
Before
After
After
Diff
Diff
Step 1286 px changed
Before
Before
After
After
Diff
Diff

Share this run

Earned · Lastest awards

Proof your app is not AI slop

LASTEST
starter
tests
all passing
regressions
0
Badges stay live, ratchet upward, only downgrade on confirmed regression.
57,322 test runs recorded · 1,174 products tested with Lastest

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