QA & Bug Fixes

March 1-2, 2026 — Staging QA on ricoya.ipnoelp.com — All issues resolved

Nicky's QA Checklist

8 issues reported during staging QA. All fixed and verified across three test accounts (Safari, Chrome).

#IssueRoot CauseStatus
1AUnable to load addresses in profile10 missing columns in addresses tableFixed
1BPages not loading data on navigationSWR aggressive revalidation + stale cacheFixed
3APhone number input — symbols not strippedNo input sanitization on phone fieldFixed
3BPhone number not showing in cartCart didn't read phone from user profileFixed
4ANotifications not working on SafariPush subscription not saving to SupabaseFixed
4BRider notification + delivery console refreshMissing notification triggers, no auto-refreshFixed
5Can't assign orders to drivers from AdminDriver endpoint bugs (firestore_id, restaurant load)Fixed
6Unable to load imagesFirebase Storage URLs broken post-migrationFixed

Driver Delivery Flow — 5 Endpoint Fixes

End-to-end driver testing revealed every step after claiming an order was broken. Five separate bugs fixed:

1
Claim order — 400
/api/driver/orders/undefined/claim — API responses missing firestore_id. Fixed by mapping firestore_id: String(row.id) in both order list endpoints.
2
Restaurant load — 500
Driver restaurants route referenced non-existent legacy_numeric_id column. Changed to id.
3
Restaurant lookup — 404
Single restaurant endpoint only tried numeric ID. Added fallback to legacy_firestore_id.
4
Pickup — 400
Tried to write pickup_verified_by_user_id column that doesn't exist. Removed from update payload.
5
Proof of delivery — 500
storage_type column doesn't exist + Safari client-side insert failing. Moved insert to server-side /api/uploads endpoint.
FileChange
api/driver/orders/route.tsAdded firestore_id mapping
api/driver/orders/available/route.tsAdded firestore_id mapping
api/driver/restaurants/route.tslegacy_numeric_id -> id
api/driver/restaurants/[id]/route.tsAdded legacy_firestore_id fallback
api/driver/orders/[id]/pickup/route.tsRemoved invalid column
api/uploads/route.tsServer-side file_uploads insert
repositories/fileUploadsRepo.tsRewrote to use server endpoint
data/models.tsRemoved storage_type from FileUpload

Push Notification Testing

All notification flows verified end-to-end across three browsers:

FlowBrowserAccountStatus
Driver notificationsSafarinseanchristopherWorking
Customer notificationsChromechristophersean08Working
Manager notificationsChromesean@omelasaiWorking

Safari subscription issue: Push subscription wasn't saving because localStorage flag was already set from a previous session. Disable/re-enable triggered the full subscribe flow.

UI Fixes

IssueRoot CauseFix
Order tracking badge not clickable Drag detection threshold was 2px — too sensitive for taps Increased to 8px in Header.tsx
403 errors on /api/admin/restaurants for customers ManagerSidebar and AdminSidebar rendered unconditionally, firing admin API calls on mount Wrapped with route-based conditions: only render on /manager/* and /admin/* pages
Detailed docs: Driver Flow Fixes | QA Checklist | UI Fixes | Notifications
Back to Ricoya