Skip to Content
📚 MyStoryFlow Docs — Your guide to preserving family stories
Use Cases & TestingTesting Scenarios

Testing Scenarios Library

Document Purpose: Comprehensive test case library covering all business flows, edge cases, and integration scenarios for the MyStoryFlow application.

Last Updated: July 12, 2025
Version: 1.0
Test Framework: Playwright, Jest, React Testing Library


📋 Table of Contents

  1. Testing Overview
  2. Critical User Flows
  3. Business Logic Testing
  4. Integration Testing
  5. Edge Case Testing
  6. Performance Testing
  7. Test Execution Guide

Testing Overview

Testing Philosophy

  • User-Centric: Test from the user’s perspective
  • Business-Critical: Focus on revenue and user experience paths
  • Comprehensive: Cover happy paths, edge cases, and error scenarios
  • Maintainable: Use Page Object Model and reusable test utilities

Test Categories

  • Unit Tests: Individual component and function testing
  • Integration Tests: API and database interaction testing
  • E2E Tests: Complete user journey testing
  • Performance Tests: Load and response time testing
  • Accessibility Tests: WCAG compliance and screen reader testing

Critical User Flows

CUF-001: Complete Gift Purchase Journey

Priority: P0 (Critical Revenue Path)

Test Scenarios

  1. Authenticated User Gift Purchase

    • Login → Gift Details → Family Setup → Message → Books → Payment → Thank You
    • Verify family creation, invoice generation, email sending
    • Test family workspace access after purchase
  2. Anonymous User Gift Purchase

    • Gift Details → Family Setup → Message → Books → Info Collection → Payment → Thank You
    • Verify email collection and account creation prompt
    • Test purchase completion without registration
  3. Gift Purchase Error Recovery

    • Test payment failures and retry mechanisms
    • Test family creation failures with graceful degradation
    • Test email sending failures with warning display

Key Validations

  • Family workspace access without setup completion
  • Invoice generation with correct pricing breakdown
  • Email automation triggers at correct times
  • Thank you page displays with complete purchase details

CUF-002: User Onboarding & Campaign Creation

Priority: P0 (User Activation)

Test Scenarios

  1. First-Time User Setup

    • Signup → Profile Setup → Campaign Creation → First Story
    • Verify middleware routing to campaign creation
    • Test setup completion flag setting
  2. Incomplete Campaign Resume

    • User with incomplete campaign accesses dashboard
    • Verify redirect to campaign creation with ID
    • Test campaign completion and dashboard access

Key Validations

  • Middleware enforces setup completion
  • Campaign creation saves progress
  • Dashboard access after completion

CUF-003: Family Collaboration Workflow

Priority: P1 (Core Feature)

Test Scenarios

  1. Family Creation and Invitation

    • Create family → Add members → Send invitations → Accept invitations
    • Test family workspace access for all members
    • Verify role-based permissions
  2. Family Campaign Collaboration

    • Family member creates campaign
    • Other members contribute stories
    • Test campaign visibility across family

Key Validations

  • Family member permissions work correctly
  • Campaign sharing within families
  • Invitation email delivery and acceptance

Business Logic Testing

BLT-001: Gift Purchase Pricing Logic

Components: BooksStep, PaymentStep, InvoiceService

Test Cases

describe('Gift Purchase Pricing', () => { test('calculates single book pricing correctly', () => { expect(calculateBookPricing(1)).toEqual({ total: 79.00, savings: 0 }) }) test('calculates bulk pricing with discount', () => { expect(calculateBookPricing(5)).toEqual({ total: 315.00, savings: 80.00 }) }) test('generates correct invoice line items', () => { const lineItems = InvoiceService.createGiftPurchaseLineItems(3) expect(lineItems).toHaveLength(2) // Books + Bulk discount expect(lineItems[0].description).toBe('Story Collection Books') expect(lineItems[1].description).toBe('Bulk Discount (2 books)') }) }) ``` --> ### BLT-002: Family Creation Business Logic **Components**: `FamilyService`, `GiftFamilyService` #### Test Cases ```javascript describe('Family Creation for Gifts', () => { test('bypasses subscription checks for gift purchases', async () => { const result = await familyService.createFamilyGroup( familyData, userId, true // skipSubscriptionCheck ) expect(result.id).toBeDefined() }) test('creates family with gift purchaser and recipient as contributors', async () => { const result = await giftFamilyService.createGiftFamily(giftData) expect(result.success).toBe(true) expect(result.family_id).toBeDefined() }) }) ``` --> ### BLT-003: Middleware Routing Logic **Component**: `middleware.ts` #### Test Cases ```javascript describe('Middleware Routing', () => { test('redirects incomplete users from dashboard to campaign creation', () => { // Mock incomplete user accessing /dashboard // Verify redirect to /campaigns/create }) test('allows gift purchasers to access family workspace', () => { // Mock incomplete user accessing /families/123 // Verify no redirect (allow access) }) test('allows gift purchase flow for incomplete users', () => { // Mock incomplete user accessing /dashboard/purchase-gift // Verify no redirect (allow access) }) }) ``` --> --- ## Integration Testing ### INT-001: Database Integration **Focus**: Data persistence and consistency #### Test Scenarios 1. **Gift Purchase Data Flow** - Test gift record creation - Test invoice generation with line items - Test family creation with member relationships - Verify RLS policies enforce correct access 2. **Campaign and Family Integration** - Test campaign creation with family linkage - Test family member access to campaigns - Verify campaign visibility queries #### Database Test Setup ```javascript beforeEach(async () => { // Clean test database await supabase.from('gifts').delete().neq('id', '') await supabase.from('invoices').delete().neq('id', '') await supabase.from('family_groups').delete().neq('id', '') // Create test user testUser = await createTestUser() }) ``` --> ### INT-002: Email Integration **Focus**: Email delivery and automation #### Test Scenarios 1. **Gift Purchase Email Flow** - Test immediate delivery for today's date - Test scheduled delivery for future dates - Test email template rendering with gift data 2. **Family Invitation Emails** - Test invitation email sending - Test email template personalization - Test invitation link generation #### Email Test Utilities ```javascript const mockEmailService = { sendGiftPurchaseEmails: jest.fn().mockResolvedValue({ success: true }), sendFamilyInvitation: jest.fn().mockResolvedValue({ success: true }) } ``` --> ### INT-003: Payment Integration **Focus**: Stripe integration and error handling #### Test Scenarios 1. **Successful Payment Processing** - Test payment intent creation - Test payment confirmation - Test invoice generation after payment 2. **Payment Error Handling** - Test declined card handling - Test network error recovery - Test partial payment failures --- ## Edge Case Testing ### ECT-001: Concurrent User Actions **Scenario**: Multiple users performing actions simultaneously #### Test Cases 1. **Concurrent Gift Purchases** - Multiple users purchasing gifts simultaneously - Verify invoice number uniqueness - Test family creation race conditions 2. **Concurrent Family Invitations** - Multiple invitations to same email - Test duplicate invitation prevention - Verify family member limits ### ECT-002: Data Validation Edge Cases **Scenario**: Invalid or boundary data inputs #### Test Cases 1. **Gift Purchase Validation** - Empty recipient name/email - Invalid email formats - Self-gifting attempts - Maximum family member limits 2. **Campaign Creation Validation** - Duplicate campaign names - Invalid storyteller information - Missing required fields ### ECT-003: Network and System Failures **Scenario**: External system failures and recovery #### Test Cases 1. **Database Connection Failures** - Test fallback behaviors - Verify error logging - Test retry mechanisms 2. **Email Service Failures** - Test email sending failures - Verify warning display to users - Test retry queuing --- ## Performance Testing ### PERF-001: Page Load Performance **Target**: < 2s page load time #### Test Scenarios 1. **Gift Purchase Flow Performance** - Measure each step load time - Test with varying data sizes - Verify optimal bundle sizes 2. **Dashboard Performance** - Test with multiple campaigns - Test with large family groups - Measure query performance ### PERF-002: API Response Times **Target**: < 500ms API response time #### Test Scenarios 1. **Gift Purchase API** - Test under load - Measure database query times - Test with complex family structures 2. **Family and Campaign APIs** - Test member addition performance - Test campaign creation speed - Measure pagination performance --- ## Test Execution Guide ### Running Tests #### Unit Tests ```bash npm run test # Run all unit tests npm run test:watch # Run tests in watch mode npm run test:coverage # Run with coverage report ``` --> #### E2E Tests ```bash npm run test:e2e # Run all E2E tests npm run test:e2e:critical # Run critical path tests npm run test:e2e:headed # Run with browser UI ``` --> #### Integration Tests ```bash npm run test:integration # Run API integration tests npm run test:db # Run database integration tests ``` --> ### Test Environment Setup #### Database Setup ```bash # Create test database npm run test:db:setup # Run migrations npm run test:db:migrate # Seed test data npm run test:db:seed ``` --> #### Environment Variables ```env # Test environment variables NEXT_PUBLIC_SUPABASE_URL=test_url SUPABASE_SERVICE_ROLE_KEY=test_key STRIPE_SECRET_KEY=test_stripe_key EMAIL_SERVICE_API_KEY=test_email_key ``` --> ### Continuous Integration #### GitHub Actions Workflow ```yaml name: Test Suite on: [push, pull_request] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 - run: npm ci - run: npm run test - run: npm run test:e2e:critical - run: npm run test:integration ``` --> ### Test Data Management #### Test User Creation ```javascript export const createTestUser = async (overrides = {}) => { const userData = { email: `test-${Date.now()}@example.com`, password: 'testpassword123', full_name: 'Test User', setup_completed: false, ...overrides } const { user } = await supabase.auth.signUp(userData) return user } ``` --> #### Test Cleanup ```javascript afterEach(async () => { // Clean up test data await cleanupTestData() }) const cleanupTestData = async () => { // Remove test gifts, invoices, families await supabase.from('gifts').delete().like('giver_email', '%@example.com') await supabase.from('invoices').delete().like('user_id', 'test-%') } ``` --> --- ## Reporting and Monitoring ### Test Metrics - **Test Coverage**: Aim for >80% code coverage - **Test Execution Time**: Monitor for regression - **Flaky Test Rate**: Track and fix unstable tests - **Critical Path Success Rate**: Monitor business-critical flows ### Test Reports - **Coverage Reports**: Generated after each test run - **Performance Reports**: Track API and page load times - **E2E Test Reports**: Video recordings of failures - **Accessibility Reports**: WCAG compliance scores --- *Last Updated: July 12, 2025* *Maintained by: QA & Development Teams*