From e2397d0328cb176cd5239b79cbce64f922fd5dee Mon Sep 17 00:00:00 2001 From: Alexander Pantiukhov Date: Thu, 18 Dec 2025 11:30:50 +0100 Subject: [PATCH 01/21] e2e tests on Cirrus Labs runners --- .github/workflows/e2e-v2.yml | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/.github/workflows/e2e-v2.yml b/.github/workflows/e2e-v2.yml index 6b9c445ab5..0b7fbb4fcd 100644 --- a/.github/workflows/e2e-v2.yml +++ b/.github/workflows/e2e-v2.yml @@ -47,12 +47,11 @@ jobs: platform: ["ios", "android"] include: - platform: ios - runs-on: macos-26 + runs-on: ["ghcr.io/cirruslabs/macos-tahoe-xcode:26.2", "runner_group_id:12"] name: iOS appPlain: performance-tests/test-app-plain.ipa - platform: android - # Not using the latest version due to a known issue: https://github.com/getsentry/sentry-react-native/issues/4418 - runs-on: ubuntu-22.04 + runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:22.04", "runner_group_id:12"] name: Android appPlain: performance-tests/TestAppPlain/android/app/build/outputs/apk/release/app-release.apk steps: @@ -61,9 +60,6 @@ jobs: - uses: ./.github/actions/disk-cleanup if: ${{ matrix.platform == 'android' }} - - run: sudo xcode-select -s /Applications/Xcode_26.1.1.app/Contents/Developer - if: ${{ matrix.platform == 'ios' }} - - run: npm i -g corepack - uses: actions/setup-node@v6 with: @@ -189,15 +185,13 @@ jobs: # Use Xcode 16 for older RN versions - platform: ios rn-version: '0.71.19' - xcode-version: '16.4' - runs-on: macos-15 + runs-on: ["ghcr.io/cirruslabs/macos-sequoia-xcode:16.4", "runner_group_id:12"] # Use Xcode 26 for newer RN versions (0.83.0) - platform: ios rn-version: '0.83.0' - xcode-version: '26.1.1' - runs-on: macos-26 + runs-on: ["ghcr.io/cirruslabs/macos-tahoe-xcode:26.2", "runner_group_id:12"] - platform: android - runs-on: ubuntu-latest + runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:22.04", "runner_group_id:12"] exclude: # exclude JSC for new RN versions (keeping the matrix manageable) - rn-version: '0.83.0' @@ -247,9 +241,6 @@ jobs: echo "SENTRY_RELEASE=$SENTRY_RELEASE" echo "SENTRY_DIST=$SENTRY_DIST" - - run: sudo xcode-select -s /Applications/Xcode_${{ matrix.xcode-version }}.app/Contents/Developer - if: ${{ matrix.platform == 'ios' }} - - run: npm i -g corepack - uses: actions/setup-node@v6 with: @@ -323,9 +314,9 @@ jobs: include: - platform: ios rn-version: '0.83.0' - runs-on: macos-26 + runs-on: ["ghcr.io/cirruslabs/macos-tahoe-xcode:26.2", "runner_group_id:12"] - platform: android - runs-on: ubuntu-latest + runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:22.04", "runner_group_id:12"] steps: - uses: actions/checkout@v6 From a04f35189b875c04be0b51b194cd96b186e157be Mon Sep 17 00:00:00 2001 From: Alexander Pantiukhov Date: Thu, 18 Dec 2025 14:08:40 +0100 Subject: [PATCH 02/21] Checking another group --- .github/workflows/e2e-v2.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/e2e-v2.yml b/.github/workflows/e2e-v2.yml index 0b7fbb4fcd..0e784206bd 100644 --- a/.github/workflows/e2e-v2.yml +++ b/.github/workflows/e2e-v2.yml @@ -47,11 +47,11 @@ jobs: platform: ["ios", "android"] include: - platform: ios - runs-on: ["ghcr.io/cirruslabs/macos-tahoe-xcode:26.2", "runner_group_id:12"] + runs-on: ["ghcr.io/cirruslabs/macos-tahoe-xcode:26.2", "runner_group_id:10"] name: iOS appPlain: performance-tests/test-app-plain.ipa - platform: android - runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:22.04", "runner_group_id:12"] + runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:22.04", "runner_group_id:10"] name: Android appPlain: performance-tests/TestAppPlain/android/app/build/outputs/apk/release/app-release.apk steps: @@ -185,13 +185,13 @@ jobs: # Use Xcode 16 for older RN versions - platform: ios rn-version: '0.71.19' - runs-on: ["ghcr.io/cirruslabs/macos-sequoia-xcode:16.4", "runner_group_id:12"] + runs-on: ["ghcr.io/cirruslabs/macos-sequoia-xcode:16.4", "runner_group_id:10"] # Use Xcode 26 for newer RN versions (0.83.0) - platform: ios rn-version: '0.83.0' - runs-on: ["ghcr.io/cirruslabs/macos-tahoe-xcode:26.2", "runner_group_id:12"] + runs-on: ["ghcr.io/cirruslabs/macos-tahoe-xcode:26.2", "runner_group_id:10"] - platform: android - runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:22.04", "runner_group_id:12"] + runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:22.04", "runner_group_id:10"] exclude: # exclude JSC for new RN versions (keeping the matrix manageable) - rn-version: '0.83.0' From 83a3d6a7cf0ffa9dd66365332670590dc31c8b90 Mon Sep 17 00:00:00 2001 From: Alexander Pantiukhov Date: Thu, 18 Dec 2025 14:17:18 +0100 Subject: [PATCH 03/21] rolling back last change --- .github/workflows/e2e-v2.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/e2e-v2.yml b/.github/workflows/e2e-v2.yml index 0e784206bd..0b7fbb4fcd 100644 --- a/.github/workflows/e2e-v2.yml +++ b/.github/workflows/e2e-v2.yml @@ -47,11 +47,11 @@ jobs: platform: ["ios", "android"] include: - platform: ios - runs-on: ["ghcr.io/cirruslabs/macos-tahoe-xcode:26.2", "runner_group_id:10"] + runs-on: ["ghcr.io/cirruslabs/macos-tahoe-xcode:26.2", "runner_group_id:12"] name: iOS appPlain: performance-tests/test-app-plain.ipa - platform: android - runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:22.04", "runner_group_id:10"] + runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:22.04", "runner_group_id:12"] name: Android appPlain: performance-tests/TestAppPlain/android/app/build/outputs/apk/release/app-release.apk steps: @@ -185,13 +185,13 @@ jobs: # Use Xcode 16 for older RN versions - platform: ios rn-version: '0.71.19' - runs-on: ["ghcr.io/cirruslabs/macos-sequoia-xcode:16.4", "runner_group_id:10"] + runs-on: ["ghcr.io/cirruslabs/macos-sequoia-xcode:16.4", "runner_group_id:12"] # Use Xcode 26 for newer RN versions (0.83.0) - platform: ios rn-version: '0.83.0' - runs-on: ["ghcr.io/cirruslabs/macos-tahoe-xcode:26.2", "runner_group_id:10"] + runs-on: ["ghcr.io/cirruslabs/macos-tahoe-xcode:26.2", "runner_group_id:12"] - platform: android - runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:22.04", "runner_group_id:10"] + runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:22.04", "runner_group_id:12"] exclude: # exclude JSC for new RN versions (keeping the matrix manageable) - rn-version: '0.83.0' From a933ded9766e9b2fa05f09b02661b181e34c6b3e Mon Sep 17 00:00:00 2001 From: Alexander Pantiukhov Date: Wed, 28 Jan 2026 09:08:06 +0100 Subject: [PATCH 04/21] Corepack enable --- .github/workflows/e2e-v2.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/e2e-v2.yml b/.github/workflows/e2e-v2.yml index d5af362ea5..f4e1df29a4 100644 --- a/.github/workflows/e2e-v2.yml +++ b/.github/workflows/e2e-v2.yml @@ -60,7 +60,7 @@ jobs: - uses: ./.github/actions/disk-cleanup if: ${{ matrix.platform == 'android' }} - - run: npm i -g corepack + - run: npm i -g corepack --force - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6 with: package-manager-cache: false @@ -241,7 +241,7 @@ jobs: echo "SENTRY_RELEASE=$SENTRY_RELEASE" echo "SENTRY_DIST=$SENTRY_DIST" - - run: npm i -g corepack + - run: npm i -g corepack --force - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6 with: package-manager-cache: false @@ -345,7 +345,7 @@ jobs: path: dev-packages/e2e-tests - name: Enable Corepack - run: npm i -g corepack + run: npm i -g corepack --force - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6 with: package-manager-cache: false From 9899e3db3e60f6b00b66a5a514d559728b91a8bf Mon Sep 17 00:00:00 2001 From: Alexander Pantiukhov Date: Wed, 28 Jan 2026 11:31:29 +0100 Subject: [PATCH 05/21] Corepack enable --- .github/workflows/e2e-v2.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/e2e-v2.yml b/.github/workflows/e2e-v2.yml index f4e1df29a4..3fdf8bf410 100644 --- a/.github/workflows/e2e-v2.yml +++ b/.github/workflows/e2e-v2.yml @@ -60,7 +60,7 @@ jobs: - uses: ./.github/actions/disk-cleanup if: ${{ matrix.platform == 'android' }} - - run: npm i -g corepack --force + - run: corepack enable - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6 with: package-manager-cache: false @@ -241,7 +241,7 @@ jobs: echo "SENTRY_RELEASE=$SENTRY_RELEASE" echo "SENTRY_DIST=$SENTRY_DIST" - - run: npm i -g corepack --force + - run: corepack enable - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6 with: package-manager-cache: false @@ -345,7 +345,7 @@ jobs: path: dev-packages/e2e-tests - name: Enable Corepack - run: npm i -g corepack --force + run: corepack enable - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6 with: package-manager-cache: false From 61211d5940351ffd8df43d01c632e27dae3908aa Mon Sep 17 00:00:00 2001 From: Alexander Pantiukhov Date: Wed, 28 Jan 2026 11:45:29 +0100 Subject: [PATCH 06/21] Ninja --- .github/workflows/e2e-v2.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/workflows/e2e-v2.yml b/.github/workflows/e2e-v2.yml index 3fdf8bf410..e5e162e997 100644 --- a/.github/workflows/e2e-v2.yml +++ b/.github/workflows/e2e-v2.yml @@ -68,6 +68,10 @@ jobs: cache: 'yarn' cache-dependency-path: yarn.lock + - name: Install Ninja + if: ${{ matrix.platform == 'android' }} + run: sudo apt-get update && sudo apt-get install -y ninja-build + - uses: actions/setup-java@v5 with: java-version: '17' @@ -249,6 +253,10 @@ jobs: cache: 'yarn' cache-dependency-path: yarn.lock + - name: Install Ninja + if: ${{ matrix.platform == 'android' }} + run: sudo apt-get update && sudo apt-get install -y ninja-build + - uses: actions/setup-java@v5 with: java-version: '17' @@ -353,6 +361,10 @@ jobs: cache: 'yarn' cache-dependency-path: yarn.lock + - name: Install Ninja + if: ${{ matrix.platform == 'android' }} + run: sudo apt-get update && sudo apt-get install -y ninja-build + - uses: actions/setup-java@v5 with: java-version: '17' From b5c48c1f73405af871341d9c6b280c47bf909e81 Mon Sep 17 00:00:00 2001 From: Alexander Pantiukhov Date: Wed, 28 Jan 2026 17:12:16 +0100 Subject: [PATCH 07/21] Ruby install --- .github/workflows/e2e-v2.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/e2e-v2.yml b/.github/workflows/e2e-v2.yml index e5e162e997..dbc18c8d06 100644 --- a/.github/workflows/e2e-v2.yml +++ b/.github/workflows/e2e-v2.yml @@ -80,6 +80,13 @@ jobs: - name: Gradle cache uses: gradle/gradle-build-action@v3 + - uses: ruby/setup-ruby@v1 + if: ${{ matrix.platform == 'ios' }} + with: + ruby-version: '3.3.0' + bundler-cache: true + working-directory: performance-tests/TestAppSentry + - name: Install Global Dependencies run: npm i -g react-native-cli @sentry/cli From 9142e2f8b3fd5c1b5fcdb4da2c31a644f49a8bd9 Mon Sep 17 00:00:00 2001 From: Alexander Pantiukhov Date: Wed, 28 Jan 2026 17:23:21 +0100 Subject: [PATCH 08/21] Ruby install --- .github/workflows/e2e-v2.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/e2e-v2.yml b/.github/workflows/e2e-v2.yml index dbc18c8d06..107c813bf5 100644 --- a/.github/workflows/e2e-v2.yml +++ b/.github/workflows/e2e-v2.yml @@ -83,7 +83,7 @@ jobs: - uses: ruby/setup-ruby@v1 if: ${{ matrix.platform == 'ios' }} with: - ruby-version: '3.3.0' + ruby-version: '3.3.10' bundler-cache: true working-directory: performance-tests/TestAppSentry From da9811a07e3123df8cd421474a4e5d17cc54adf5 Mon Sep 17 00:00:00 2001 From: Alexander Pantiukhov Date: Thu, 29 Jan 2026 10:06:45 +0100 Subject: [PATCH 09/21] Updated env params --- .github/workflows/e2e-v2.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/e2e-v2.yml b/.github/workflows/e2e-v2.yml index 107c813bf5..70074c06ba 100644 --- a/.github/workflows/e2e-v2.yml +++ b/.github/workflows/e2e-v2.yml @@ -16,8 +16,8 @@ concurrency: env: SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} MAESTRO_VERSION: '2.1.0' - IOS_DEVICE: 'iPhone 17' - IOS_VERSION: '>=18.0' + IOS_DEVICE: 'iPhone 16 Pro' + IOS_VERSION: '18.6' jobs: ready-to-merge-gate: From 3034d586cccd0dd01692851f051a99af7d1b57a1 Mon Sep 17 00:00:00 2001 From: Alexander Pantiukhov Date: Thu, 29 Jan 2026 10:09:32 +0100 Subject: [PATCH 10/21] Trying to fix metrics job --- .github/workflows/e2e-v2.yml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/.github/workflows/e2e-v2.yml b/.github/workflows/e2e-v2.yml index 70074c06ba..df6e5ad72f 100644 --- a/.github/workflows/e2e-v2.yml +++ b/.github/workflows/e2e-v2.yml @@ -83,9 +83,7 @@ jobs: - uses: ruby/setup-ruby@v1 if: ${{ matrix.platform == 'ios' }} with: - ruby-version: '3.3.10' - bundler-cache: true - working-directory: performance-tests/TestAppSentry + ruby-version: '3.3.0' - name: Install Global Dependencies run: npm i -g react-native-cli @sentry/cli @@ -122,9 +120,11 @@ jobs: if [[ ${{ matrix.rn-architecture }} == 'new' ]]; then export RCT_NEW_ARCH_ENABLED=1 fi - pod install + bundle install + bundle exec pod install cd ../.. - fastlane build_perf_test_app_plain + bundle install + bundle exec fastlane build_perf_test_app_plain fi env: APP_STORE_CONNECT_KEY_ID: ${{ secrets.APP_STORE_CONNECT_KEY_ID }} @@ -150,9 +150,11 @@ jobs: if [[ ${{ matrix.rn-architecture }} == 'new' ]]; then export RCT_NEW_ARCH_ENABLED=1 fi - pod install + bundle install + bundle exec pod install cd ../.. - fastlane build_perf_test_app_sentry + bundle install + bundle exec fastlane build_perf_test_app_sentry cd TestAppSentry fi env: From 550e6711549005cdd8e877589e7f327e51f04d3d Mon Sep 17 00:00:00 2001 From: Alexander Pantiukhov Date: Thu, 29 Jan 2026 11:12:00 +0100 Subject: [PATCH 11/21] Trying it out with Macos 26.0.1 --- .github/workflows/e2e-v2.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/e2e-v2.yml b/.github/workflows/e2e-v2.yml index df6e5ad72f..1f170e78c9 100644 --- a/.github/workflows/e2e-v2.yml +++ b/.github/workflows/e2e-v2.yml @@ -47,7 +47,7 @@ jobs: platform: ["ios", "android"] include: - platform: ios - runs-on: ["ghcr.io/cirruslabs/macos-tahoe-xcode:26.2", "runner_group_id:12"] + runs-on: ["ghcr.io/cirruslabs/macos-tahoe-xcode:26.0.1", "runner_group_id:12"] name: iOS appPlain: performance-tests/test-app-plain.ipa - platform: android @@ -202,7 +202,7 @@ jobs: # Use Xcode 26 for newer RN versions (0.83.0) - platform: ios rn-version: '0.83.0' - runs-on: ["ghcr.io/cirruslabs/macos-tahoe-xcode:26.2", "runner_group_id:12"] + runs-on: ["ghcr.io/cirruslabs/macos-tahoe-xcode:26.0.1", "runner_group_id:12"] - platform: android runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:22.04", "runner_group_id:12"] exclude: @@ -331,7 +331,7 @@ jobs: include: - platform: ios rn-version: '0.83.0' - runs-on: ["ghcr.io/cirruslabs/macos-tahoe-xcode:26.2", "runner_group_id:12"] + runs-on: ["ghcr.io/cirruslabs/macos-tahoe-xcode:26.0.1", "runner_group_id:12"] - platform: android runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:22.04", "runner_group_id:12"] From 064ae986fdadf944b2f1e8263b5779bbd1de0351 Mon Sep 17 00:00:00 2001 From: Alexander Pantiukhov Date: Thu, 29 Jan 2026 11:20:13 +0100 Subject: [PATCH 12/21] iOS version env param change --- .github/workflows/e2e-v2.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/e2e-v2.yml b/.github/workflows/e2e-v2.yml index 1f170e78c9..cc1ebe187b 100644 --- a/.github/workflows/e2e-v2.yml +++ b/.github/workflows/e2e-v2.yml @@ -17,7 +17,7 @@ env: SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} MAESTRO_VERSION: '2.1.0' IOS_DEVICE: 'iPhone 16 Pro' - IOS_VERSION: '18.6' + IOS_VERSION: '>=18.0' jobs: ready-to-merge-gate: From 78bf14951e0646b6e5cf543e700c437b77227fe0 Mon Sep 17 00:00:00 2001 From: Alexander Pantiukhov Date: Thu, 29 Jan 2026 11:45:35 +0100 Subject: [PATCH 13/21] Debug outputs --- .github/workflows/e2e-v2.yml | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/.github/workflows/e2e-v2.yml b/.github/workflows/e2e-v2.yml index cc1ebe187b..3939a70b8e 100644 --- a/.github/workflows/e2e-v2.yml +++ b/.github/workflows/e2e-v2.yml @@ -427,13 +427,37 @@ jobs: model: ${{ env.IOS_DEVICE }} os_version: ${{ env.IOS_VERSION }} + - name: Debug - Check simulator and app + if: ${{ matrix.platform == 'ios' }} + run: | + echo "=== Booted simulators ===" + xcrun simctl list devices | grep -i booted || echo "No booted simulators" + echo "" + echo "=== App file info ===" + ls -la dev-packages/e2e-tests/RnDiffApp.app || echo "App not found" + echo "" + echo "=== Xcode version ===" + xcodebuild -version + echo "" + echo "=== idb_companion version ===" + idb_companion --version || echo "idb_companion not found" + - name: Run tests on iOS if: ${{ matrix.platform == 'ios' }} run: ./dev-packages/e2e-tests/cli.mjs ${{ matrix.platform }} --test + - name: Collect iOS crash reports + if: ${{ always() && matrix.platform == 'ios' }} + run: | + mkdir -p ./dev-packages/e2e-tests/crash-reports + cp -r ~/Library/Logs/DiagnosticReports/* ./dev-packages/e2e-tests/crash-reports/ 2>/dev/null || echo "No crash reports found" + ls -la ./dev-packages/e2e-tests/crash-reports/ || true + - name: Upload logs if: ${{ always() }} uses: actions/upload-artifact@v6 with: name: ${{ matrix.rn-version }}-${{ matrix.rn-architecture }}-${{ matrix.engine }}-${{ matrix.platform }}-${{ matrix.build-type }}-${{ matrix.ios-use-frameworks }}-logs - path: ./dev-packages/e2e-tests/maestro-logs + path: | + ./dev-packages/e2e-tests/maestro-logs + ./dev-packages/e2e-tests/crash-reports From 92b254ffc5bc7bc442669b0f10eafc84b6537e6a Mon Sep 17 00:00:00 2001 From: Alexander Pantiukhov Date: Thu, 29 Jan 2026 12:09:40 +0100 Subject: [PATCH 14/21] iDB companion update to potentially fix things on iOS side --- .github/workflows/e2e-v2.yml | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/.github/workflows/e2e-v2.yml b/.github/workflows/e2e-v2.yml index 3939a70b8e..86afcc1973 100644 --- a/.github/workflows/e2e-v2.yml +++ b/.github/workflows/e2e-v2.yml @@ -343,9 +343,16 @@ jobs: with: version: ${{env.MAESTRO_VERSION}} - - name: Install iDB Companion + - name: Install iDB Companion (override outdated version from Maestro action) if: ${{ matrix.platform == 'ios' }} - run: brew tap facebook/fb && brew install facebook/fb/idb-companion + run: | + # Remove the outdated idb_companion installed by Maestro action + rm -rf $HOME/actions-runner/_work/_tool/idb-companion || true + # Install latest idb_companion from Homebrew + brew tap facebook/fb && brew install facebook/fb/idb-companion + # Verify installation + which idb_companion + idb_companion --version - uses: ./.github/actions/disk-cleanup if: ${{ matrix.platform == 'android' }} @@ -439,8 +446,13 @@ jobs: echo "=== Xcode version ===" xcodebuild -version echo "" - echo "=== idb_companion version ===" - idb_companion --version || echo "idb_companion not found" + echo "=== idb_companion location and version ===" + which idb_companion || echo "idb_companion not in PATH" + idb_companion --version || echo "idb_companion version check failed" + echo "" + echo "=== Check for conflicting idb installations ===" + find /Users/admin -name "idb_companion" -o -name "idb-companion" 2>/dev/null | head -10 || true + ls -la /opt/homebrew/bin/idb* 2>/dev/null || true - name: Run tests on iOS if: ${{ matrix.platform == 'ios' }} From bd23cc49e36eeadfcbbfdb5ae17b425d3a9b9928 Mon Sep 17 00:00:00 2001 From: Alexander Pantiukhov Date: Thu, 29 Jan 2026 12:34:43 +0100 Subject: [PATCH 15/21] Another attempt --- .github/workflows/e2e-v2.yml | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/.github/workflows/e2e-v2.yml b/.github/workflows/e2e-v2.yml index 86afcc1973..ed0227fac1 100644 --- a/.github/workflows/e2e-v2.yml +++ b/.github/workflows/e2e-v2.yml @@ -429,7 +429,7 @@ jobs: run: xcrun simctl list devices available - uses: futureware-tech/simulator-action@dab10d813144ef59b48d401cd95da151222ef8cd # pin@v4 - if: ${{ matrix.platform == 'ios' }} + if: ${{ matrix.platform == 'ios' }}xr with: model: ${{ env.IOS_DEVICE }} os_version: ${{ env.IOS_VERSION }} @@ -454,9 +454,29 @@ jobs: find /Users/admin -name "idb_companion" -o -name "idb-companion" 2>/dev/null | head -10 || true ls -la /opt/homebrew/bin/idb* 2>/dev/null || true + - name: Test app launch manually + if: ${{ matrix.platform == 'ios' }} + run: | + echo "=== Installing app ===" + xcrun simctl install booted dev-packages/e2e-tests/RnDiffApp.app + echo "=== Launching app ===" + xcrun simctl launch booted org.reactjs.native.example.RnDiffApp + echo "=== Waiting for app to start ===" + sleep 10 + echo "=== Checking if app is running ===" + xcrun simctl listapps booted | grep -A5 "RnDiffApp" || true + echo "=== Terminating app ===" + xcrun simctl terminate booted org.reactjs.native.example.RnDiffApp || true + - name: Run tests on iOS if: ${{ matrix.platform == 'ios' }} - run: ./dev-packages/e2e-tests/cli.mjs ${{ matrix.platform }} --test + env: + # Run tests sequentially to avoid race conditions on Cirrus Labs + MAESTRO_DRIVER_STARTUP_TIMEOUT: 120000 + run: | + # Give simulator extra time to stabilize + sleep 5 + ./dev-packages/e2e-tests/cli.mjs ${{ matrix.platform }} --test - name: Collect iOS crash reports if: ${{ always() && matrix.platform == 'ios' }} From 7da401160910eacc7f700f6499a4c10116a41629 Mon Sep 17 00:00:00 2001 From: Alexander Pantiukhov Date: Thu, 29 Jan 2026 12:36:50 +0100 Subject: [PATCH 16/21] Typo --- .github/workflows/e2e-v2.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/e2e-v2.yml b/.github/workflows/e2e-v2.yml index ed0227fac1..a2568b998d 100644 --- a/.github/workflows/e2e-v2.yml +++ b/.github/workflows/e2e-v2.yml @@ -429,7 +429,7 @@ jobs: run: xcrun simctl list devices available - uses: futureware-tech/simulator-action@dab10d813144ef59b48d401cd95da151222ef8cd # pin@v4 - if: ${{ matrix.platform == 'ios' }}xr + if: ${{ matrix.platform == 'ios' }} with: model: ${{ env.IOS_DEVICE }} os_version: ${{ env.IOS_VERSION }} From 4c7db577bb3014e727dccc23a14f10168eb22ebf Mon Sep 17 00:00:00 2001 From: Alexander Pantiukhov Date: Thu, 29 Jan 2026 12:52:54 +0100 Subject: [PATCH 17/21] GH runners for tests --- .github/workflows/e2e-v2.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/e2e-v2.yml b/.github/workflows/e2e-v2.yml index a2568b998d..92ba5f0be7 100644 --- a/.github/workflows/e2e-v2.yml +++ b/.github/workflows/e2e-v2.yml @@ -331,7 +331,9 @@ jobs: include: - platform: ios rn-version: '0.83.0' - runs-on: ["ghcr.io/cirruslabs/macos-tahoe-xcode:26.0.1", "runner_group_id:12"] + # there is an issue with running certain maestro tests on Cirrus Labs runners, + # that's why those run on GH runners now + runs-on: macos-26 - platform: android runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:22.04", "runner_group_id:12"] From d9d34c0dada4f81f1298c8be3e7babac2e67fc1e Mon Sep 17 00:00:00 2001 From: Alexander Pantiukhov Date: Thu, 29 Jan 2026 12:57:57 +0100 Subject: [PATCH 18/21] e2e fix attempt (with a temp workaround of using GH runners for tests) --- .github/workflows/e2e-v2.yml | 50 +++--------------------------------- 1 file changed, 3 insertions(+), 47 deletions(-) diff --git a/.github/workflows/e2e-v2.yml b/.github/workflows/e2e-v2.yml index 92ba5f0be7..71a1150274 100644 --- a/.github/workflows/e2e-v2.yml +++ b/.github/workflows/e2e-v2.yml @@ -16,7 +16,7 @@ concurrency: env: SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} MAESTRO_VERSION: '2.1.0' - IOS_DEVICE: 'iPhone 16 Pro' + IOS_DEVICE: 'iPhone 17' IOS_VERSION: '>=18.0' jobs: @@ -347,14 +347,7 @@ jobs: - name: Install iDB Companion (override outdated version from Maestro action) if: ${{ matrix.platform == 'ios' }} - run: | - # Remove the outdated idb_companion installed by Maestro action - rm -rf $HOME/actions-runner/_work/_tool/idb-companion || true - # Install latest idb_companion from Homebrew - brew tap facebook/fb && brew install facebook/fb/idb-companion - # Verify installation - which idb_companion - idb_companion --version + run: brew tap facebook/fb && brew install facebook/fb/idb-companion - uses: ./.github/actions/disk-cleanup if: ${{ matrix.platform == 'android' }} @@ -436,49 +429,12 @@ jobs: model: ${{ env.IOS_DEVICE }} os_version: ${{ env.IOS_VERSION }} - - name: Debug - Check simulator and app - if: ${{ matrix.platform == 'ios' }} - run: | - echo "=== Booted simulators ===" - xcrun simctl list devices | grep -i booted || echo "No booted simulators" - echo "" - echo "=== App file info ===" - ls -la dev-packages/e2e-tests/RnDiffApp.app || echo "App not found" - echo "" - echo "=== Xcode version ===" - xcodebuild -version - echo "" - echo "=== idb_companion location and version ===" - which idb_companion || echo "idb_companion not in PATH" - idb_companion --version || echo "idb_companion version check failed" - echo "" - echo "=== Check for conflicting idb installations ===" - find /Users/admin -name "idb_companion" -o -name "idb-companion" 2>/dev/null | head -10 || true - ls -la /opt/homebrew/bin/idb* 2>/dev/null || true - - - name: Test app launch manually - if: ${{ matrix.platform == 'ios' }} - run: | - echo "=== Installing app ===" - xcrun simctl install booted dev-packages/e2e-tests/RnDiffApp.app - echo "=== Launching app ===" - xcrun simctl launch booted org.reactjs.native.example.RnDiffApp - echo "=== Waiting for app to start ===" - sleep 10 - echo "=== Checking if app is running ===" - xcrun simctl listapps booted | grep -A5 "RnDiffApp" || true - echo "=== Terminating app ===" - xcrun simctl terminate booted org.reactjs.native.example.RnDiffApp || true - - name: Run tests on iOS if: ${{ matrix.platform == 'ios' }} env: # Run tests sequentially to avoid race conditions on Cirrus Labs MAESTRO_DRIVER_STARTUP_TIMEOUT: 120000 - run: | - # Give simulator extra time to stabilize - sleep 5 - ./dev-packages/e2e-tests/cli.mjs ${{ matrix.platform }} --test + run: ./dev-packages/e2e-tests/cli.mjs ${{ matrix.platform }} --test - name: Collect iOS crash reports if: ${{ always() && matrix.platform == 'ios' }} From 0c1d899a9a6d255eae086b704f714136af26bdf6 Mon Sep 17 00:00:00 2001 From: Alexander Pantiukhov Date: Thu, 29 Jan 2026 14:06:02 +0100 Subject: [PATCH 19/21] Rolling back some of experiments --- .github/workflows/e2e-v2.yml | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/.github/workflows/e2e-v2.yml b/.github/workflows/e2e-v2.yml index 71a1150274..cf552274d6 100644 --- a/.github/workflows/e2e-v2.yml +++ b/.github/workflows/e2e-v2.yml @@ -345,7 +345,7 @@ jobs: with: version: ${{env.MAESTRO_VERSION}} - - name: Install iDB Companion (override outdated version from Maestro action) + - name: Install iDB Companion if: ${{ matrix.platform == 'ios' }} run: brew tap facebook/fb && brew install facebook/fb/idb-companion @@ -431,18 +431,8 @@ jobs: - name: Run tests on iOS if: ${{ matrix.platform == 'ios' }} - env: - # Run tests sequentially to avoid race conditions on Cirrus Labs - MAESTRO_DRIVER_STARTUP_TIMEOUT: 120000 run: ./dev-packages/e2e-tests/cli.mjs ${{ matrix.platform }} --test - - name: Collect iOS crash reports - if: ${{ always() && matrix.platform == 'ios' }} - run: | - mkdir -p ./dev-packages/e2e-tests/crash-reports - cp -r ~/Library/Logs/DiagnosticReports/* ./dev-packages/e2e-tests/crash-reports/ 2>/dev/null || echo "No crash reports found" - ls -la ./dev-packages/e2e-tests/crash-reports/ || true - - name: Upload logs if: ${{ always() }} uses: actions/upload-artifact@v6 @@ -450,4 +440,3 @@ jobs: name: ${{ matrix.rn-version }}-${{ matrix.rn-architecture }}-${{ matrix.engine }}-${{ matrix.platform }}-${{ matrix.build-type }}-${{ matrix.ios-use-frameworks }}-logs path: | ./dev-packages/e2e-tests/maestro-logs - ./dev-packages/e2e-tests/crash-reports From 3ca98e67427205295cf4beb92d607344dbc0b3a7 Mon Sep 17 00:00:00 2001 From: Alexander Pantiukhov Date: Thu, 29 Jan 2026 14:30:56 +0100 Subject: [PATCH 20/21] Solving concurrency issues --- .github/workflows/e2e-v2.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/e2e-v2.yml b/.github/workflows/e2e-v2.yml index cf552274d6..d30ac2a0a7 100644 --- a/.github/workflows/e2e-v2.yml +++ b/.github/workflows/e2e-v2.yml @@ -42,6 +42,8 @@ jobs: strategy: # we want that the matrix keeps running, default is to cancel them if it fails. fail-fast: false + # Limit parallel jobs to avoid hitting Sauce Labs concurrency limits (max 3 sessions) + max-parallel: 2 matrix: rn-architecture: ['legacy', 'new'] platform: ["ios", "android"] From a68537290c45bc610fa6b6e58d66aa0993578e79 Mon Sep 17 00:00:00 2001 From: Alexander Pantiukhov Date: Thu, 29 Jan 2026 15:06:49 +0100 Subject: [PATCH 21/21] More GH runner issues --- .github/workflows/e2e-v2.yml | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/.github/workflows/e2e-v2.yml b/.github/workflows/e2e-v2.yml index d30ac2a0a7..3e79ba973c 100644 --- a/.github/workflows/e2e-v2.yml +++ b/.github/workflows/e2e-v2.yml @@ -49,7 +49,7 @@ jobs: platform: ["ios", "android"] include: - platform: ios - runs-on: ["ghcr.io/cirruslabs/macos-tahoe-xcode:26.0.1", "runner_group_id:12"] + runs-on: ["ghcr.io/cirruslabs/macos-tahoe-xcode:26.2.0", "runner_group_id:12"] name: iOS appPlain: performance-tests/test-app-plain.ipa - platform: android @@ -204,7 +204,7 @@ jobs: # Use Xcode 26 for newer RN versions (0.83.0) - platform: ios rn-version: '0.83.0' - runs-on: ["ghcr.io/cirruslabs/macos-tahoe-xcode:26.0.1", "runner_group_id:12"] + runs-on: ["ghcr.io/cirruslabs/macos-tahoe-xcode:26.2.0", "runner_group_id:12"] - platform: android runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:22.04", "runner_group_id:12"] exclude: @@ -365,8 +365,14 @@ jobs: name: ${{ matrix.rn-version }}-${{ matrix.rn-architecture }}-${{ matrix.engine }}-${{ matrix.platform }}-${{ matrix.build-type }}-${{ matrix.ios-use-frameworks }}-app-package path: dev-packages/e2e-tests - - name: Enable Corepack + - name: Enable Corepack (iOS GH Runners) + if: ${{ matrix.platform == 'ios' }} + run: npm i -g corepack + + - name: Enable Corepack (Android Cirrus Labs runners) + if: ${{ matrix.platform == 'android' }} run: corepack enable + - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6 with: package-manager-cache: false @@ -433,6 +439,9 @@ jobs: - name: Run tests on iOS if: ${{ matrix.platform == 'ios' }} + env: + # Increase timeout for Maestro iOS driver startup (default is 60s, some CI runners need more time) + MAESTRO_DRIVER_STARTUP_TIMEOUT: 120000 run: ./dev-packages/e2e-tests/cli.mjs ${{ matrix.platform }} --test - name: Upload logs