Phase 1 — Data & GPS Tests

Test 1 — Tour Data Loads

JSON fetches successfully
Waiting...
Correct number of stops (20)
Waiting...
First stop name correct
Waiting...
Last stop has completion block
Waiting...
Video filenames use .mp4 format
Waiting...
Image paths use assets/ prefix
Waiting...

Test 2 — GPS Math

Distance calculation (Haversine)
Waiting...
Bearing calculation
Waiting...
Direction from bearing
Waiting...
Relative bearing calculation
Waiting...
Arrival radius — inside
Waiting...
Arrival radius — outside
Waiting...

Test 4 — Tour Manager

TourManager loads tour data
Waiting...
First stop is correct
Waiting...
advanceToNextStop increments correctly
Waiting...
hasNextStop returns false at last stop
Waiting...
isComplete detects last stop
Waiting...
getCompletionMessage present on last stop
Waiting...
getNavigationData returns correct stop info
Waiting...
isWithinArrivalRadius detects arrival
Waiting...

Test 5 — Video End & Stop Progression

loadCurrentStopAssets sets Stop-1.mp4
Waiting...
advance + loadAssets changes src to Stop-2.mp4
Waiting...
isComplete false mid-tour, true at stop 20
Waiting...
getCompletionMessage returns text at stop 20
Waiting...
resetElements re-enables place button
Waiting...
resetElements hides tour-guide and blob-shadow
Waiting...

Test 3 — Live GPS (requires permission)

Geolocation supported
Waiting...
getCurrentPosition resolves
Waiting...
Distance from Stop 1 calculated
Waiting...