Recording of the visual regression run on amail.page.gd · amail — app walkthrough.

In this video· click a step to jump to it

A
Passed ✓

Test recording

amail — app walkthrough

52,669 ms · 2,589 pixels changed

We built this regression test for amail.page.gd — it's yours to keep, free.

Take this test with you

This is a real Playwright test, recorded against amail.page.gd. 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":"/dashboard/","publicMaxNav":0,"fullPage":true,"steps":[{"goto":"/dashboard/","dismiss":true,"waitMs":1800,"label":"dashboard-overview"},{"goto":"/dashboard/api-keys.php","waitMs":1800,"label":"api-keys"},{"clickText":"Generate API Key","waitMs":2200,"label":"generate-api-key"},{"goto":"/dashboard/logs.php","waitMs":1500,"label":"email-logs"},{"goto":"/dashboard/analytics.php","waitMs":1500,"label":"analytics"},{"goto":"/dashboard/smtp.php","waitMs":1500,"label":"smtp-settings"},{"goto":"/dashboard/templates.php","waitMs":1500,"label":"templates"},{"goto":"/dashboard/billing.php","waitMs":1500,"label":"billing"},{"goto":"/dashboard/profile.php","waitMs":1500,"label":"profile"}]};
  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
8.36%
Text
—
DOM
✓
Network
—
Console
✓
A11y
Review
Perf
✓
URL
✓
Variables
—
Full report
Log in →
2,589
Diff px
53s
Duration
Review
Accessible
WCAG 2.2
A
Fast
Web Vitals · 100

Notes from the demo run

AI-generated

aMail is a transactional Email API (send emails, OTPs and notifications via a simple API call, test in a sandbox SMTP then go live). After an email-verify, the dashboard is a tidy operator console: Overview (emails sent, success rate, API calls), API Keys, Email Logs, Analytics, SMTP Settings, Templates, Billing and Profile — a complete mental model for a developer evaluating a Resend/Postmark-style service.

Highlights
  • Complete email-API IA on day one
    Overview / API Keys / Email Logs / Analytics / SMTP / Templates / Billing covers the whole lifecycle a developer expects from a transactional-email provider — it reads like a real product, not an MVP stub.
  • Sandbox-to-live SMTP framing
    The landing leads with "Test in sandbox with our SMTP, go live with your own" and a copy-paste curl example, which is exactly how a developer wants to evaluate an email API — try it without commitment.
  • Clean, single-purpose dashboard
    The authenticated console is uncluttered and metric-led (Emails Sent / Success Rate / API Calls), so an evaluator immediately knows where deliverability data will live.
Friction points
  • Hosted on free InfinityFree (page.gd)
    The app runs on a free InfinityFree subdomain; for a developer choosing where to route production email, a custom domain and a clearer hosting story would build more trust.
  • Typo in the landing curl snippet
    The hero's curl example posts to "amial.page.gd" (transposed) rather than amail.page.gd — a copy-paste developer would hit a dead host on their first try.
  • Empty new-account state
    A fresh account shows 0 emails / 0 API calls everywhere; a seeded sample send would let an evaluator feel the logs and analytics working before integrating.

Visual change

Step 62,589 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,257 test runs recorded · 1,158 products tested with Lastest

This test was built for amail.page.gd — 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.