This is a demo report — scrubbed data showing what BetaWindow delivers.See other scenarios →
Test my app from $5 →
rpt_demo_0014 bugs found

AcmeSaaS (demo)

Standard 20-min session on a Stripe-powered SaaS signup
App URL
https://acme-saas-demo.vercel.app
Tier
Standard · 20 min · $10
Duration
19m 7s
Tester
Tester M.K.
Completed
Apr 15, 2025

Rating & Summary

3 / 5

The homepage and pricing page load correctly. Signup breaks for emails containing "+" — a common address pattern. The checkout flow fails silently on card validation: no error message appears when an invalid card is used. Dashboard job list has a noticeable blank flash on first load. Found 4 bugs total: 1 high, 2 medium, 1 low.

1 high2 medium1 low

Bugs Found (4)

🟠highCheckout silently fails on invalid card — no error shown
Steps to reproduce
1. Go to /pricing
2. Click "Get started" on Pro plan
3. Enter card number 4000 0000 0000 9995 (decline test)
4. Fill valid expiry/CVC
5. Click "Subscribe"
Expected

Error message: "Your card was declined. Please try a different card."

Actual

Button spinner runs for 3s, then stops. No error displayed. Form appears ready to resubmit. User has no way to know the charge failed.

Network
POST /api/checkout/create-session → 200 but Stripe returns decline_code: insufficient_funds
📷 Button returns to default state without any visible feedback
🟡mediumSignup rejects emails with "+" alias (e.g. user+test@gmail.com)
Steps to reproduce
1. Go to /signup
2. Enter email: jane+work@example.com
3. Enter valid password
4. Click "Create account"
Expected

Account created, redirect to dashboard

Actual

Inline error: "Please enter a valid email address." — The "+" character is valid per RFC 5321 and used by ~8% of Gmail users for email aliases.

Network
POST /api/auth/signup → 422 {"error":"Invalid email format"}
🟡mediumDashboard blank for 1.4s on first load — no loading state
Steps to reproduce
1. Complete signup
2. Observe /dashboard immediately after redirect
Expected

Skeleton loader or spinner while data fetches

Actual

Completely blank white area for ~1.4s before job list renders. Looks like the page is broken.

Network
GET /api/jobs → 200 after 1412ms (slow Supabase cold start)
🟢lowPage title unchanged on /pricing — shows generic "App" in tab
Steps to reproduce
1. Navigate to /pricing
2. Check browser tab title
Expected

"Pricing — AcmeSaaS"

Actual

"App" — metadata title not set for pricing route

Network Log

9 requests
MethodPathStatusTimeSize
GET/200198ms42 KB
GET/pricing200167ms38 KB
POST/api/auth/signup422341ms1.2 KB
POST/api/auth/signup200287ms0.8 KB
GET/dashboard200154ms55 KB
GET/api/jobs2001412ms3.1 KB
GET/pricing200163ms38 KB
POST/api/checkout/create-session200834ms1.8 KB
GET/_next/static/chunks/main.js20089ms124 KB

Console Log

5 entries
01:22[ERROR]Error: Request failed with status code 422 at /api/auth/signupauth.ts:48
03:41[WARN]Warning: Cannot update a component (`Dashboard`) while rendering a different component (`JobList`)react-dom.development.js:86
16:09[ERROR]Stripe: Payment method creation failed — card_declinedcheckout.ts:112
00:01[LOG]PostHog initialized — capturing enabledprovider.tsx:18
00:03[WARN]Image with src "/logo.png" was detected as the Largest Contentful Paint (LCP). Use priority prop.next/image

Agent-Ready Format

Killer feature

Every report ships as a structured prompt you can paste directly into Cursor, Claude, or GPT-4. No copy-pasting bugs manually — your agent gets the full context instantly.

# BetaWindow QA Report — AcmeSaaS (demo)

## Tester Summary
The homepage and pricing page load correctly. Signup breaks for emails containing "+" — a common address pattern. The checkout flow fails silently on card validation: no error message appears when an invalid card is used. Dashboard job list has a noticeable blank flash on first load. Found 4 bugs total: 1 high, 2 medium, 1 low.

## Bugs Found
### Bug 1: Checkout silently fails on invalid card — no error shown [HIGH]
Steps to reproduce:
1. Go to /pricing
2. Click "Get started" on Pro plan
3. Enter card number 4000 0000 0000 9995 (decline test)
4. Fill valid expiry/CVC
5. Click "Subscribe"
Expected: Error message: "Your card was declined. Please try a different card."
Actual: Button spinner runs for 3s, then stops. No error displayed. Form appears ready to resubmit. User has no way to know the charge failed.

### Bug 2: Signup rejects emails with "+" alias (e.g. user+test@gmail.com) [MEDIUM]
Steps to reproduce:
1. Go to /signup
2. Enter email: jane+work@example.com
3. Enter valid password
4. Click "Create account"
Expected: Account created, redirect to dashboard
Actual: Inline error: "Please enter a valid email address." — The "+" character is valid per RFC 5321 and used by ~8% of Gmail users for email aliases.

### Bug 3: Dashboard blank for 1.4s on first load — no loading state [MEDIUM]
Steps to reproduce:
1. Complete signup
2. Observe /dashboard immediately after redirect
Expected: Skeleton loader or spinner while data fetches
Actual: Completely blank white area for ~1.4s before job list renders. Looks like the page is broken.

### Bug 4: Page title unchanged on /pricing — shows generic "App" in tab [LOW]
Steps to reproduce:
1. Navigate to /pricing
2. Check browser tab title
Expected: "Pricing — AcmeSaaS"
Actual: "App" — metadata title not set for pricing route

Please fix the bugs above in order of severity. Start with the highest-severity issues.
💡 This output is auto-generated from the tester’s feedback, network log, and console data — no manual formatting needed.

Other sample reports

Get a report like this for your app

Submit your URL. A real human tester runs a live session with network log + console capture. Report delivered in minutes.