Recording of the visual regression run on envoice.site · envoice — marketing + signup is broken (CORS bug blocks 100% of registrations).

In this video· click a step to jump to it

E
Failed

Test recording

envoice — marketing + signup is broken (CORS bug blocks 100% of registrations)

63,911 ms · 66,459 pixels changed

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

Take this test with you

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

export async function test(page, baseUrl, screenshotPath, stepLogger) {
  const STAMP = Math.floor(Date.now() / 1000).toString(36);
  const USERNAME = `viktor${STAMP}`;
  const EMAIL = `viktor${STAMP}@lastest.cloud`;
  const PASSWORD = `•••`;
  const SITE = 'https://envoice.site';

  // Collect findings across the run; throw with a summary at the end so all
  // screenshots fire first and the share has full coverage even on failure.
  const findings = [];
  const note404 = async (label) => {
    const bodyText = await page.locator('body').innerText().catch(() => '');
+116 more lines — claim the test to get the full code.

Checks run

Run
✕
Visual
40.78%
Text
—
DOM
✓
Network
+55 −55
Console
22 new
A11y
—
Perf
88 drift
URL
429 diverged
Variables
—
Full report
Log in →
66,459
Diff px
1m 04s
Duration
—
Accessible
A
Fast
Web Vitals · 100

Notes from the demo run

AI-generated

Envoice (@Caesarkuta on X, just-launched today, envoice.site) is a professional invoicing platform targeting freelancers, startups, and growing businesses. The marketing site is polished — clean blue accent, clear hero ("Invoice Smarter. Get Paid Faster."), six feature cards (Smart Invoicing / Client Management / Analytics Dashboard / Fast & Reliable / Secure by Default / Work Anywhere), and a 3-field signup (username + email + password) with no captcha, no email-verify gate, no plan-selection wall. Built with Next.js + NestJS, backend hosted on Railway. Tested by walking the public surface and attempting registration. **One critical issue surfaced — see frictionPoints.**

Highlights
  • Cleanest signup form of the day
    3 fields (username, email, password ≥8 chars), no captcha, no confirm-password, no OAuth-mandatory path. After 5 indie SaaS demos this session — most of which gate signup behind magic-link or Cloudflare Turnstile or Stripe — this is the only one with a frictionless on-page registration. (Once the underlying API works, see frictionPoints.)
  • Marketing voice matches audience
    "Invoice Smarter. Get Paid Faster." + "professional invoicing for freelancers, startups, growing businesses" is targeted without being narrow. Not trying to be enterprise; not trying to be quirky. Clear positioning.
  • Has a /security page in nav
    Indie SaaS rarely ship security pages at launch — most don't ship them ever. Having one in the footer the day of launch signals the founder is thinking about trust upfront.
Friction points
  • 🚨 100% of signups are broken — CORS misconfiguration on the production API
    The signup form fills cleanly with 3 fields and the 'Create Account' button submits, but the request fails before reaching the backend. Browser console shows: "Access to fetch at 'https://envoice-production.up.railway.app/auth/register' from origin 'https://www.envoice.site' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource." The frontend retries 3 times across ~80s then shows 'Error: Something went wrong. Please try again.' to the user. **Every visitor who tries to sign up right now hits this.** Fix: add `Access-Control-Allow-Origin: https://www.envoice.site` (or `https://envoice.site`) to the Railway backend's CORS allowlist for the `/auth/*` routes, including OPTIONS preflight responses. Probably a one-line config change in the NestJS app.
  • Backend is on a default Railway subdomain
    The API endpoint is `envoice-production.up.railway.app` — Railway's default generated subdomain. Adding a vanity API subdomain (e.g. `api.envoice.site`) would be a small trust improvement for security-conscious users inspecting devtools and is necessary to make the CORS config more permanent. Configuring a custom domain in Railway takes ~5 min and lets the signup flow keep working even if the Railway subdomain gets rotated.
  • Login form has same likely-broken backend dependency
    Same Next.js + NestJS pair — if the CORS misconfig is at the API level (not route-specific), the /login endpoint is probably also blocked. Worth verifying with a manual test once the CORS fix lands.
Couldn't reach
  • /dashboard authed·Cannot create an account until the CORS fix lands

2 visual changes

Step 7676 px changed
Before
Before
After
After
Diff
Diff
Step 865,783 px changed
Before
Before
After
After
Diff
Diff

Share this run

Earned · Lastest awards

Proof your app is not AI slop

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

This test was built for envoice.site — 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.