Recording of the visual regression run on app.beqy.ai · Beqy.ai — app walkthrough.

In this video· click a step to jump to it

A
Passed ✓

Test recording

Beqy.ai — app walkthrough

155,329 ms · 970 pixels changed

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

Take this test with you

This is a real Playwright test, recorded against app.beqy.ai. 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 UA = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36';
  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, 1100); await new Promise(r => setTimeout(r, 250)); await anim(max, 0, 600); })()";

  await page.context().setExtraHTTPHeaders({ 'User-Agent': UA });
  for (const pattern of ['**/cdn-cgi/scripts/**/email-decode.min.js', '**/sentry-cdn.com/**', '**/*posthog*/**', '**/www.googletagmanager.com/**', '**/connect.facebook.net/**']) {
    await page.route(pattern, function (r) { r.abort(); }).catch(function () {});
  }

  // ─── Scenario 1: AUTHED document review queue ───────────────────────────
  stepLogger.log('Scenario 1: Authed review queue');
+104 more lines — claim the test to get the full code.

Checks run

Run
✓
Visual
0.15%
Text
—
DOM
✓
Network
+14 −14
Console
✓
A11y
C
Perf
1120 over
URL
✓
Variables
—
Full report
Log in →
970
Diff px
2m 35s
Duration
C
Accessible
WCAG 2.2 · 72
C
Fast
Web Vitals · 70

Notes from the demo run

AI-generated

We signed up for the 30-day trial, confirmed by email and walked the whole application: the review queue, dashboards, the invoices ledger with its Bills/VAT/Customers/Suppliers tabs, transactions, chart of accounts, reports, integrations and settings. For a product this young the surface area is unusually complete — VAT and supplier ledgers exist on day one, and the integrations catalogue is long and specific rather than a 'coming soon' grid. The one thing that undercuts the trial is that the feature the landing page leads with, the AI CFO, is the one screen that asks for money.

Highlights
  • The empty state is a setup plan
    The review screen opens with three concrete next steps — Add Transactions, Business Profile, Connect Integrations — with the one already done ticked off. That is a much better first screen than a blank table.
  • Full accounting vocabulary on day one
    Bills, VAT, Customers and Suppliers are separate ledgers, not a single 'invoices' list. Accountants will notice immediately that the model is right.
  • Multi-currency is in the chrome, not buried
    ZAR/USD/EUR/GBP sits in the top bar on every screen. For a South-Africa-first product selling to international clients that is the correct place for it.
  • Trial state is always visible
    'Free trial — 30 days remaining' persists across every route with the subscribe link inline. No one reaches day 29 surprised.
Friction points
  • The AI CFO is paywalled during the free trial
    The landing page sells 'AI CFO Sidebar Chat' and the app header reads 'AI CFO on Stand By' on every screen — but /ai-assistant and /budget both return 'Upgrade Required' on a day-one trial account. The trial currently hides the exact feature it is meant to prove. Even a handful of capped AI CFO questions inside the trial would change what an evaluator takes away.
  • Several routes sit on a loading state for 5s+
    Reports, Transactions, Accounts and Company all showed 'Loading…' past five seconds on an account with no data at all. Empty should be the fastest case; it reads as slowness rather than emptiness.
Couldn't reach
  • Subscribe / checkout·Never taken on a founder's product
  • Upload Document·Would put synthetic financial documents into the founder's production system

6 visual changes

Step 3197 px changed
Before
Before
After
After
Diff
Diff
Step 5191 px changed
Before
Before
After
After
Diff
Diff
Step 6191 px changed
Before
Before
After
After
Diff
Diff
Step 10134 px changed
Before
Before
After
After
Diff
Diff
Step 12197 px changed
Before
Before
After
After
Diff
Diff
Step 1460 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,275 test runs recorded · 1,164 products tested with Lastest

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