Skip to content

Commit 49d1744

Browse files
authored
e2e tests on Cirrus Labs runners (#5485)
* e2e tests on Cirrus Labs runners * Checking another group * rolling back last change * Corepack enable * Corepack enable * Ninja * Ruby install * Ruby install * Updated env params * Trying to fix metrics job * Trying it out with Macos 26.0.1 * iOS version env param change * Debug outputs * iDB companion update to potentially fix things on iOS side * Another attempt * Typo * GH runners for tests * e2e fix attempt (with a temp workaround of using GH runners for tests) * Rolling back some of experiments * Solving concurrency issues * More GH runner issues * Small fix * Fix-2 * Fix-3 * Hopefully final fix * Updated e2e tests, experiment * Fixes
1 parent 02a78e8 commit 49d1744

File tree

1 file changed

+43
-24
lines changed

1 file changed

+43
-24
lines changed

.github/workflows/e2e-v2.yml

Lines changed: 43 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -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'
@@ -80,6 +82,11 @@ jobs:
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

Comments
 (0)