also looking at this
fix(mobile): preserve native editing, navigation, and durable media requests
#369
36 files
+864
-185
| @@ -24,6 +24,7 @@ name: Mobile E2E Testing | ||
| 24 | 24 | # GitHub Actions does not resolve YAML anchors, so the two path filters are |
| 25 | 25 | # written out rather than shared. Keep them identical. |
| 26 | 26 | on: |
| 27 | workflow_call: {} | |
| 27 | 28 | push: |
| 28 | 29 | branches: [main] |
| 29 | 30 | paths: |
| @@ -136,11 +137,11 @@ jobs: | ||
| 136 | 137 | strategy: |
| 137 | 138 | fail-fast: false |
| 138 | 139 | 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"]') }} | |
| 140 | 141 | 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. | |
| 144 | 145 | timeout-minutes: 45 |
| 145 | 146 | env: |
| 146 | 147 | CRAFT_EVIDENCE_LABEL: ios-native |
| @@ -167,15 +168,15 @@ jobs: | ||
| 167 | 168 | # @stacksjs/stx compiler (`stx native compile`) so this job cannot silently change |
| 168 | 169 | # underneath us. Both iOS jobs and Android use the same compiler revision. |
| 169 | 170 | - name: Checkout stx compiler |
| 170 | if: ${{ matrix.suite == 'navigation' }} | |
| 171 | if: ${{ startsWith(matrix.suite, 'navigation') }} | |
| 171 | 172 | uses: actions/checkout@v6 |
| 172 | 173 | with: |
| 173 | 174 | repository: stacksjs/stx |
| 174 | ref: 617826427dea89a203e7f6d254dffea211bad1ba | |
| 175 | ref: 9d003f90714dc5c36daf262aaaa285a9671245e7 | |
| 175 | 176 | path: .stx-compiler |
| 176 | 177 | |
| 177 | 178 | - name: Install stx compiler dependencies |
| 178 | if: ${{ matrix.suite == 'navigation' }} | |
| 179 | if: ${{ startsWith(matrix.suite, 'navigation') }} | |
| 179 | 180 | working-directory: .stx-compiler |
| 180 | 181 | run: bun install --frozen-lockfile |
| 181 | 182 | |
| @@ -192,10 +193,11 @@ jobs: | ||
| 192 | 193 | id: navigation |
| 193 | 194 | # Reconciliation and navigation are independent suites. Keep the |
| 194 | 195 | # navigation evidence when reconciliation fails; the job still fails. |
| 195 | if: ${{ !cancelled() && matrix.suite == 'navigation' }} | |
| 196 | if: ${{ !cancelled() && startsWith(matrix.suite, 'navigation') }} | |
| 196 | 197 | env: |
| 197 | 198 | 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' || '' }} | |
| 199 | 201 | CRAFT_NATIVE_NAVIGATION_RESULT: ${{ github.workspace }}/artifacts/mobile-e2e/ios-native/navigation.xcresult |
| 200 | 202 | run: | |
| 201 | 203 | mkdir -p artifacts/mobile-e2e/ios-native |
| @@ -272,6 +274,11 @@ jobs: | ||
| 272 | 274 | with: |
| 273 | 275 | version: '0.11.101' |
| 274 | 276 | |
| 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 | ||
| 275 | 282 | - name: Install XcodeGen |
| 276 | 283 | run: brew install xcodegen |
| 277 | 284 | |
| @@ -282,12 +289,12 @@ jobs: | ||
| 282 | 289 | # The summary requires both jobs, including every original test suite. |
| 283 | 290 | # The multi-screen fixture is compiled from real .stx sources. Pin the |
| 284 | 291 | # @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. | |
| 286 | 293 | - name: Checkout stx compiler |
| 287 | 294 | uses: actions/checkout@v6 |
| 288 | 295 | with: |
| 289 | 296 | repository: stacksjs/stx |
| 290 | ref: 617826427dea89a203e7f6d254dffea211bad1ba | |
| 297 | ref: 9d003f90714dc5c36daf262aaaa285a9671245e7 | |
| 291 | 298 | path: .stx-compiler |
| 292 | 299 | |
| 293 | 300 | - name: Install stx compiler dependencies |
| @@ -402,6 +409,11 @@ jobs: | ||
| 402 | 409 | with: |
| 403 | 410 | version: '0.11.101' |
| 404 | 411 | |
| 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 | ||
| 405 | 417 | - name: Setup Java |
| 406 | 418 | uses: actions/setup-java@v6 |
| 407 | 419 | with: |
| @@ -432,7 +444,7 @@ jobs: | ||
| 432 | 444 | uses: actions/checkout@v6 |
| 433 | 445 | with: |
| 434 | 446 | repository: stacksjs/stx |
| 435 | ref: 617826427dea89a203e7f6d254dffea211bad1ba | |
| 447 | ref: 9d003f90714dc5c36daf262aaaa285a9671245e7 | |
| 436 | 448 | path: .stx-compiler |
| 437 | 449 | |
| 438 | 450 | - name: Install Android stx compiler dependencies |
| @@ -639,7 +651,7 @@ jobs: | ||
| 639 | 651 | - uses: actions/checkout@v6 |
| 640 | 652 | with: |
| 641 | 653 | repository: stacksjs/stx |
| 642 | ref: 617826427dea89a203e7f6d254dffea211bad1ba | |
| 654 | ref: 9d003f90714dc5c36daf262aaaa285a9671245e7 | |
| 643 | 655 | path: .stx-compiler |
| 644 | 656 | - run: bun install --frozen-lockfile |
| 645 | 657 | working-directory: .stx-compiler |