QA Test Plan

Comprehensive QA coverage for the SIPP iOS app, spanning the consumer experience (map search → ordering → loyalty) and the shop experience (café management → live order queue). Use this document while planning manual runs, writing automated UI tests, or preparing release sign‑offs.


1. Test Environment & Tooling


2. Consumer Journey Scenarios

2.1 Authentication & Role Selection (Features/Authentication)

2.2 Home Map, Search & Quick Actions (Features/Home)

2.3 Café Detail & Ordering Entry (Features/CafeDetail, Features/Ordering)

2.4 Menu Browsing & Customization (CustomizationView, MenuViewModel)

2.5 Cart & Checkout (Shared/Stores/CartStore, CartView, CheckoutView)

2.6 Orders & Activity (Features/Activity, Features/Orders, Visits)

2.7 QR Scanner & Loyalty (Features/QRScanner)

2.8 Subscription & Billing (Features/Subscription, Products.storekit)

2.9 Profile & Settings (Features/Profile)

2.10 Resilience & Edge Cases


3. Shop Journey Scenarios

3.1 Role Switching & Access Control

3.2 Café Onboarding & Management (Features/Shop/ShopOnboardingView)

3.3 Dashboard & Analytics (Features/Shop/Dashboard)

3.4 Live Order Queue (Features/Shop/OrderQueue)

3.5 Order Detail & QR Display

3.6 Shop Settings (Features/Shop/Settings)

3.7 Cross-Role End-to-End


4. Cross-Cutting Regression Areas


5. Automation Candidates


6. Release Checklist

  1. Run xcodebuild test -scheme sipp -destination 'platform=iOS Simulator,name=iPhone 15'.
  2. Execute manual smoke on latest production configuration (consumer + shop).
  3. Validate StoreKit purchases in sandbox & revoke to ensure grace-period logic works.
  4. Confirm Supabase migrations (if any) deployed and backward compatible.
  5. Capture before/after screenshots for any UI-affecting PR (per repository guidelines).
  6. Ensure Config*.xcconfig with real keys remain untracked; verify build settings reference base configs correctly.
  7. Update QA doc when new features ship (e.g., loyalty perks, new shop modules).


7. Submitting QA Tickets

When filing an issue (GitHub, Linear, Jira, etc.), include:

  1. Title — concise summary, e.g., Subscription: Pay with Card hangs on loading.
  2. Environment — device model + iOS version, build number/TestFlight version, Supabase project (staging/prod), and whether you used a simulator or physical device.
  3. Preconditions — account role (consumer/shop), membership state (active, expired), data fixtures (cart contents, café), feature flags.
  4. Steps to Reproduce — numbered list referencing screen names from this doc (Home → Profile → Subscription, etc.), including form inputs and waits.
  5. Expected vs Actual — bullet what should happen versus what did.
  6. Artifacts — attach:
  7. Screenshots/video (full screen).
  8. Console logs or device logs (copy/paste or attach .log).
  9. Edge-function output (curl/HTTP response) when available.
  10. Severity/Priority suggestionP1 (blocks checkout), P3 (UI polish).

For regressions, link to the last known good build/PR. For backend issues, paste the exact error surfaced in the UI (e.g., “Set STRIPE_PRICE_STANDARD”) so engineers know which env var or service failed.


Use this plan as the living reference for regression passes. When new features merge, append scenarios to the relevant consumer or shop sections and link to tracking tickets so QA can prioritize by release scope. The directories referenced above map one-to-one with on-device screens, making it easy to discover the underlying implementation if additional instrumentation or debug logging is needed.