@@ -42,17 +42,18 @@ jobs:
4242 strategy :
4343 # we want that the matrix keeps running, default is to cancel them if it fails.
4444 fail-fast : false
45+ # Limit parallel jobs to avoid hitting Sauce Labs concurrency limits (max 3 sessions)
46+ max-parallel : 2
4547 matrix :
4648 rn-architecture : ['legacy', 'new']
4749 platform : ["ios", "android"]
4850 include :
4951 - platform : ios
50- runs-on : macos-26
52+ runs-on : ["ghcr.io/cirruslabs/ macos-tahoe-xcode:26.2.0", "runner_group_id:12"]
5153 name : iOS
5254 appPlain : performance-tests/test-app-plain.ipa
5355 - platform : android
54- # Not using the latest version due to a known issue: https://github.com/getsentry/sentry-react-native/issues/4418
55- runs-on : ubuntu-22.04
56+ runs-on : ["ghcr.io/cirruslabs/ubuntu-runner-amd64:22.04", "runner_group_id:12"]
5657 name : Android
5758 appPlain : performance-tests/TestAppPlain/android/app/build/outputs/apk/release/app-release.apk
5859 steps :
@@ -61,17 +62,18 @@ jobs:
6162 - uses : ./.github/actions/disk-cleanup
6263 if : ${{ matrix.platform == 'android' }}
6364
64- - run : sudo xcode-select -s /Applications/Xcode_26.1.1.app/Contents/Developer
65- if : ${{ matrix.platform == 'ios' }}
66-
67- - run : npm i -g corepack
65+ - run : corepack enable
6866 - uses : actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6
6967 with :
7068 package-manager-cache : false
7169 node-version : 20
7270 cache : ' yarn'
7371 cache-dependency-path : yarn.lock
7472
73+ - name : Install Ninja
74+ if : ${{ matrix.platform == 'android' }}
75+ run : sudo apt-get update && sudo apt-get install -y ninja-build
76+
7577 - uses : actions/setup-java@v5
7678 with :
7779 java-version : ' 17'
8082 - name : Gradle cache
8183 uses : gradle/gradle-build-action@v3
8284
85+ - uses : ruby/setup-ruby@v1
86+ if : ${{ matrix.platform == 'ios' }}
87+ with :
88+ ruby-version : ' 3.3.0'
89+
8390 - name : Install Global Dependencies
8491 run : npm i -g react-native-cli @sentry/cli
8592
@@ -115,9 +122,11 @@ jobs:
115122 if [[ ${{ matrix.rn-architecture }} == 'new' ]]; then
116123 export RCT_NEW_ARCH_ENABLED=1
117124 fi
118- pod install
125+ bundle install
126+ bundle exec pod install
119127 cd ../..
120- fastlane build_perf_test_app_plain
128+ bundle install
129+ bundle exec fastlane build_perf_test_app_plain
121130 fi
122131 env :
123132 APP_STORE_CONNECT_KEY_ID : ${{ secrets.APP_STORE_CONNECT_KEY_ID }}
@@ -143,9 +152,11 @@ jobs:
143152 if [[ ${{ matrix.rn-architecture }} == 'new' ]]; then
144153 export RCT_NEW_ARCH_ENABLED=1
145154 fi
146- pod install
155+ bundle install
156+ bundle exec pod install
147157 cd ../..
148- fastlane build_perf_test_app_sentry
158+ bundle install
159+ bundle exec fastlane build_perf_test_app_sentry
149160 cd TestAppSentry
150161 fi
151162 env :
@@ -189,15 +200,13 @@ jobs:
189200 # Use Xcode 16 for older RN versions
190201 - platform : ios
191202 rn-version : ' 0.71.19'
192- xcode-version : ' 16.4'
193- runs-on : macos-15
203+ runs-on : ["ghcr.io/cirruslabs/macos-sequoia-xcode:16.4", "runner_group_id:12"]
194204 # Use Xcode 26 for newer RN versions (0.83.0)
195205 - platform : ios
196206 rn-version : ' 0.83.0'
197- xcode-version : ' 26.1.1'
198- runs-on : macos-26
207+ runs-on : ["ghcr.io/cirruslabs/macos-tahoe-xcode:26.2.0", "runner_group_id:12"]
199208 - platform : android
200- runs-on : ubuntu-latest
209+ runs-on : ["ghcr.io/cirruslabs/ ubuntu-runner-amd64:22.04", "runner_group_id:12"]
201210 exclude :
202211 # exclude JSC for new RN versions (keeping the matrix manageable)
203212 - rn-version : ' 0.83.0'
@@ -247,17 +256,18 @@ jobs:
247256 echo "SENTRY_RELEASE=$SENTRY_RELEASE"
248257 echo "SENTRY_DIST=$SENTRY_DIST"
249258
250- - run : sudo xcode-select -s /Applications/Xcode_${{ matrix.xcode-version }}.app/Contents/Developer
251- if : ${{ matrix.platform == 'ios' }}
252-
253- - run : npm i -g corepack
259+ - run : corepack enable
254260 - uses : actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6
255261 with :
256262 package-manager-cache : false
257263 node-version : 20
258264 cache : ' yarn'
259265 cache-dependency-path : yarn.lock
260266
267+ - name : Install Ninja
268+ if : ${{ matrix.platform == 'android' }}
269+ run : sudo apt-get update && sudo apt-get install -y ninja-build
270+
261271 - uses : actions/setup-java@v5
262272 with :
263273 java-version : ' 17'
@@ -323,9 +333,9 @@ jobs:
323333 include :
324334 - platform : ios
325335 rn-version : ' 0.83.0'
326- runs-on : macos-26
336+ runs-on : macos-26
327337 - platform : android
328- runs-on : ubuntu-latest
338+ runs-on : ["ghcr.io/cirruslabs/ ubuntu-runner-amd64:22.04", "runner_group_id:12"]
329339
330340 steps :
331341 - uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
@@ -354,14 +364,19 @@ jobs:
354364 path : dev-packages/e2e-tests
355365
356366 - name : Enable Corepack
357- run : npm i -g corepack
367+ run : corepack enable
368+
358369 - uses : actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6
359370 with :
360371 package-manager-cache : false
361372 node-version : 20
362373 cache : ' yarn'
363374 cache-dependency-path : yarn.lock
364375
376+ - name : Install Ninja
377+ if : ${{ matrix.platform == 'android' }}
378+ run : sudo apt-get update && sudo apt-get install -y ninja-build
379+
365380 - uses : actions/setup-java@v5
366381 with :
367382 java-version : ' 17'
@@ -417,11 +432,15 @@ jobs:
417432
418433 - name : Run tests on iOS
419434 if : ${{ matrix.platform == 'ios' }}
435+ env :
436+ # Increase timeout for Maestro iOS driver startup (default is 60s, some CI runners need more time)
437+ MAESTRO_DRIVER_STARTUP_TIMEOUT : 120000
420438 run : ./dev-packages/e2e-tests/cli.mjs ${{ matrix.platform }} --test
421439
422440 - name : Upload logs
423441 if : ${{ always() }}
424442 uses : actions/upload-artifact@v6
425443 with :
426444 name : ${{ matrix.rn-version }}-${{ matrix.rn-architecture }}-${{ matrix.engine }}-${{ matrix.platform }}-${{ matrix.build-type }}-${{ matrix.ios-use-frameworks }}-logs
427- path : ./dev-packages/e2e-tests/maestro-logs
445+ path : |
446+ ./dev-packages/e2e-tests/maestro-logs
0 commit comments