From 46b9f25979c45a00e5d7a1b0f2a121158baaadd5 Mon Sep 17 00:00:00 2001 From: Yogendra Shelke Date: Wed, 22 Jul 2026 18:07:19 +0530 Subject: [PATCH 1/3] chore: add simslim to check performance gain --- .github/workflows/NativePipeline.yml | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/.github/workflows/NativePipeline.yml b/.github/workflows/NativePipeline.yml index cef6dc827..072b5deba 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,13 @@ 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 + simslim apply --all-simulators - name: "Run iOS tests" run: | chmod +x maestro/helpers/prepare_ios.sh @@ -933,6 +935,10 @@ 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 + simslim apply --all-simulators - name: "Run iOS tests" run: | chmod +x maestro/helpers/prepare_ios.sh From 07492d5e78ae2ed01cc706d2840890a09ecc689d Mon Sep 17 00:00:00 2001 From: Yogendra Shelke Date: Wed, 22 Jul 2026 18:18:54 +0530 Subject: [PATCH 2/3] chore: update command to apply simslim --- .github/workflows/NativePipeline.yml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/workflows/NativePipeline.yml b/.github/workflows/NativePipeline.yml index 072b5deba..a0b110f3c 100644 --- a/.github/workflows/NativePipeline.yml +++ b/.github/workflows/NativePipeline.yml @@ -796,7 +796,11 @@ jobs: - name: "Optimize simulator with simslim" run: | brew install mobai-app/tap/simslim - simslim apply --all-simulators + # Apply simslim optimization to all available simulators + simslim list --json | jq -r '.[].udid' | while read -r udid; do + echo "Optimizing simulator: $udid" + simslim on "$udid" || true + done - name: "Run iOS tests" run: | chmod +x maestro/helpers/prepare_ios.sh @@ -938,7 +942,11 @@ jobs: - name: "Optimize simulator with simslim" run: | brew install mobai-app/tap/simslim - simslim apply --all-simulators + # Apply simslim optimization to all available simulators + simslim list --json | jq -r '.[].udid' | while read -r udid; do + echo "Optimizing simulator: $udid" + simslim on "$udid" || true + done - name: "Run iOS tests" run: | chmod +x maestro/helpers/prepare_ios.sh From ce1bb0d8d39778463c9c408ed47d2454b2a9c9d8 Mon Sep 17 00:00:00 2001 From: Yogendra Shelke Date: Wed, 22 Jul 2026 18:37:54 +0530 Subject: [PATCH 3/3] chore: apply simslim to single simulator --- .github/workflows/NativePipeline.yml | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/.github/workflows/NativePipeline.yml b/.github/workflows/NativePipeline.yml index a0b110f3c..09d32065a 100644 --- a/.github/workflows/NativePipeline.yml +++ b/.github/workflows/NativePipeline.yml @@ -796,11 +796,14 @@ jobs: - name: "Optimize simulator with simslim" run: | brew install mobai-app/tap/simslim - # Apply simslim optimization to all available simulators - simslim list --json | jq -r '.[].udid' | while read -r udid; do - echo "Optimizing simulator: $udid" - simslim on "$udid" || true - done + # 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 @@ -942,11 +945,14 @@ jobs: - name: "Optimize simulator with simslim" run: | brew install mobai-app/tap/simslim - # Apply simslim optimization to all available simulators - simslim list --json | jq -r '.[].udid' | while read -r udid; do - echo "Optimizing simulator: $udid" - simslim on "$udid" || true - done + # 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