Skip to Content
Living documentation — last reviewed 2026-05-28
FeaturesProduct StoreProduct store — QA plan

Product store — QA plan

Automated: apps/api/src/products/product-store.int.spec.ts, apps/api/src/sms/**/*.unit.spec.ts, apps/api/src/analytics/analytics-reports.int.spec.ts (revenue by source), apps/web/src/components/products/*.int.spec.tsx, apps/web/src/app/[lang]/p|r|pay/**/*.int.spec.tsx.

Manual (staging, Cardcom test terminal)

#ScenarioExpected
M1Lite org opens StoreUpgrade card.
M2Pro org, no providerAlert “connect a payment provider”; New product disabled.
M3Create product with imageCard shows image, price; link dialog opens with QR.
M4Download and print QRPNG downloads; print view shows QR, name, price.
M5Scan QR on a phone (signed out)Product page; name/phone empty.
M6Pay with quantity 2Cardcom page shows 2 × price; after paying, /pay/result shows “View your receipt”.
M7Webhook arrivesSale Paid; document number on the transaction; receipt sent (WhatsApp or SMS) with a working /r/… link.
M8Buyer phone = a member’s phoneSale linked “Phone match”; appears on the member’s payments tab.
M9Signed-in member buysName/phone pre-filled; sale linked “Signed in”.
M10Record a cash sale at the deskSale Paid, method cash, document issued.
M11Refund a card saleCardcom refund; status Refunded; revenue report store row nets to zero.
M12Refund a cash saleCredit-note dialog; status Refunded.
M13Archive product, scan QR”Not available”. Restore → page works again with the same QR.
M14Change priceNext checkout uses the new price; earlier sales keep theirs.
M15Reports → Revenue sourcesStore and “Plans and other” add up to the totals.
M16SMS on, sender not approved at Micropayreceipt_error starts with sms_rejected; staff resend after approval works.