Integration Test Plan - Elegant Sync Solution

Manual integration testing checklist for elegant sync implementation

Integration Test Plan

Pre-Test Setup

  1. Start Backend

    yarn serve:backend
    # Wait for: "✅ Backend API listening on port 3000"
    
  2. Start Frontend

    yarn dev:gograb
    # Wait for: "🚀 GoGrab Space app initialized"
    
  3. Check Console Logs

    • Look for: [MongoDB Realtime] ✅ Spaces Change Stream enabled
    • Look for: [MongoDB Realtime] ✅ Universes Change Stream enabled
    • Should NOT see errors during initialization

Test Suite 1: Basic Operations

Test 1.1: Create Universe

Steps:

  1. Navigate to dashboard
  2. Click "Create New Universe"
  3. Enter name: "Test Universe 1"
  4. Click "Create"

Expected:

Verification:

// Run in browser console
const storage = window.__storageService__;
const universes = await storage.list({ prefix: 'universe_' });
console.log('Universes in IndexedDB:', universes);

Test 1.2: Delete Universe

Steps:

  1. From dashboard, click "Delete" on test universe
  2. Confirm deletion

Expected:


Test Suite 2: Cross-Tab Sync (BroadcastChannel)

Test 2.1: Create in Tab A, See in Tab B

Steps:

  1. Open 2 tabs to the same dashboard
  2. In Tab A: Create "Multi-Tab Test Universe"
  3. Watch Tab B

Expected:

Timing:

Test 2.2: Delete in Tab B, Disappears from Tab A

Steps:

  1. Keep both tabs open
  2. In Tab B: Delete "Multi-Tab Test Universe"
  3. Watch Tab A

Expected:


Test Suite 3: Multi-Browser Sync (MongoDB Change Streams)

Test 3.1: Create in Chrome, See in Firefox

Steps:

  1. Open Chrome to dashboard (login as user)
  2. Open Firefox to dashboard (login as same user)
  3. In Chrome: Create "Multi-Browser Test"
  4. Watch Firefox

Expected:

Verification:

Test 3.2: Delete in Firefox, Disappears from Chrome

Steps:

  1. Keep both browsers open
  2. In Firefox: Delete "Multi-Browser Test"
  3. Watch Chrome

Expected:


Test Suite 4: Multi-Device Sync

Test 4.1: Create on Laptop, See on Desktop

Steps:

  1. Login on laptop browser
  2. Login on desktop browser (different machine, same user)
  3. On laptop: Create "Multi-Device Test"
  4. Watch desktop

Expected:

Test 4.2: Mobile Browser Sync

Steps:

  1. Login on mobile browser (phone/tablet)
  2. On desktop: Create "Mobile Sync Test"
  3. Watch mobile

Expected:


Test Suite 5: Offline → Online Sync

Test 5.1: Create Offline, Sync When Online

Steps:

  1. Open DevTools → Network tab
  2. Enable "Offline" mode
  3. Create "Offline Test Universe"
  4. Disable "Offline" mode (go online)

Expected:

Verification:

// Check sync queue
const syncStatus = window.__syncEngine__?.getStatus();
console.log('Sync queue:', syncStatus);

Test 5.2: Delete Offline, Sync When Online

Steps:

  1. Enable "Offline" mode
  2. Delete a universe
  3. Disable "Offline" mode

Expected:


Test Suite 6: Conflict Resolution

Test 6.1: Simultaneous Creates (Different Browsers)

Steps:

  1. Open 2 browsers (Chrome, Firefox)
  2. Go offline in both
  3. In Chrome: Create "Conflict Test A"
  4. In Firefox: Create "Conflict Test B"
  5. Go online in both

Expected:

Test 6.2: Edit Same Universe (Different Browsers)

Steps:

  1. Create "Edit Test Universe"
  2. In Chrome: Update description to "Chrome Edit"
  3. In Firefox: Update description to "Firefox Edit"

Expected:


Test Suite 7: Performance Benchmarks

Test 7.1: Create 100 Universes

Steps:

  1. Run performance test script
  2. Create 100 universes rapidly

Expected:

Test 7.2: Multi-Tab Performance

Steps:

  1. Open 5 tabs
  2. Create universe in tab 1
  3. Measure propagation time

Expected:


Test Suite 8: Edge Cases

Test 8.1: Rapid Create/Delete Cycles

Steps:

  1. Create universe
  2. Immediately delete it
  3. Repeat 10 times quickly

Expected:

Test 8.2: Network Fluctuation

Steps:

  1. Toggle offline/online repeatedly
  2. Create/update/delete during fluctuations

Expected:

Test 8.3: Browser Restart

Steps:

  1. Create "Persistence Test"
  2. Close browser completely
  3. Reopen and login

Expected:


Test Suite 9: Zero Phantom IDs

Test 9.1: Verify No Phantom IDs

Steps:

  1. After any create/delete operation
  2. Check space.universeIds vs actual universe data

Verification:

// Run in console
const space = window.__spaceService__.currentSpace();
const universeIds = space.universeIds;
const actualUniverses = window.__spaceService__.universes();

console.log('Universe IDs:', universeIds);
console.log('Actual Universes:', actualUniverses.map(u => u.id));

// Should match exactly
const phantomIds = universeIds.filter(
  id => !actualUniverses.some(u => u.id === id)
);
console.log('Phantom IDs (should be empty):', phantomIds);

Expected:

Test 9.2: After Deletion

Steps:

  1. Create and delete several universes
  2. Check for phantom IDs

Expected:


Test Suite 10: Multi-User Collaboration

Test 10.1: Two Users, Same Space

Steps:

  1. User A creates universe
  2. User B should see it appear

Expected:

Test 10.2: Simultaneous Edits

Steps:

  1. User A edits universe layout
  2. User B edits same universe layout

Expected:


Success Criteria

Performance ✅

Reliability ✅

User Experience ✅


Failure Scenarios

If any test fails:

  1. Check Console Logs

    • Look for errors
    • Verify Change Streams connected
    • Check BroadcastChannel messages
  2. Check MongoDB

    • Verify data persisted correctly
    • Check for duplicate/phantom entries
  3. Check IndexedDB

    • Verify local storage consistent
    • Check for orphaned data
  4. Rollback Plan

    • Switch back to SpaceService (old)
    • Disable MongoDB Change Streams
    • Investigate and fix

Ready to Test: All components migrated, MongoDB Change Streams enabled
Test Duration: 30-45 minutes for complete suite
Critical Tests: Suites 1, 2, 3, 9 (must pass 100%)