ReviewOS

also looking at this

craft-native/craft

fix(mobile): preserve native editing, navigation, and durable media requests

#369
Merged chris wants to merge codex/native-vertical-scroll-tab-swipes into main
36 files +864 -185
.github/workflows/mobile-e2e.ymlmodified+25-13
Changes to .github/workflows/mobile-e2e.yml
@@ -24,6 +24,7 @@ name: Mobile E2E Testing
2424# GitHub Actions does not resolve YAML anchors, so the two path filters are
2525# written out rather than shared. Keep them identical.
2626on:
27 workflow_call: {}
2728 push:
2829 branches: [main]
2930 paths:
@@ -136,11 +137,11 @@ jobs:
136137 strategy:
137138 fail-fast: false
138139 matrix:
139 suite: ${{ fromJSON(inputs.scope == 'ios-render' && '["uikit"]' || inputs.scope == 'ios-navigation' && '["navigation"]' || '["uikit","navigation"]') }}
140 suite: ${{ fromJSON(inputs.scope == 'ios-render' && '["uikit"]' || inputs.scope == 'ios-navigation' && inputs.selectors != '' && '["navigation"]' || inputs.scope == 'ios-navigation' && '["navigation-unit","navigation-ui-core","navigation-ui-controls"]' || '["uikit","navigation-unit","navigation-ui-core","navigation-ui-controls"]') }}
140141 runs-on: macos-15
141 # Compile and run each native fixture on its own fresh runner. Combining
142 # both consumed the job budget before navigation finished on slower hosts.
143 # Each suite keeps the same bounded backstop and strict XCTest assertions.
142 # Every navigation UI case belongs to exactly one required group. The large
143 # controls journey gets its own runner; core navigation, unit reconciliation
144 # and UIKit retain separate results and the same bounded backstop.
144145 timeout-minutes: 45
145146 env:
146147 CRAFT_EVIDENCE_LABEL: ios-native
@@ -167,15 +168,15 @@ jobs:
167168 # @stacksjs/stx compiler (`stx native compile`) so this job cannot silently change
168169 # underneath us. Both iOS jobs and Android use the same compiler revision.
169170 - name: Checkout stx compiler
170 if: ${{ matrix.suite == 'navigation' }}
171 if: ${{ startsWith(matrix.suite, 'navigation') }}
171172 uses: actions/checkout@v6
172173 with:
173174 repository: stacksjs/stx
174 ref: 617826427dea89a203e7f6d254dffea211bad1ba
175 ref: 9d003f90714dc5c36daf262aaaa285a9671245e7
175176 path: .stx-compiler
176177
177178 - name: Install stx compiler dependencies
178 if: ${{ matrix.suite == 'navigation' }}
179 if: ${{ startsWith(matrix.suite, 'navigation') }}
179180 working-directory: .stx-compiler
180181 run: bun install --frozen-lockfile
181182
@@ -192,10 +193,11 @@ jobs:
192193 id: navigation
193194 # Reconciliation and navigation are independent suites. Keep the
194195 # navigation evidence when reconciliation fails; the job still fails.
195 if: ${{ !cancelled() && matrix.suite == 'navigation' }}
196 if: ${{ !cancelled() && startsWith(matrix.suite, 'navigation') }}
196197 env:
197198 STX_CLI: ${{ github.workspace }}/.stx-compiler/packages/stx/bin/cli.ts
198 CRAFT_ONLY_TESTING: ${{ inputs.selectors }}
199 CRAFT_ONLY_TESTING: ${{ matrix.suite == 'navigation-unit' && 'NativeNavigationUnitTests' || inputs.selectors }}
200 CRAFT_NATIVE_NAVIGATION_GROUP: ${{ matrix.suite == 'navigation-ui-core' && 'core' || matrix.suite == 'navigation-ui-controls' && 'controls' || '' }}
199201 CRAFT_NATIVE_NAVIGATION_RESULT: ${{ github.workspace }}/artifacts/mobile-e2e/ios-native/navigation.xcresult
200202 run: |
201203 mkdir -p artifacts/mobile-e2e/ios-native
@@ -272,6 +274,11 @@ jobs:
272274 with:
273275 version: '0.11.101'
274276
277 - name: Setup Bun for the frozen stx compiler lockfile
278 uses: oven-sh/setup-bun@v2
279 with:
280 bun-version: '1.4.3'
281
275282 - name: Install XcodeGen
276283 run: brew install xcodegen
277284
@@ -282,12 +289,12 @@ jobs:
282289 # The summary requires both jobs, including every original test suite.
283290 # The multi-screen fixture is compiled from real .stx sources. Pin the
284291 # @stacksjs/stx compiler (`stx native compile`) so this job cannot silently change
285 # underneath us. This release also carries a Bun-compatible lockfile.
292 # underneath us. Bun 1.4.3 installs this release's frozen lockfile.
286293 - name: Checkout stx compiler
287294 uses: actions/checkout@v6
288295 with:
289296 repository: stacksjs/stx
290 ref: 617826427dea89a203e7f6d254dffea211bad1ba
297 ref: 9d003f90714dc5c36daf262aaaa285a9671245e7
291298 path: .stx-compiler
292299
293300 - name: Install stx compiler dependencies
@@ -402,6 +409,11 @@ jobs:
402409 with:
403410 version: '0.11.101'
404411
412 - name: Setup Bun for the frozen stx compiler lockfile
413 uses: oven-sh/setup-bun@v2
414 with:
415 bun-version: '1.4.3'
416
405417 - name: Setup Java
406418 uses: actions/setup-java@v6
407419 with:
@@ -432,7 +444,7 @@ jobs:
432444 uses: actions/checkout@v6
433445 with:
434446 repository: stacksjs/stx
435 ref: 617826427dea89a203e7f6d254dffea211bad1ba
447 ref: 9d003f90714dc5c36daf262aaaa285a9671245e7
436448 path: .stx-compiler
437449
438450 - name: Install Android stx compiler dependencies
@@ -639,7 +651,7 @@ jobs:
639651 - uses: actions/checkout@v6
640652 with:
641653 repository: stacksjs/stx
642 ref: 617826427dea89a203e7f6d254dffea211bad1ba
654 ref: 9d003f90714dc5c36daf262aaaa285a9671245e7
643655 path: .stx-compiler
644656 - run: bun install --frozen-lockfile
645657 working-directory: .stx-compiler