diff --git a/.github/workflows/NativePipeline.yml b/.github/workflows/NativePipeline.yml index cef6dc827..09d32065a 100644 --- a/.github/workflows/NativePipeline.yml +++ b/.github/workflows/NativePipeline.yml @@ -745,13 +745,11 @@ jobs: # Run if widgets need testing (widgets_to_test is not empty) and project succeeds if: ${{ needs.scope.outputs.widgets_to_test != '[]' && always() && needs.project.result == 'success' && (needs.ios-app.result == 'success' || needs.ios-app.result == 'skipped') }} runs-on: macos-26 - # 30 min per widget shard, matching android-widget-tests. iOS needs the budget more than - # Android: sim cold-boot + Maestro driver startup + runtime-ready wait eat several minutes - # before any flow runs, so on a free macOS runner slow-but-healthy shards were getting - # truncated — at 20 min several shards (accordion, background-image, bottom-sheet, - # color-picker, safe-area-view) were cancelled mid-flow. If a shard still hits 30 the cause - # is real app instability, not the cap. - timeout-minutes: 30 + # 35 min per widget shard. iOS needs more budget than Android: sim cold-boot + Maestro driver + # startup + runtime-ready wait eat several minutes before any flow runs. Using simslim to + # optimize simulator performance by reducing memory footprint from ~4GB to ~0.9GB and disabling + # unnecessary background services. If a shard still hits 35 the cause is real app instability. + timeout-minutes: 35 strategy: max-parallel: 4 matrix: @@ -792,9 +790,20 @@ jobs: uses: ./.github/actions/start-mendix-runtime with: java-home: ${{ steps.setup-needed-tools.outputs.java-path }} - + - name: "Setup Xcode CLI Tools" uses: ./.github/actions/setup-xcode-cli-tools + - name: "Optimize simulator with simslim" + run: | + brew install mobai-app/tap/simslim + # Only optimize the iPhone 17 Pro used for testing (saves ~3-4 min vs optimizing all simulators) + UDID=$(simslim list --json | jq -r '.[] | select(.name == "iPhone 17 Pro") | .udid' | head -1) + if [ -n "$UDID" ]; then + echo "Optimizing iPhone 17 Pro ($UDID)..." + simslim on "$UDID" + else + echo "::warning::iPhone 17 Pro not found, skipping simslim optimization" + fi - name: "Run iOS tests" run: | chmod +x maestro/helpers/prepare_ios.sh @@ -933,6 +942,17 @@ jobs: - name: "Setup Xcode CLI Tools" uses: ./.github/actions/setup-xcode-cli-tools + - name: "Optimize simulator with simslim" + run: | + brew install mobai-app/tap/simslim + # Only optimize the iPhone 17 Pro used for testing (saves ~3-4 min vs optimizing all simulators) + UDID=$(simslim list --json | jq -r '.[] | select(.name == "iPhone 17 Pro") | .udid' | head -1) + if [ -n "$UDID" ]; then + echo "Optimizing iPhone 17 Pro ($UDID)..." + simslim on "$UDID" + else + echo "::warning::iPhone 17 Pro not found, skipping simslim optimization" + fi - name: "Run iOS tests" run: | chmod +x maestro/helpers/prepare_ios.sh