# E-commerce Practice App — Checkout Regression Checklist

Use before signing off any checkout-related change. Covers search, cart and the
full checkout funnel.

## Search & listing
- [ ] Existing product is found
- [ ] Non-existent product shows an empty state
- [ ] Category, price and rating filters combine correctly
- [ ] Sort (price low→high, newest) orders correctly
- [ ] Pagination keeps active filters and the search term
- [ ] Product count is accurate after filtering

## Cart
- [ ] Add single and multiple items
- [ ] Update quantity recalculates the total
- [ ] Remove item updates the total and header count
- [ ] Header count matches the cart contents
- [ ] Cart persists after refresh and after login

## Checkout
- [ ] Guest checkout completes
- [ ] Logged-in checkout completes
- [ ] Missing required fields are blocked
- [ ] Invalid postcode is rejected
- [ ] Valid discount code applies once (not twice)
- [ ] Expired discount code is rejected
- [ ] Tax and shipping are calculated correctly
- [ ] Failed test card is handled; retry does not duplicate the order
- [ ] Out-of-stock item cannot be purchased

## Post-order
- [ ] Order confirmation shows correct details
- [ ] Order appears in the correct user's history
- [ ] Guest order does not leak to a logged-in user

## Responsive
- [ ] Checkout button is reachable at mobile widths
- [ ] No overlapping or hidden controls on small screens
