E-commerce App Testing Checklist (2026 Edition)
An e-commerce app fails in more places than any other app category. Browse, search, filter, cart, checkout, payment, post-purchase — every stage has its own bug surface, and regressions in one stage s
An e-commerce app fails in more places than any other app category. Browse, search, filter, cart, checkout, payment, post-purchase — every stage has its own bug surface, and regressions in one stage silently destroy conversion in others. This checklist is what I walk through before signing off a release.
Why e-commerce testing is hard
Money is involved at the end of the funnel. Every friction point costs real revenue. A dead "Add to Cart" button on one product category screen tanks the day's sales and nobody notices until the next morning. Scripted regression misses category-specific UI quirks. Manual testing catches them but is expensive and inconsistent.
Pre-release checklist
Product discovery (browse, search, filter)
- Category navigation loads within 2 seconds on 4G
- Search suggests matches as user types, with debounce
- Empty-state search result shows recovery suggestions
- Filter state persists when navigating back from a product
- Sort (price, rating, newest) actually re-orders and matches backend
- Product card images lazy-load without layout shift
- Out-of-stock badge visible on listing, not just on product page
- Tap target for product card is the whole card, not just the title
Product detail
- All images load and swipe correctly (including 1-image products)
- Zoom pinch gesture works and does not break scroll
- Variant selection (size, color) updates price if applicable
- "Add to Cart" button enables only after variant selection
- Quantity selector respects stock limits
- Reviews paginate or load more without blocking main thread
- Related products render without competing for taps with the primary CTA
Cart
- Cart persists after app backgrounded, force-closed, logged out
- Quantity update reflects immediately with correct subtotal
- Remove item shows undo toast for 5 seconds
- Empty cart state has a clear recovery path (browse)
- Cart total matches sum of line items including discounts
- Promo code validates and applies; invalid code shows clear error
- Shipping estimate updates when user changes address
Checkout
- Address form auto-fills from saved addresses
- New address form validates ZIP/postcode against country
- Payment method selection clear, default sensible
- Credit card input handles paste, masks mid-entry, does not leak to logs
- Apple Pay / Google Pay sheet opens and cancels cleanly
- 3D Secure redirect returns to app and completes order
- "Place Order" button disables after first tap (no duplicate orders)
- Order confirmation screen shows order number, estimated delivery, receipt link
- Confirmation email arrives within 60 seconds
Post-purchase
- Order appears in Orders tab immediately
- Tracking link in email and in-app are the same
- Cancel order flow respects cancellation window
- Return initiation works for eligible items
- Push notification on status change (shipped, out for delivery, delivered)
Category-specific bugs
Fashion / apparel
- Size chart modal does not block scroll of parent
- Color swatches accurate on OLED vs LCD (color profile)
- Wishlist persists across sessions, not just in-memory
Electronics
- Spec tables readable on small screens (responsive)
- "Compare" flow works with 2 and 3 items
- Warranty info accessible before purchase
Grocery / perishable
- Delivery slot picker honors cut-off times
- Substitution preference saved per item
- Out-of-stock replacement suggestions relevant
Marketplace (multi-seller)
- Multi-seller cart splits into separate orders correctly
- Seller ratings displayed on product page
- Shipping cost calculated per seller, not a single flat rate
Security checks
- Card number never logged to console or crash reports
- No PII in URL parameters or deep links
- HTTPS for all API endpoints (no mixed content)
- Checkout does not accept cards with mismatched CVV (server-side)
- Promo codes not guessable (no
SUMMER2025patterns) - Order confirmation page does not expose internal IDs to other users
Accessibility checks
- Product images have meaningful alt text
- Price announced as "29 dollars 99 cents" not "2 9 9 9"
- "Add to Cart" button has descriptive label ("Add blue t-shirt size medium to cart")
- Cart count updates announced to screen readers
- Checkout form errors announced on submit, not just visible
Edge cases
- Cold start with items in cart — cart restores correctly
- Network drops mid-checkout — order not duplicated on retry
- User logs out with items in cart — items preserved and restored on login
- Two devices logged into same account — cart syncs
- Price changes between cart-add and checkout — user notified before charge
- Currency change (USD to EUR) — cart re-prices, taxes recompute
- Timezone edge case for flash sale ending at midnight
- 300+ products in cart — performance does not degrade
How SUSA helps
SUSA auto-detects checkout flows (cart/payment keywords + form structure) and drives them end-to-end with test payment methods. Personas matter: the impatient persona abandons if any step takes too long — revealing UX friction; the adversarial persona enters invalid card data and long strings to check validation; the elderly persona flags touch targets below 64dp in the checkout sequence.
susatest-agent test mystore.apk --persona adversarial --steps 150
A full exploration pass takes under 15 minutes and covers most of the above automatically. Use this before every release. Use the Appium regression scripts SUSA generates to guard the happy path in CI. Manual test the last 10% — anything involving real payment providers, actual delivery, and long-tail UX.
Test Your App Autonomously
Upload your APK or URL. SUSA explores like 10 real users — finds bugs, accessibility violations, and security issues. No scripts.
Try SUSA Free