From 555aa21dc5f108bdeceb68deed9fbf93cb5ad318 Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Tue, 21 Oct 2025 13:55:35 +0000 Subject: [PATCH] feat: Create Phase 5 testing checklist --- docs/PHASE_5_TESTING_CHECKLIST.md | 159 ++++++++++++++++++++++++++++++ 1 file changed, 159 insertions(+) create mode 100644 docs/PHASE_5_TESTING_CHECKLIST.md diff --git a/docs/PHASE_5_TESTING_CHECKLIST.md b/docs/PHASE_5_TESTING_CHECKLIST.md new file mode 100644 index 00000000..a77e716d --- /dev/null +++ b/docs/PHASE_5_TESTING_CHECKLIST.md @@ -0,0 +1,159 @@ +# Phase 5: Testing Checklist + +## Quick Manual Tests (30 min) + +### ✅ Test 1: State Machine Flow +1. Open moderation queue → Click submission +2. **Check DevTools React Components:** Find `SubmissionReviewManager` +3. **Verify state transitions:** `idle` → `claiming` → `locked` → `loading_data` → `reviewing` +4. **Expected:** Items load, no console errors + +### ✅ Test 2: Lock Expiry Warning +1. Claim submission and wait ~13 minutes (or modify DB lock duration to 2 min for testing) +2. **Expected:** Toast warning appears: "Lock Expiring Soon" +3. Click to extend lock +4. **Expected:** Lock renewed, toast confirms + +### ✅ Test 3: Approval Flow +1. Select items → Click "Approve Selected" +2. **Check state transitions:** `reviewing` → `approving` → `complete` +3. **Expected:** Success toast with requestId, items approved + +### ✅ Test 4: Rejection Flow +1. Select items → Click "Reject Selected" +2. Enter reason → Confirm +3. **Check state:** `reviewing` → `rejecting` → `complete` +4. **Expected:** Success toast, items rejected + +### ✅ Test 5: Illegal Transition Prevention +1. While in `approving` state, try clicking "Reject" +2. **Expected:** Button disabled, no console errors + +### ✅ Test 6: Error Recovery +1. Disconnect network → Attempt approval +2. **Expected:** State shows `error`, "Try Again" button appears +3. Reconnect → Click "Try Again" +4. **Expected:** Recovery successful + +--- + +## Database Validation Queries (15 min) + +### Query 1: Active Locks +```sql +SELECT id, status, locked_until, assigned_to +FROM content_submissions +WHERE locked_until > NOW() +ORDER BY locked_until DESC; +``` +**Expected:** All locks valid, no expired with status='locked' + +### Query 2: Stuck Locks Check +```sql +SELECT id, status, locked_until +FROM content_submissions +WHERE status = 'locked' + AND locked_until < NOW(); +``` +**Expected:** 0 rows (no stuck locks) + +### Query 3: Request Tracking Coverage +```sql +SELECT + endpoint, + COUNT(*) as request_count, + AVG(duration_ms) as avg_duration_ms, + COUNT(CASE WHEN error_message IS NOT NULL THEN 1 END) as error_count +FROM request_metadata +WHERE created_at > NOW() - INTERVAL '1 hour' +GROUP BY endpoint +ORDER BY request_count DESC; +``` +**Expected:** `process-selective-approval` present with requests + +### Query 4: Status Type Safety +```sql +SELECT status, COUNT(*) as count +FROM content_submissions +WHERE status NOT IN ('draft', 'pending', 'locked', 'reviewing', 'partially_approved', 'approved', 'rejected', 'escalated') +GROUP BY status; +``` +**Expected:** 0 rows (all statuses valid) + +--- + +## Performance Check (15 min) + +### Test 1: State Machine Overhead +1. Chrome DevTools → Performance tab → Record +2. Submit approval flow +3. Stop recording → Search for "moderationReducer" +4. **Target:** < 5ms total time + +### Test 2: UI Responsiveness +1. Measure button click → state change +2. **Target:** < 100ms response time + +### Test 3: Memory Leak Check +1. DevTools Memory tab → Take baseline heap snapshot +2. Perform 20 form submissions +3. Force GC (🗑️) → Take second snapshot +4. Compare snapshots +5. **Expected:** No significant memory retention + +--- + +## Success Criteria + +**Functional:** +- ✅ State machine controls all submission states +- ✅ Lock expiry warnings work +- ✅ Illegal transitions prevented +- ✅ Error recovery functional +- ✅ All buttons respect state machine guards + +**Quality:** +- ✅ Zero TypeScript errors +- ✅ No console errors during normal flow +- ✅ All manual tests pass +- ✅ Database shows no orphaned/invalid data + +**Performance:** +- ✅ State machine overhead < 5ms +- ✅ UI response < 100ms +- ✅ No memory leaks + +--- + +## Quick Test Commands + +```bash +# Test lock expiry (reduce to 2 min for testing) +UPDATE content_submissions +SET locked_until = NOW() + INTERVAL '2 minutes' +WHERE id = 'YOUR_SUBMISSION_ID'; + +# Reset stuck submission +UPDATE content_submissions +SET status = 'pending', locked_until = NULL, assigned_to = NULL +WHERE id = 'YOUR_SUBMISSION_ID'; + +# View recent request tracking +SELECT * FROM request_metadata +ORDER BY created_at DESC +LIMIT 20; +``` + +--- + +## Issue Checklist + +- [ ] All 6 manual tests pass +- [ ] All 4 database queries return expected results +- [ ] Performance benchmarks meet targets +- [ ] No memory leaks detected +- [ ] Lock monitoring functions correctly +- [ ] Error recovery works +- [ ] UI reflects state accurately + +**Estimated Time:** 1 hour total