Recording of the visual regression run on app.axly.tech · Axly Operating System — app walkthrough.

In this video· click a step to jump to it

A
Passed

Test recording

Axly Operating System — app walkthrough

83,597 ms · 92,242 pixels changed

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

Take this test with you

This is a real Playwright test, recorded against app.axly.tech. 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, s) => screenshotPath.replace('.png', '-' + n + '-' + s + '.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, 1400); await new Promise(r => setTimeout(r, 350)); await anim(max, 0, 800); })()";
  const STAMP = Date.now().toString(36).slice(-4).toUpperCase();

  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' });
  await page.route('**/cdn-cgi/scripts/**', function (r) { r.abort(); }).catch(function () {});
  await page.route('**/*sentry-cdn.com/**', function (r) { r.abort(); }).catch(function () {});

  // ---------- PUBLIC: marketing context frame ----------
  stepLogger.log('Public: axly.tech marketing home');
  await page.goto('https://www.axly.tech/', { waitUntil: 'domcontentloaded' });
+123 more lines claim the test to get the full code.

Checks run

Run
Visual
2.06%
Text
DOM
Network
+117 −117
Console
A11y
C
Perf
273 over
URL
Variables
Full report
Log in →
92,242
Diff px
1m 24s
Duration
C
Accessible
WCAG 2.2 · 76
Review
Fast
Web Vitals

Notes from the demo run

AI-generated

We created a workspace on Axly and then drove 12 post-login actions through it: the dashboard, the customer directory (adding a customer with US state and billing terms), Products & Stock, the invoice ledger, a full tax invoice built from your catalogue, issuing it, Quotations, the Payments Ledger, Reports & Tax Hub and Settings. The part that held up best is the invoice builder. Picking Halden Robotics, pulling Onboarding Workshop out of the catalogue, setting quantity 4 and choosing a US sales-tax group recomputed the subtotal, tax line and grand total live, and Issue & Save produced a numbered invoice (INV-202609-000NN) that immediately moved the TOTAL INVOICED and OUTSTANDING DUES tiles on the ledger. For a 14-day trial workspace with no setup, that is a lot of working machinery.

Highlights
  • The tax engine actually computes
    Tax-exclusive pricing with a CA Sales Tax 7.25% group produced USD 5400.00 subtotal, +USD 391.50 tax, USD 5791.50 grand total, correct to the cent, before we saved anything. The jurisdiction list covers 16 countries out of the box.
  • Catalogue to invoice in three clicks
    Choose customer, choose from catalogue, set quantity. Unit price, HSN code and tax group all pre-populate from the product record, so a line item is three interactions rather than seven fields.
  • Ledger tiles update immediately
    TOTAL INVOICED, TOTAL COLLECTED, OUTSTANDING DUES and OVERDUE ALERTS all moved on the same paint as the new invoice row. No refresh, no stale cache.
  • Settlement-at-issuance is the right call
    Offering Cash / UPI / Card / Cheque / Pending right on the issue screen means a counter sale is one screen instead of invoice-then-payment. That is a real understanding of how small shops actually bill.
Friction points
  • The verification code went to spam
    Your 6-digit signup code landed in the Gmail spam folder, not the inbox. The mail itself is well built, so this is almost certainly missing SPF/DKIM alignment on the sending domain rather than anything about the content. Worth checking, because a code a user cannot find is a signup they abandon.
  • Duplicated tax-group options in the dropdowns
    Every tax select renders each jurisdiction twice ('CA Sales Tax 7.25%' appears twice, same for FL, NY, TX and Tax Exempt). Harmless on a demo workspace, but it will read as a bug to anyone picking a rate, and it suggests the seeded tax groups are being merged with the defaults rather than replacing them.
Couldn't reach
  • Upgrade Plan / Change Plan·Never touch checkout on someone else's product

13 visual changes

Step 11,126 px changed
Before
Before
After
After
Diff
Diff
Step 23,701 px changed
Before
Before
After
After
Diff
Diff
Step 315,535 px changed
Before
Before
After
After
Diff
Diff
Step 43,168 px changed
Before
Before
After
After
Diff
Diff
Step 510,439 px changed
Before
Before
After
After
Diff
Diff
Step 615,283 px changed
Before
Before
After
After
Diff
Diff
Step 77,020 px changed
Before
Before
After
After
Diff
Diff
Step 83,701 px changed
Before
Before
After
After
Diff
Diff
Step 97,261 px changed
Before
Before
After
After
Diff
Diff
Step 103,701 px changed
Before
Before
After
After
Diff
Diff
Step 116,919 px changed
Before
Before
After
After
Diff
Diff
Step 127,560 px changed
Before
Before
After
After
Diff
Diff
Step 136,828 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.
56,846 test runs recorded · 1,040 products tested with Lastest

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