Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 28 additions & 8 deletions .github/workflows/NativePipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
Loading