FleetOS Live Test Plan — Sprint 2
Run on: https://fleetos.us Date: 2026-02-09 Focus: WhatsApp/Twilio, Magic Links, Emergent Contacts, Viral Elements, Team Access Time: ~45 minutes (with two phones) Pre-req: Clear localStorage before starting (DevTools > Application > Local Storage > delete all)
SETUP CHECKLIST
Before starting, confirm these are in place:
TEST 1: Fleet Signup (Baseline)
Goal: Fresh fleet account with demo data
Open incognito window →
https://fleetos.usClick "I'm a Fleet Operator" (or go directly to
/?view=FLEETOS_FLEET_ONBOARDING)Fill in:
Fleet Name: your fleet company name (required)
Your Name: your name (optional)
Work Email: your real email (required, unique)
WhatsApp Number: your real phone number, Phone 1 (optional, for notifications)
Click "GET STARTED"
Wait for dashboard to load
Expected:
Verify in Supabase:
📝 Note your fleet company_id: ________________
TEST 2: Supplier Signup (Baseline)
Goal: Fresh supplier account on second phone
On second phone (or second incognito window):
https://fleetos.usClick "I'm a Supplier" (or
/?view=FLEETOS_SUPPLIER_ONBOARDING)Fill in:
Business Name:
Test Tyres [today's date]Your Name: Friend's name
Work Email: different email
Click "GET STARTED"
Expected:
📝 Note your supplier company_id: ________________
TEST 3: Fleet Adds Supplier as Contact
Goal: Connect the two accounts so WhatsApp flow can be tested
As Fleet user (Phone 1 browser): Go to My Suppliers tab
Click "+ Add Supplier"
Fill in:
Name: Supplier's company name, e.g. "Test Tyres" (required — placeholder says "Name (required)")
WhatsApp / Phone: Supplier's real WhatsApp number, Phone 2 (placeholder "+27...")
Category: "Tyres" (placeholder "Category (e.g. Tyres)")
Click "ADD CONTACT"
Expected:
Verify in Supabase:
TEST 4: Fleet Creates Request → WhatsApp Sent to Supplier 🔑
Goal: End-to-end WhatsApp notification with magic link
As Fleet user: Click "+ Add" in header to open the Add Job modal
Select supplier: choose "EXISTING CONTACT" tab, then pick the supplier you just added from the dropdown
Fill in:
Vehicle:
Truck #99(select from saved vehicles, or click "+ NEW" and type it in)Location:
123 Test Road, JohannesburgWhat's Needed:
Live test - flat tire needs replacementTechnician Name: (optional, skip for now)
Bay / Workspace: (optional, skip for now)
Part Needed: (optional, skip for now)
Urgency: click "NOW" (maps to URGENT)
Click "ADD JOB"
Expected:
Verify in Supabase:
📝 Note the request_id: ________________ 📝 Screenshot the WhatsApp message received
TEST 5: Supplier Clicks Magic Link → Responds 🔑
Goal: Magic link one-tap response flow
On Phone 2 (Supplier): Tap the magic link in the WhatsApp message
Browser opens
fleetos.us/respond?requestId=XXX&phone=+XXXX
Expected — Step-by-step flow in RequestResponseView:
Tap "Respond"
Enter quote:
R 2500Tap "Next"
Enter ETA:
30 minutesTap "Confirm"
Now check Fleet side: 8. On Phone 1 (Fleet browser): Refresh the dashboard
Verify in Supabase:
TEST 6: Emergent Contact Creation 🔑
Goal: Verify zero-friction contact creation via magic link
What should have happened in Test 5: When the supplier clicked the magic link, ContactService.getOrCreate() was called. If this was a new phone number, a contact was created without signup.
Verify in Supabase:
Expected:
TEST 7: Emergent Contact with Unknown Number 🔑
Goal: Send request to a phone that has NEVER signed up
As Fleet user: Create a new request
Add a contact with a third phone number (someone who has never used FleetOS)
Or use a number you control but haven't registered
Submit the request
When that person clicks the magic link in WhatsApp and responds:
Expected:
TEST 8: WhatsApp Inbound Commands (Webhook) 🔑
Goal: Test the webhook that processes inbound WhatsApp replies
Pre-req: Twilio webhook must be configured (see Setup Checklist)
From Phone 2 (Supplier): Reply to the WhatsApp thread from FleetOS
Test each command:
HELP
Receive command list message
None
ACK
Receive "Request acknowledged" confirmation
status → acknowledged
ACCEPT
Receive "Job accepted" confirmation
status → accepted
DECLINE Too far
Receive "Request declined" confirmation
status → declined
After each command, check the Fleet dashboard (refresh)
Expected:
Verify in Supabase:
⚠️ If webhook not working:
Check Twilio Console > Messaging > Logs for errors
Check Supabase > Edge Functions >
whatsapp-webhook> LogsVerify webhook URL is correct:
https://{PROJECT_REF}.supabase.co/functions/v1/whatsapp-webhook
TEST 9: Complete Job Flow (Dashboard)
Goal: Full lifecycle via dashboard action panels
As Supplier user: Find an "In Progress" card on dashboard
If none exists: Accept a pending card first, then it should progress
Expand the card
Find "Mark complete" panel
Expected:
Enter final cost:
2800Select VAT type:
Incl. VAT(orExcl. VAT)Enter note:
Replaced with new Goodyear 285/70R19.5Optionally attach an invoice file
Click "Complete Job"
Expected:
Verify in Supabase:
TEST 10: Team Access / Share Link 🔑
Goal: Share dashboard with a team member (no signup)
As Fleet user: Click "Share" button in header
A share modal/link should appear
Copy the team access link (format:
fleetos.us/team?token=BASE64...)Open the link in a new incognito window (or send to a different device)
Expected:
Verify in Supabase:
TEST 11: Viral Triggers 🔑
Goal: Verify viral moments fire at the right times
Viral moments are probabilistic — they won't always fire. Do these actions and look for toasts/share prompts:
Create first real request
FIRST_REQUEST
80%
Share prompt / toast
Supplier acknowledges
ACKNOWLEDGMENT
50%
"Your supplier acknowledged!" prompt
Job completed
RELIEF
60%
"Job done!" share prompt
5th job total
MILESTONE_5
90%
Milestone celebration toast
Supplier gives great quote
PRIDE
40%
"Great quote!" share moment
Test steps:
Perform the above actions naturally through the test flow
Watch for toast notifications or share prompts after each action
If you don't see one, it's likely the probability didn't trigger — try again
Verify in Supabase:
Expected:
TEST 12: Invite Flow (Supplier Invites Fleet)
Goal: Bidirectional invite via invite code
As Supplier user: Go to "My Fleets" tab
Click "+ Invite Fleet"
Fill in:
Company name:
New Fleet IncEmail: a real email you can check
Submit
Expected:
Check the email inbox
Click the invite link
Expected:
Verify in Supabase:
TEST 13: Login / Re-Authentication
Goal: Verify session persistence and magic link login
As Fleet user: Click "Log out"
Verify: Returned to landing page
Refresh page — should stay on landing (NOT auto-redirect)
Click "Login"
Enter the fleet email used in Test 1
Click "GO"
Expected:
TEST 14: Mobile Responsiveness
Goal: All flows work on actual mobile device
Open
https://fleetos.uson your phone (not DevTools emulator)Complete a quick signup
Verify:
RESULTS TABLE
1
Fleet Signup
2
Supplier Signup
3
Fleet Adds Supplier Contact
4
Request → WhatsApp Sent
5
Magic Link → Supplier Responds
6
Emergent Contact Created
7
Unknown Number → Emergent
8
WhatsApp Inbound Commands
9
Complete Job Flow
10
Team Access / Share Link
11
Viral Triggers
12
Invite Flow
13
Login / Re-Auth
14
Mobile Responsiveness
TROUBLESHOOTING
WhatsApp not received
Check browser console for
[DEMO MODE]— meansVITE_SUPABASE_URLnot setCheck Supabase Edge Function logs: Dashboard > Edge Functions >
send-whatsapp> LogsCheck Twilio Console > Messaging > Logs
Verify Twilio Sandbox is active (re-join if expired: text
join <keyword>to+1 415 523 8886)
Magic link doesn't load
Check the URL format: should be
fleetos.us/respond?requestId=UUID&phone=+XXXXCheck if token expired (24h default): decode the base64 token, check
expfieldCheck browser console for errors
Webhook commands not working
Verify Twilio webhook URL:
https://{PROJECT}.supabase.co/functions/v1/whatsapp-webhookCheck Supabase Edge Function logs for
whatsapp-webhookVerify Twilio signature validation is matching (check
TWILIO_AUTH_TOKENenv var in Supabase)
Emergent contact not created
Check Supabase
contactstable for the phone number (digits only, no formatting)Check
respond-to-requestedge function logsThe contact is created by
ContactService.getOrCreate()— check if it ran
Viral events not appearing
Probability-based — may not trigger every time
Check 7-day cooldown: same user + same moment_type within 7 days = suppressed
Check
ViralTriggerEngine.tsfor exact probabilities per moment type
NEXT STEPS
After running all tests, document any failures in the Notes column above. Priority fixes: WhatsApp delivery > Magic link flow > Emergent contacts > Viral elements.
Last updated
Was this helpful?