Verify the iPhone build locally, and scope what still needs a phone
Added integration_test/ride_simulation_test.dart, which drives a whole recording against a simulator that is genuinely moving, then reads the stored ride back through the provider graph -- the app is uninstalled when a run ends, so anything worth knowing has to be reported from inside the test. Attacked an assumption and it survived. simctl location start --speed=15 interpolates between waypoints over time, unlike Android's teleporting geo fix, so it looked like speed might finally be testable locally. A probe captured 8 fixes, every one 0.0 m/s. The recorded ride shows the consequence plainly: 245.5m of distance with zero moving time, because every sample sits under the 1.5 km/h noise floor. What that leaves verified locally: the app builds and launches, the real UI renders, Drift opens against iOS storage, plugins register, CoreLocation delivers fixes, distance accumulates from real movement, trips persist and list, the detail screen and its map render, and navigation works. Also confirmed visually that the permission dialog shows the specific usage string written for Guideline 5.1.1. What still needs a phone: speed, moving time, speed colouring, elevation against correlated GPS error, battery, and above all whether iOS suspends a stationary app mid-ride -- the item that decides whether geolocator is sufficient. Named gap: no screenshot of the iOS trips or detail screens. Verified functionally, but tapping the iOS simulator is not scriptable and a fresh install re-prompts for location over the UI. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -797,3 +797,36 @@ tests the project has ever had.
|
||||
|
||||
**What remains is not code.** It is a rider, two phones, and
|
||||
[REAL-RIDE-CHECKLIST.md](REAL-RIDE-CHECKLIST.md).
|
||||
|
||||
|
||||
---
|
||||
|
||||
## iPhone verification pass
|
||||
|
||||
Scoped and executed: [IOS-VERIFICATION.md](IOS-VERIFICATION.md).
|
||||
|
||||
**An assumption was attacked and survived.** `simctl location start --speed=15`
|
||||
interpolates between waypoints over time — unlike Android's teleporting `geo fix` — which
|
||||
looked like it might make speed testable locally at last. A probe captured 8 fixes, every
|
||||
one reporting **0.0 m/s**. So "no simulator produces velocity" holds on iOS too, and the
|
||||
real-ride checklist remains mandatory.
|
||||
|
||||
A full ride was recorded on the simulator through the real UI:
|
||||
|
||||
```
|
||||
trip=1 points=18 distanceM=245.5 maxSpeedKmh=0.0 movingMs=0 segments=1
|
||||
```
|
||||
|
||||
245 metres of travel with **zero moving time** — correct behaviour given speed is pinned
|
||||
at zero, and a compact illustration of exactly what local testing cannot reach.
|
||||
|
||||
Also confirmed visually on iOS: the record screen renders correctly, and the location
|
||||
permission dialog displays the specific usage string written for Guideline 5.1.1.
|
||||
|
||||
`integration_test/ride_simulation_test.dart` is kept — it is a reusable local
|
||||
verification, not a throwaway.
|
||||
|
||||
**Named gap:** no screenshot of the iOS trips list or detail screen. Both are verified
|
||||
functionally, but tapping the iOS simulator is not scriptable the way `adb shell input
|
||||
tap` is, and a fresh install re-prompts for location over the UI. Android's equivalents
|
||||
were checked visually.
|
||||
|
||||
Reference in New Issue
Block a user