What you get: a real bug report
This is exactly the format I deliver — reproducible, prioritized, and ready to hand to your dev team. Redacted for confidentiality.
Summary
When a user enters a single-digit month (e.g. “3” instead of “03”) in the credit card expiry field, the checkout button remains enabled but silently fails on submit. No error message is shown; the user sees a spinner indefinitely.
Steps to reproduce
- Navigate to /checkout with items in cart
- Fill in shipping details, click Continue
- Enter card number: 4242 4242 4242 4242
- Enter expiry month:
3(single digit, no leading zero) - Enter expiry year: 28
- Enter CVC: 123
- Click “Pay $49.00”
Expected behavior
Either: (a) the field auto-formats to “03” on blur, or (b) the submit button is disabled with a clear inline error “Please enter a valid expiry month”.
Actual behavior
Pay button shows a spinner indefinitely. Network tab shows a 400 response fromPOST /api/paymentwith error invalid_expiry_month, but this error is swallowed by the frontend. User has no feedback.
Impact
- Estimated 8-12% of checkout attempts affected (based on session recordings)
- Users abandon cart after ~30 seconds of spinning
- Direct revenue loss + support tickets
Suggested fix
- Auto-pad single-digit month to two digits on blur in the expiry input
- Surface API 400 errors in the payment form as inline error messages
- Add client-side regex validation:
^(0[1-9]|1[0-2])$
Evidence
This is what $50 buys you
Send me your rough notes — I turn them into reports like this. Or hire me to find the bugs from scratch.