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

  1. Open incognito windowhttps://fleetos.us

  2. Click "I'm a Fleet Operator" (or go directly to /?view=FLEETOS_FLEET_ONBOARDING)

  3. 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)

  4. Click "GET STARTED"

  5. 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

  1. On second phone (or second incognito window): https://fleetos.us

  2. Click "I'm a Supplier" (or /?view=FLEETOS_SUPPLIER_ONBOARDING)

  3. Fill in:

    • Business Name: Test Tyres [today's date]

    • Your Name: Friend's name

    • Work Email: different email

  4. 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

  1. As Fleet user (Phone 1 browser): Go to My Suppliers tab

  2. Click "+ Add Supplier"

  3. 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)")

  4. 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

  1. As Fleet user: Click "+ Add" in header to open the Add Job modal

  2. Select supplier: choose "EXISTING CONTACT" tab, then pick the supplier you just added from the dropdown

  3. Fill in:

    • Vehicle: Truck #99 (select from saved vehicles, or click "+ NEW" and type it in)

    • Location: 123 Test Road, Johannesburg

    • What's Needed: Live test - flat tire needs replacement

    • Technician Name: (optional, skip for now)

    • Bay / Workspace: (optional, skip for now)

    • Part Needed: (optional, skip for now)

    • Urgency: click "NOW" (maps to URGENT)

  4. Click "ADD JOB"

Expected:

Verify in Supabase:

📝 Note the request_id: ________________ 📝 Screenshot the WhatsApp message received


Goal: Magic link one-tap response flow

  1. On Phone 2 (Supplier): Tap the magic link in the WhatsApp message

  2. Browser opens fleetos.us/respond?requestId=XXX&phone=+XXXX

Expected — Step-by-step flow in RequestResponseView:

  1. Tap "Respond"

  1. Enter quote: R 2500

  2. Tap "Next"

  1. Enter ETA: 30 minutes

  2. Tap "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

  1. As Fleet user: Create a new request

  2. Add a contact with a third phone number (someone who has never used FleetOS)

    • Or use a number you control but haven't registered

  3. Submit the request

  4. 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)

  1. From Phone 2 (Supplier): Reply to the WhatsApp thread from FleetOS

Test each command:

Send This
Expected Response
DB Change

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

  1. 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 > Logs

  • Verify 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

  1. As Supplier user: Find an "In Progress" card on dashboard

    • If none exists: Accept a pending card first, then it should progress

  2. Expand the card

  3. Find "Mark complete" panel

Expected:

  1. Enter final cost: 2800

  2. Select VAT type: Incl. VAT (or Excl. VAT)

  3. Enter note: Replaced with new Goodyear 285/70R19.5

  4. Optionally attach an invoice file

  5. Click "Complete Job"

Expected:

Verify in Supabase:


Goal: Share dashboard with a team member (no signup)

  1. As Fleet user: Click "Share" button in header

  2. A share modal/link should appear

  3. Copy the team access link (format: fleetos.us/team?token=BASE64...)

  4. 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:

Action
Viral Moment
Probability
What to Look For

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:

  1. Perform the above actions naturally through the test flow

  2. Watch for toast notifications or share prompts after each action

  3. 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

  1. As Supplier user: Go to "My Fleets" tab

  2. Click "+ Invite Fleet"

  3. Fill in:

    • Company name: New Fleet Inc

    • Email: a real email you can check

  4. Submit

Expected:

  1. Check the email inbox

  2. Click the invite link

Expected:

Verify in Supabase:


TEST 13: Login / Re-Authentication

Goal: Verify session persistence and magic link login

  1. As Fleet user: Click "Log out"

  2. Verify: Returned to landing page

  3. Refresh page — should stay on landing (NOT auto-redirect)

  4. Click "Login"

  5. Enter the fleet email used in Test 1

  6. Click "GO"

Expected:


TEST 14: Mobile Responsiveness

Goal: All flows work on actual mobile device

  1. Open https://fleetos.us on your phone (not DevTools emulator)

  2. Complete a quick signup

  3. Verify:


RESULTS TABLE

#
Test
Pass ✅ / Fail ❌
Notes

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

  1. Check browser console for [DEMO MODE] — means VITE_SUPABASE_URL not set

  2. Check Supabase Edge Function logs: Dashboard > Edge Functions > send-whatsapp > Logs

  3. Check Twilio Console > Messaging > Logs

  4. Verify Twilio Sandbox is active (re-join if expired: text join <keyword> to +1 415 523 8886)

  1. Check the URL format: should be fleetos.us/respond?requestId=UUID&phone=+XXXX

  2. Check if token expired (24h default): decode the base64 token, check exp field

  3. Check browser console for errors

Webhook commands not working

  1. Verify Twilio webhook URL: https://{PROJECT}.supabase.co/functions/v1/whatsapp-webhook

  2. Check Supabase Edge Function logs for whatsapp-webhook

  3. Verify Twilio signature validation is matching (check TWILIO_AUTH_TOKEN env var in Supabase)

Emergent contact not created

  1. Check Supabase contacts table for the phone number (digits only, no formatting)

  2. Check respond-to-request edge function logs

  3. The contact is created by ContactService.getOrCreate() — check if it ran

Viral events not appearing

  1. Probability-based — may not trigger every time

  2. Check 7-day cooldown: same user + same moment_type within 7 days = suppressed

  3. Check ViralTriggerEngine.ts for 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?