ReviewOS

also looking at this

stacks/wildloop

feat: native trail maps and complete native mobile screens

#1017
Draft chris wants to merge codex/trail-experience into main
60 files +2505 -823

Review threads live on the whole diff, not on one commit, so none are shown here - a thread's line means something in the branch's final form, and painting it into an intermediate step would put it on code it is not about.

tests/native/trail-journey.tsmodified+30-0
Changes to tests/native/trail-journey.ts
@@ -44,6 +44,21 @@ const maps:SimulatorStep[] = [
4444 {command:'shot',name:'native-profile-collapsed-inline'},
4545 {command:'tapid',text:'trail-profile-toggle'},
4646 {command:'expect',text:'Elevation profile expanded',seconds:10},
47 {command:'scrollto',text:'Zoom in'},
48 {command:'tapid',text:'trail-zoom-in'},
49 {command:'tapid',text:'trail-zoom-out'},
50 {command:'tapid',text:'trail-fit-route'},
51 {command:'tapid',text:'trail-map-3d'},
52 {command:'expectexact',text:'2D',seconds:10},
53 {command:'tapexact',text:'North'},
54 {command:'scrollto',text:'Map layer'},
55 {command:'tapid',text:'trail-map-layer'},
56 {command:'tapexact',text:'Satellite'},
57 {command:'expect',text:'Map layer: Satellite',seconds:10},
58 {command:'shot',name:'native-inline-satellite'},
59 {command:'tapid',text:'trail-map-layer'},
60 {command:'tapexact',text:'Outdoors'},
61 {command:'expect',text:'Map layer: Outdoors',seconds:10},
4762 {command:'scrollto',text:'Expand map'},
4863 {command:'tapid',text:'trail-map-fullscreen'},
4964 {command:'expectid',text:'trail-full-map',seconds:10},
@@ -136,6 +151,14 @@ const gpx:SimulatorStep[] = [
136151 {command:'tree',name:'native-gpx-share-sheet'},
137152 {command:'tapexact',text:'Copy'},
138153 {command:'exec',name:'verify-gpx'},
154 {command:'openurl',url:`wildloop://trail/${input.trailId}`},
155 {command:'expectid',text:'trail-sticky-actions',seconds:15},
156 {command:'scrollto',text:'Export GPX'},
157 {command:'tapid',text:'trail-map-export'},
158 {command:'expectexact',text:'Copy',seconds:10},
159 {command:'shot',name:'native-inline-gpx-share-sheet'},
160 {command:'tapexact',text:'Copy'},
161 {command:'exec',name:'verify-gpx'},
139162]
140163const planner:SimulatorStep[] = [
141164 ...fullMap,
@@ -156,6 +179,13 @@ const location:SimulatorStep[] = [
156179 {command:'expect',text:'Your location is shown',seconds:20},
157180 {command:'tree',name:'native-location'},
158181 {command:'shot',name:'native-location'},
182 {command:'openurl',url:`wildloop://trail/${input.trailId}`},
183 {command:'expectid',text:'trail-sticky-actions',seconds:15},
184 {command:'scrollto',text:'My location'},
185 {command:'tapid',text:'trail-map-locate'},
186 {command:'expect',text:'Your location is shown',seconds:20},
187 {command:'shot',name:'native-inline-location'},
188 {command:'tree',name:'native-inline-location'},
159189]
160190return [
161191 {name:'maps',steps:maps,completion:'PASS expectid trail-sticky-actions'},