@@ -41,17 +41,18 @@ jobs:
4141 strategy :
4242 # we want that the matrix keeps running, default is to cancel them if it fails.
4343 fail-fast : false
44+ # Limit parallel jobs to avoid hitting Sauce Labs concurrency limits (max 3 sessions)
45+ max-parallel : 2
4446 matrix :
4547 rn-architecture : ['legacy', 'new']
4648 platform : ["ios", "android"]
4749 include :
4850 - platform : ios
49- runs-on : macos-26
51+ runs-on : ["ghcr.io/cirruslabs/ macos-tahoe-xcode:26.2.0", "runner_group_id:12"]
5052 name : iOS
5153 appPlain : performance-tests/test-app-plain.ipa
5254 - platform : android
53- # Not using the latest version due to a known issue: https://github.com/getsentry/sentry-react-native/issues/4418
54- runs-on : ubuntu-22.04
55+ runs-on : ["ghcr.io/cirruslabs/ubuntu-runner-amd64:22.04", "runner_group_id:12"]
5556 name : Android
5657 appPlain : performance-tests/TestAppPlain/android/app/build/outputs/apk/release/app-release.apk
5758 steps :
@@ -60,17 +61,18 @@ jobs:
6061 - uses : ./.github/actions/disk-cleanup
6162 if : ${{ matrix.platform == 'android' }}
6263
63- - run : sudo xcode-select -s /Applications/Xcode_26.1.1.app/Contents/Developer
64- if : ${{ matrix.platform == 'ios' }}
65-
66- - run : npm i -g corepack
64+ - run : corepack enable
6765 - uses : actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6
6866 with :
6967 package-manager-cache : false
7068 node-version : 20
7169 cache : ' yarn'
7270 cache-dependency-path : yarn.lock
7371
72+ - name : Install Ninja
73+ if : ${{ matrix.platform == 'android' }}
74+ run : sudo apt-get update && sudo apt-get install -y ninja-build
75+
7476 - uses : actions/setup-java@v5
7577 with :
7678 java-version : ' 17'
7981 - name : Gradle cache
8082 uses : gradle/gradle-build-action@v3
8183
84+ - uses : ruby/setup-ruby@v1
85+ if : ${{ matrix.platform == 'ios' }}
86+ with :
87+ ruby-version : ' 3.3.0'
88+
8289 - name : Install Global Dependencies
8390 run : npm i -g react-native-cli @sentry/cli
8491
@@ -114,9 +121,11 @@ jobs:
114121 if [[ ${{ matrix.rn-architecture }} == 'new' ]]; then
115122 export RCT_NEW_ARCH_ENABLED=1
116123 fi
117- pod install
124+ bundle install
125+ bundle exec pod install
118126 cd ../..
119- fastlane build_perf_test_app_plain
127+ bundle install
128+ bundle exec fastlane build_perf_test_app_plain
120129 fi
121130 env :
122131 APP_STORE_CONNECT_KEY_ID : ${{ secrets.APP_STORE_CONNECT_KEY_ID }}
@@ -142,9 +151,11 @@ jobs:
142151 if [[ ${{ matrix.rn-architecture }} == 'new' ]]; then
143152 export RCT_NEW_ARCH_ENABLED=1
144153 fi
145- pod install
154+ bundle install
155+ bundle exec pod install
146156 cd ../..
147- fastlane build_perf_test_app_sentry
157+ bundle install
158+ bundle exec fastlane build_perf_test_app_sentry
148159 cd TestAppSentry
149160 fi
150161 env :
@@ -188,15 +199,13 @@ jobs:
188199 # Use Xcode 16 for older RN versions
189200 - platform : ios
190201 rn-version : ' 0.71.19'
191- xcode-version : ' 16.4'
192- runs-on : macos-15
202+ runs-on : ["ghcr.io/cirruslabs/macos-sequoia-xcode:16.4", "runner_group_id:12"]
193203 # Use Xcode 26 for newer RN versions (0.83.0)
194204 - platform : ios
195205 rn-version : ' 0.83.0'
196- xcode-version : ' 26.1.1'
197- runs-on : macos-26
206+ runs-on : ["ghcr.io/cirruslabs/macos-tahoe-xcode:26.2.0", "runner_group_id:12"]
198207 - platform : android
199- runs-on : ubuntu-latest
208+ runs-on : ["ghcr.io/cirruslabs/ ubuntu-runner-amd64:22.04", "runner_group_id:12"]
200209 exclude :
201210 # exclude JSC for new RN versions (keeping the matrix manageable)
202211 - rn-version : ' 0.83.0'
@@ -246,17 +255,18 @@ jobs:
246255 echo "SENTRY_RELEASE=$SENTRY_RELEASE"
247256 echo "SENTRY_DIST=$SENTRY_DIST"
248257
249- - run : sudo xcode-select -s /Applications/Xcode_${{ matrix.xcode-version }}.app/Contents/Developer
250- if : ${{ matrix.platform == 'ios' }}
251-
252- - run : npm i -g corepack
258+ - run : corepack enable
253259 - uses : actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6
254260 with :
255261 package-manager-cache : false
256262 node-version : 20
257263 cache : ' yarn'
258264 cache-dependency-path : yarn.lock
259265
266+ - name : Install Ninja
267+ if : ${{ matrix.platform == 'android' }}
268+ run : sudo apt-get update && sudo apt-get install -y ninja-build
269+
260270 - uses : actions/setup-java@v5
261271 with :
262272 java-version : ' 17'
@@ -322,9 +332,9 @@ jobs:
322332 include :
323333 - platform : ios
324334 rn-version : ' 0.83.0'
325- runs-on : macos-26
335+ runs-on : macos-26
326336 - platform : android
327- runs-on : ubuntu-latest
337+ runs-on : ["ghcr.io/cirruslabs/ ubuntu-runner-amd64:22.04", "runner_group_id:12"]
328338
329339 steps :
330340 - uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
@@ -353,14 +363,19 @@ jobs:
353363 path : dev-packages/e2e-tests
354364
355365 - name : Enable Corepack
356- run : npm i -g corepack
366+ run : corepack enable
367+
357368 - uses : actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6
358369 with :
359370 package-manager-cache : false
360371 node-version : 20
361372 cache : ' yarn'
362373 cache-dependency-path : yarn.lock
363374
375+ - name : Install Ninja
376+ if : ${{ matrix.platform == 'android' }}
377+ run : sudo apt-get update && sudo apt-get install -y ninja-build
378+
364379 - uses : actions/setup-java@v5
365380 with :
366381 java-version : ' 17'
@@ -416,11 +431,15 @@ jobs:
416431
417432 - name : Run tests on iOS
418433 if : ${{ matrix.platform == 'ios' }}
434+ env :
435+ # Increase timeout for Maestro iOS driver startup (default is 60s, some CI runners need more time)
436+ MAESTRO_DRIVER_STARTUP_TIMEOUT : 120000
419437 run : ./dev-packages/e2e-tests/cli.mjs ${{ matrix.platform }} --test
420438
421439 - name : Upload logs
422440 if : ${{ always() }}
423441 uses : actions/upload-artifact@v6
424442 with :
425443 name : ${{ matrix.rn-version }}-${{ matrix.rn-architecture }}-${{ matrix.engine }}-${{ matrix.platform }}-${{ matrix.build-type }}-${{ matrix.ios-use-frameworks }}-logs
426- path : ./dev-packages/e2e-tests/maestro-logs
444+ path : |
445+ ./dev-packages/e2e-tests/maestro-logs
0 commit comments