🧪 Test Scenarios
Every scenario we plan to exercise across the platform — grouped by module and risk.
Scenario groups
How to read this page
This is the test scenarios catalogue — a high-level inventory of what we test and why. Each scenario has one or more detailed test cases in the Test Cases page (linked by ID).
Scenario ID convention
SCN-<MODULE>-<NUM> — e.g. SCN-AUTH-01 for the first Authentication scenario.
Risk labels
- Critical — money, security, or data integrity. Must pass before launch.
- High — core feature; failure blocks a primary user journey.
- Medium — important but recoverable; users can work around it.
- Low — polish & nice-to-have. Tracked but not blocking.
Authentication & Account
Critical: bad auth = no platform. Validate all happy paths and the common failure modes.
- Description
- Verify that a new visitor can register a Student account using valid name, email, password, and optional phone.
- Objectives
- Validate field-level rules
- Confirm default role is Student
- Confirm wallet auto-created
- Related cases
TC-AUTH-01,TC-AUTH-02
- Description
- Verify error handling for invalid email, weak password, duplicate email, duplicate username, duplicate phone.
- Related cases
TC-AUTH-03,TC-AUTH-04,TC-AUTH-05
- Description
- Verify login with correct and incorrect credentials returns appropriate response.
- Related cases
TC-AUTH-06,TC-AUTH-07
- Description
- Verify the forgot-password flow: request email → token → reset → login with new password.
- Related cases
TC-AUTH-08
- Description
- List active sessions, revoke specific session, logout, logout-everywhere.
- Related cases
TC-AUTH-09,TC-AUTH-10
- Description
- Ensure students cannot access speaker-only endpoints (publishing, statistics) and vice versa where applicable.
- Related cases
TC-AUTH-11
- Description
- User can delete their own account; data is soft-deleted; user can no longer log in.
- Related cases
TC-AUTH-12
Profile & Identity
Profile is the entry point into the social graph and the marketplace. Visual & data integrity here matters.
- Description
- User can view own profile, update name, bio, headline, social links, save successfully.
- Related cases
TC-PROF-01,TC-PROF-02
- Description
- Upload a valid image; reject oversized / wrong MIME; old image replaced.
- Related cases
TC-PROF-03,TC-PROF-04
- Description
- Add and remove category interests; persisted and reflected in suggestions.
- Related cases
TC-PROF-05
- Description
- Create, edit, reorder, delete certificate and experience entries on a speaker profile.
- Related cases
TC-PROF-06,TC-PROF-07
- Description
- Toggle private profile. Verify non-followers see limited info and must send a follow request.
- Related cases
TC-PROF-08
- Description
- Change password with correct old password; reject if old password is wrong.
- Related cases
TC-PROF-09
Social Feed
Highest-traffic surface — must be fast, responsive, and forgiving.
- Description
- Text, image, video, audio posts each create successfully and render in the feed.
- Related cases
TC-FEED-01,TC-FEED-02,TC-FEED-03,TC-FEED-04
- Description
- Feed renders newest first; pull-to-refresh works on mobile; pagination loads more.
- Related cases
TC-FEED-05
- Description
- Pick each reaction; only one active at a time per user; counter updates immediately.
- Related cases
TC-FEED-06
- Description
- Add a comment, reply to comment, edit own comment, delete; counter updates.
- Related cases
TC-FEED-07,TC-FEED-08
- Description
- Share post internally with comment; copy external link; pin own post (only one pinned).
- Related cases
TC-FEED-09
- Description
- Report with each category; appears in admin moderation queue.
- Related cases
TC-FEED-10
- Description
- Trending list updates over time; clicking a hashtag opens its page; search returns results.
- Related cases
TC-FEED-11
Follow System
Verifies privacy controls and counters across the social graph.
- Description
- Tap follow → counter updates; unfollow → reverts. Follower lists update.
- Related cases
TC-FOLL-01
- Description
- Send request → recipient sees in inbox → accept/reject → counts adjust.
- Related cases
TC-FOLL-02,TC-FOLL-03
- Description
- Accept all / reject all bulk operations clear inbox.
- Related cases
TC-FOLL-04
- Description
- Owner removes a follower; that user must re-request to follow again.
- Related cases
TC-FOLL-05
Courses
Authoring and consumption: high stakes for both speakers and students.
- Description
- Speaker creates a draft course → adds sections & lessons → uploads media → publishes.
- Objectives
- Validate field rules
- Verify ordering & reorder
- Confirm publish requires required fields
- Related cases
TC-CRS-01,TC-CRS-02,TC-CRS-03
- Description
- Cannot publish without at least one lesson; cannot publish without thumbnail; unpublish allowed.
- Related cases
TC-CRS-04
- Description
- Lessons flagged as preview are watchable without purchase; non-preview returns 403.
- Related cases
TC-CRS-05
- Description
- Buy course → enrollment created → appears in My Learning → player accessible.
- Related cases
TC-CRS-06
- Description
- Watch a lesson — watched_duration accumulates; mark complete — overall progress %; 100% issues certificate.
- Related cases
TC-CRS-07,TC-CRS-08
- Description
- Add note with timestamp; edit; delete; visible per lesson and aggregated per course.
- Related cases
TC-CRS-09
- Description
- Enrolled user can rate & review; non-enrolled cannot. Average rating updates.
- Related cases
TC-CRS-10
Books
DRM & preview limits are the highest-risk areas here.
- Description
- Upload PDF, set metadata, set preview pages, allow_printing/copying flags, publish.
- Related cases
TC-BOOK-01
- Description
- Any visitor sees first N pages; further pages require purchase.
- Related cases
TC-BOOK-02
- Description
- Buy book → appears in library → reader opens full PDF.
- Related cases
TC-BOOK-03
- Description
- Create each annotation type, edit, delete; persist across sessions.
- Related cases
TC-BOOK-04,TC-BOOK-05
- Description
- Page count, total pages read, reading time minutes update correctly.
- Related cases
TC-BOOK-06
- Description
- When allow_copying=false, copy is disabled. When allow_printing=false, print is disabled. Tokens expire and refresh.
- Related cases
TC-BOOK-07
Live Rooms
Real-time + payments — verify under both fast and slow networks.
- Description
- Create room with start/end date & time, duration_type, free or paid, max participants.
- Related cases
TC-ROOM-01
- Description
- Student registers for free room → at start, Join button activates → Jitsi launches.
- Related cases
TC-ROOM-02,TC-ROOM-03
- Description
- Pay → pending → speaker approves → student notified → can join at start.
- Related cases
TC-ROOM-04,TC-ROOM-05
- Description
- Real-time messages delivered to all participants; speaker can pin/unpin and delete.
- Related cases
TC-ROOM-06
- Description
- Speaker ends room → status completed → recordings (if enabled) appear in room detail.
- Related cases
TC-ROOM-07
- Description
- Push + in-app reminders fire; registered student can cancel before start.
- Related cases
TC-ROOM-08
Consultations
Booking + payments + Jitsi — high integration complexity.
- Description
- Define weekly availability slots with duration & price per session.
- Related cases
TC-CONS-01
- Description
- Pick speaker → date → slot → pay → booking pending → speaker accepts → student notified.
- Related cases
TC-CONS-02,TC-CONS-03
- Description
- Cancel before threshold → refund; cancel after → no refund (per policy).
- Related cases
TC-CONS-04
- Description
- Both parties join Jitsi meeting; speaker marks complete; wallet credited.
- Related cases
TC-CONS-05
- Description
- Student rates speaker; review optional; average updates on speaker profile.
- Related cases
TC-CONS-06
Marketplace & Cart
Conversion-critical. Bugs here directly affect revenue.
- Description
- Filter by category, language, level, price; sort; results match filters.
- Related cases
TC-MKT-01
- Description
- Add course / book, view cart, remove item, clear cart, count updates everywhere.
- Related cases
TC-MKT-02
- Description
- Apply valid code → discounted total; apply invalid → error; remove code → revert.
- Related cases
TC-MKT-03
- Description
- Sufficient balance → success; insufficient → prompt to top up; cart cleared on success.
- Related cases
TC-MKT-04,TC-MKT-05
Wallet & Payments
Money. Validate every code path including failures and concurrent operations.
- Description
- Balance, earned, withdrawn, pending displayed correctly in user's currency.
- Related cases
TC-WAL-01
- Description
- Create order → approve → capture → balance increased → transaction + invoice created.
- Related cases
TC-WAL-02,TC-WAL-03
- Description
- Cancel approval → no charge, balance unchanged. Server-side failure → idempotent retry safe.
- Related cases
TC-WAL-04
- Description
- List paginates correctly; CSV export contains all rows; balance_after consistent.
- Related cases
TC-WAL-05
- Description
- Invoice has subtotal, VAT 15%, total; PDF downloads & renders in AR / EN.
- Related cases
TC-WAL-06
- Description
- Request withdrawal → pending_balance updated → admin approves → settled.
- Related cases
TC-WAL-07
- Description
- Transfer amount → sender debited, receiver credited; transactions on both wallets.
- Related cases
TC-WAL-08
Gifts
Micro-payments tied to wallet — verify ledger correctness.
- Description
- Pick gift, quantity, optional message → wallet debited → receiver credited → notification fired.
- Related cases
TC-GIFT-01
- Description
- Top gifts, leaderboard, per-user sent/received populate correctly.
- Related cases
TC-GIFT-02
Chat
Real-time + media + offline cases — easy to break.
- Description
- Search user → open chat → conversation reused if exists.
- Related cases
TC-CHAT-01
- Description
- Text, image, video, audio, file all delivered & render correctly.
- Related cases
TC-CHAT-02,TC-CHAT-03
- Description
- Message sent by user A appears on user B's device within seconds (Reverb).
- Related cases
TC-CHAT-04
- Description
- Mark as read updates timestamps; unread count drops on both side and topbar badge.
- Related cases
TC-CHAT-05
- Description
- Soft-delete message on either side; full conversation soft-delete; counterparty preserves history.
- Related cases
TC-CHAT-06
- Description
- Send while offline — message queued, sent on reconnect, marked sent/delivered.
- Related cases
TC-CHAT-07
Notifications
Critical for engagement and time-sensitive flows like consultation reminders.
- Description
- Each notification type appears in the user's inbox; deep link opens correct screen.
- Related cases
TC-NOTE-01
- Description
- Push arrives on mobile when app is backgrounded; tap opens correct screen.
- Related cases
TC-NOTE-02
- Description
- Unread badge updates; mark single / all read; deletion works.
- Related cases
TC-NOTE-03
- Description
- Each notification is rendered in the recipient's language regardless of trigger user.
- Related cases
TC-NOTE-04
Admin
Trusted operator surface — strict access control + audit awareness.
- Description
- Only users with admin role access /admin. Students/speakers are rejected.
- Related cases
TC-ADM-01
- Description
- List, search, suspend, change role, view wallet.
- Related cases
TC-ADM-02
- Description
- Review report queue, resolve / dismiss; status updates on post_reports.
- Related cases
TC-ADM-03
- Description
- CRUD with bilingual fields; active/inactive toggles.
- Related cases
TC-ADM-04
- Description
- Approve or reject withdrawal requests; wallet ledger updates correctly.
- Related cases
TC-ADM-05
- Description
- Change VAT %, currency, timezone defaults; validation enforced.
- Related cases
TC-ADM-06
Cross-Cutting Scenarios
Non-functional & platform-wide — apply across many features.
- Description
- Toggle language from settings — UI updates immediately; emails & PDFs follow recipient's language.
- Related cases
TC-LOC-01,TC-LOC-02
- Description
- Every screen in AR renders with correct mirrored layout, fonts, alignment, icons.
- Related cases
TC-LOC-03
- Description
- Keyboard navigation, focus visibility, color contrast, screen-reader semantics.
- Related cases
TC-A11Y-01,TC-A11Y-02
- Description
- Marketplace & feed load within budget on 4G; API p95 < 500 ms on key endpoints.
- Related cases
TC-PERF-01
- Description
- Web app and Flutter app produce the same data for the same user/state on key flows.
- Related cases
TC-PARITY-01
- Description
- Every screen renders correctly in dark theme; contrast preserved.
- Related cases
TC-UI-01
- Description
- Every list and detail view shows defined skeleton, empty illustration, and recoverable error.
- Related cases
TC-UI-02
- Description
- App degrades gracefully when offline; banner shown; cached data still readable.
- Related cases
TC-MOB-01
- Description
- No protected endpoint is accessible without a valid Sanctum token; role middleware rejects mismatches.
- Related cases
TC-SEC-01,TC-SEC-02
- Description
- Reject wrong MIME types, oversized files, malicious filenames.
- Related cases
TC-SEC-03