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.

.maestro/native-trail/maps.yamlmodified+21-0
Changes to .maestro/native-trail/maps.yaml
@@ -41,20 +41,36 @@ name: Native Android trail maps and sticky save
4141 visible: ${INLINE_PROFILE_END_TEXT}
4242 timeout: 15000
4343- takeScreenshot: android-native-inline-elevation-selection
44- tapOn:
45 id: trail-profile-toggle
46- assertVisible: 'Toggle elevation profile, Elevation profile collapsed'
47- takeScreenshot: android-native-inline-profile-collapsed
48- tapOn:
49 id: trail-profile-toggle
50- assertVisible: 'Toggle elevation profile, Elevation profile expanded'
51- extendedWaitUntil:
52 visible: ${INLINE_PROFILE_END_TEXT}
53 timeout: 15000
54- takeScreenshot: android-native-inline-profile-restored
4455- scrollUntilVisible:
4556 element:
4657 id: trail-zoom-in
4758 direction: DOWN
4859- tapOn:
4960 id: trail-zoom-in
61- takeScreenshot: android-native-inline-zoom-in
5062- tapOn:
5163 id: trail-zoom-out
64- takeScreenshot: android-native-inline-zoom-out
5265- tapOn:
5366 id: trail-fit-route
67- takeScreenshot: android-native-inline-fit-route
5468- tapOn:
5569 id: trail-map-3d
5670- assertVisible: '^2D$'
71- takeScreenshot: android-native-inline-map-tilted
5772- tapOn: '^North$'
73- takeScreenshot: android-native-inline-map-north
5874- scrollUntilVisible:
5975 element:
6076 id: trail-map-layer
@@ -83,15 +99,20 @@ name: Native Android trail maps and sticky save
8399- takeScreenshot: android-native-map-outdoors
84100- tapOn:
85101 id: map-zoom-in
102- takeScreenshot: android-native-fullscreen-zoom-in
86103- tapOn:
87104 id: map-zoom-out
105- takeScreenshot: android-native-fullscreen-zoom-out
88106- tapOn:
89107 id: map-fit
108- takeScreenshot: android-native-fullscreen-fit-route
90109- tapOn:
91110 id: map-3d
92111- assertVisible: '^2D$'
112- takeScreenshot: android-native-fullscreen-map-tilted
93113- tapOn:
94114 id: map-north
115- takeScreenshot: android-native-fullscreen-map-north
95116- tapOn:
96117 id: map-profile-toggle
97118- assertVisible: 'Toggle elevation profile, Elevation profile collapsed'
tests/native/trail-journey.tsmodified+13-0
Changes to tests/native/trail-journey.ts
@@ -48,13 +48,20 @@ const maps:SimulatorStep[] = [
4848 {command:'shot',name:'native-profile-collapsed-inline'},
4949 {command:'tapid',text:'trail-profile-toggle'},
5050 {command:'expect',text:'Elevation profile expanded',seconds:10},
51 {command:'expectexact',text:input.inlineProfileEndText,seconds:10},
52 {command:'shot',name:'native-profile-expanded-inline'},
5153 {command:'scrollto',text:'Zoom in'},
5254 {command:'tapid',text:'trail-zoom-in'},
55 {command:'shot',name:'native-inline-zoom-in'},
5356 {command:'tapid',text:'trail-zoom-out'},
57 {command:'shot',name:'native-inline-zoom-out'},
5458 {command:'tapid',text:'trail-fit-route'},
59 {command:'shot',name:'native-inline-fit-route'},
5560 {command:'tapid',text:'trail-map-3d'},
5661 {command:'expectexact',text:'2D',seconds:10},
62 {command:'shot',name:'native-inline-map-tilted'},
5763 {command:'tapexact',text:'North'},
64 {command:'shot',name:'native-inline-map-north'},
5865 {command:'scrollto',text:'Map layer'},
5966 {command:'tapid',text:'trail-map-layer'},
6067 {command:'tapexact',text:'Satellite'},
@@ -73,11 +80,16 @@ const maps:SimulatorStep[] = [
7380 {command:'shot',name:'native-elevation-endpoint'},
7481 {command:'tree',name:'native-elevation-endpoint'},
7582 {command:'tapid',text:'map-zoom-in'},
83 {command:'shot',name:'native-fullscreen-zoom-in'},
7684 {command:'tapid',text:'map-zoom-out'},
85 {command:'shot',name:'native-fullscreen-zoom-out'},
7786 {command:'tapid',text:'map-fit'},
87 {command:'shot',name:'native-fullscreen-fit-route'},
7888 {command:'tapid',text:'map-3d'},
7989 {command:'expectexact',text:'2D',seconds:10},
90 {command:'shot',name:'native-fullscreen-map-tilted'},
8091 {command:'tapid',text:'map-north'},
92 {command:'shot',name:'native-fullscreen-map-north'},
8193 {command:'tapid',text:'map-profile-toggle'},
8294 {command:'expect',text:'Elevation profile collapsed',seconds:10},
8395 {command:'shot',name:'native-profile-collapsed'},
@@ -92,6 +104,7 @@ const maps:SimulatorStep[] = [
92104 {command:'tapid',text:'map-layer'},
93105 {command:'tapexact',text:layer},
94106 {command:'expect',text:`Map layer: ${layer}`,seconds:10},
107 {command:'shot',name:`native-fullscreen-layer-${layer.toLowerCase()}`},
95108 ]),
96109 {command:'back'},
97110 {command:'scrollto',text:'Weather'},