π Wizard Retry Fix - Manual Validation Guide
Deployment:https://payroll-pipeline-cbs.vercel.appCommit SHA:
7472c75Date: 2026-02-06
π― What Weβre Testing
Fix: Retry logic for readiness check after save to handle BigQuery eventual consistency Expected Behavior:- Save succeeds β Readiness check retries if config not immediately queryable
- Wizard unblocks when businesses become ready
- Persisted config visible after page refresh
π Pre-Test Setup
-
Open Browser DevTools:
- Press
F12or Right-click β Inspect - Go to Network tab
- Go to Console tab
- Clear console logs
- Press
-
Navigate to Wizard:
- URL:
https://payroll-pipeline-cbs.vercel.app/ingestion - Log in if needed
- Complete Map Columns step if not already done
- URL:
β Test 1: Save Business Configuration
Steps:
- Navigate to Preflight step
- Find a business showing βnot readyβ status
- Click βConfigureβ button
- In the drawer:
- Set PEPM rate to
12.00 - Click βSaveβ
- Set PEPM rate to
- Observe:
- Drawer behavior (should stay open during refresh)
- Network requests
- Console logs
Expected Results:
Network Tab:- β
PUT /api/v1/admin/onboarding/businesses/{id}/saveβ 200 OK- Headers include:
x-org-id: cbs-main - Body includes:
period_label: 2025-12-01
- Headers include:
- β
GET /api/v1/intake/ingestion-wizard/readiness?...β 200 OK- Query params include:
period_label=2025-12-01 - May see multiple GET requests if retry logic triggers (up to 3)
- Query params include:
- β
[handleDrawerSuccess] Readiness check succeeded after X retries(if retries needed) - β OR: No retry logs if config immediately queryable
- β No errors
- β Drawer stays open during preflight refresh
- β Drawer closes after preflight refresh completes
- β Success toast: βBusiness configured successfullyβ
- Network tab showing PUT + GET requests
- Console showing retry logs (if any)
β Test 2: Wizard Unblocks After Save
Steps:
- After Test 1 completes (drawer closed)
- Observe Preflight UI
- Check business status
- Check Processing button state
Expected Results:
UI Updates:- β Business that was saved now shows βreadyβ status
- β Readiness summary updates (e.g., β5 businesses readyβ)
- β Processing button becomes enabled (if all businesses ready)
- β No blocking message: βX businesses not readyβ
- β
GET /api/v1/intake/ingestion-wizard/preflightβ 200 OK- Response includes updated classification arrays
- Preflight UI showing business as βreadyβ
- Processing button enabled (if applicable)
β Test 3: Persistence After Page Refresh
Steps:
- After Test 1 completes
- Hard refresh page:
Ctrl+F5(Windows) orCmd+Shift+R(Mac) - Navigate back to Preflight step
- Click βConfigureβ on the same business that was saved
Expected Results:
UI Behavior:- β Business still shows as βreadyβ after refresh
- β Opening drawer shows persisted PEPM configuration
- β
PEPM rate matches saved value (
12.00) - β No need to reconfigure
- β
GET /api/v1/admin/onboarding/businesses?...when opening drawer- Query params include:
period_label=2025-12-01&search={business_id} - Response includes saved PEPM configuration
- Query params include:
- Drawer showing persisted PEPM rate
- Network request showing GET with period_label
β Test 4: Retry Logic Behavior (Detailed)
Steps:
- Save a business configuration
- Monitor Network tab for readiness requests
- Check Console for retry logs
Expected Scenarios:
Scenario A: Config Immediately Queryable- β
Single
GET /readinessrequest - β No retry logs in console
- β Business shows as ready immediately
- β
Multiple
GET /readinessrequests (up to 3) - β
Console shows:
[handleDrawerSuccess] Readiness check retry 1/3 - β
Console shows:
[handleDrawerSuccess] Readiness check succeeded after X retries - β Business shows as ready after retry succeeds
- β
3
GET /readinessrequests - β
Console shows:
[handleDrawerSuccess] Readiness check completed after 3 retries - proceeding - β Wizard proceeds anyway (save succeeded, backend will catch up)
- β User sees success toast
- Network tab showing multiple GET requests (if retries occur)
- Console showing retry logs
β Test 5: Multiple Saves in Sequence
Steps:
- Save first business configuration
- Wait for drawer to close
- Save second business configuration
- Verify both show as ready
Expected Results:
UI Behavior:- β First save completes successfully
- β Second save completes successfully
- β Both businesses show as ready
- β No race conditions or stale state
- β Two PUT requests (one per save)
- β Multiple GET /readiness requests (one per save, with retries if needed)
π Troubleshooting
Issue: Wizard Still Blocks After Save
Check:- Network tab: Does readiness GET return
is_ready: true? - Console: Are there retry logs?
- Console: Any errors?
- Backend readiness endpoint not seeing saved config
period_labelmismatch between save and readiness query- Backend eventual consistency longer than 1.5 seconds (3 retries Γ 500ms)
- Increase retry delay or max retries if needed
- Verify backend readiness endpoint uses correct
period_label
Issue: Drawer Shows Stale Data
Check:- Network tab: Does GET
/admin/onboarding/businessesreturn fresh data? - Console: Does
handleConfigureBusinessfetch complete?
loadPreflight()not completing before drawer closes- Business config fetch failing silently
- Verify
loadPreflight()completes before drawer closes - Check error handling in
handleConfigureBusiness
Issue: Retry Logic Not Triggering
Check:- Console: Are retry logs present?
- Network tab: Multiple GET requests?
- Config immediately queryable (good!)
- Retry logic not executing (check code)
- Verify retry logic code is deployed
- Check if
savedBusinessIdis set correctly
π Validation Checklist
Test Date: _______________Tester: _______________
Browser: _______________
Environment: Production
| Test | Status | Notes | Screenshots |
|---|---|---|---|
| Test 1: Save Business Configuration | β³ | ||
| Test 2: Wizard Unblocks After Save | β³ | ||
| Test 3: Persistence After Page Refresh | β³ | ||
| Test 4: Retry Logic Behavior | β³ | ||
| Test 5: Multiple Saves in Sequence | β³ |
β Success Criteria
All tests pass when:- β Save succeeds (PUT 200)
- β Readiness check retries if needed (up to 3 attempts)
- β Wizard unblocks after save (businesses show as ready)
- β Persistence works after page refresh
- β No console errors
- β No network errors
π Notes
- Retry logic only logs in dev mode (
NODE_ENV !== 'production') - Production builds wonβt show retry logs (but retries still happen)
- If all retries fail, wizard proceeds anyway (save succeeded)
- Backend eventual consistency typically resolves within 500ms-1s
Next Steps: Run manual validation and update this document with results and screenshots.