From 557105802d09cc9da4ec6076db39417718ec6046 Mon Sep 17 00:00:00 2001 From: Antonis Lilis Date: Thu, 6 Nov 2025 14:23:57 +0100 Subject: [PATCH 01/11] chore(ci): Bump back iOS CI runners to macos-15 --- .github/workflows/e2e-v2.yml | 8 ++++---- .github/workflows/native-tests.yml | 2 +- .github/workflows/sample-application-expo.yml | 2 +- .github/workflows/sample-application.yml | 4 ++-- .github/workflows/testflight.yml | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/e2e-v2.yml b/.github/workflows/e2e-v2.yml index 74b450cc16..f6bb87f9c5 100644 --- a/.github/workflows/e2e-v2.yml +++ b/.github/workflows/e2e-v2.yml @@ -38,7 +38,7 @@ jobs: platform: ["ios", "android"] include: - platform: ios - runs-on: macos-14 + runs-on: macos-15 name: iOS appPlain: performance-tests/test-app-plain.ipa - platform: android @@ -180,11 +180,11 @@ jobs: - platform: ios rn-version: '0.81.0' xcode-version: '16.2' - runs-on: macos-14 + runs-on: macos-15 - platform: ios rn-version: '0.71.11' xcode-version: '14.2' - runs-on: macos-13 + runs-on: macos-15 - platform: android runs-on: ubuntu-latest exclude: @@ -310,7 +310,7 @@ jobs: include: - platform: ios rn-version: '0.81.0' - runs-on: macos-14 + runs-on: macos-15 - platform: android runs-on: ubuntu-latest diff --git a/.github/workflows/native-tests.yml b/.github/workflows/native-tests.yml index 2b8a087574..304cdaf520 100644 --- a/.github/workflows/native-tests.yml +++ b/.github/workflows/native-tests.yml @@ -18,7 +18,7 @@ jobs: test-ios: name: ios - runs-on: macos-14 + runs-on: macos-15 needs: [diff_check] if: ${{ needs.diff_check.outputs.skip_ci != 'true' }} steps: diff --git a/.github/workflows/sample-application-expo.yml b/.github/workflows/sample-application-expo.yml index 6d1008e5f6..44355bc8f5 100644 --- a/.github/workflows/sample-application-expo.yml +++ b/.github/workflows/sample-application-expo.yml @@ -36,7 +36,7 @@ jobs: include: - platform: ios xcode-version: '16.2' - runs-on: macos-14 + runs-on: macos-15 - platform: android runs-on: ubuntu-latest - platform: web diff --git a/.github/workflows/sample-application.yml b/.github/workflows/sample-application.yml index 8aa441da17..2af51356ab 100644 --- a/.github/workflows/sample-application.yml +++ b/.github/workflows/sample-application.yml @@ -44,7 +44,7 @@ jobs: include: - platform: ios xcode-version: '16.2' - runs-on: macos-14 + runs-on: macos-15 - platform: macos runs-on: macos-15 - platform: android @@ -223,7 +223,7 @@ jobs: matrix: include: - platform: ios - runs-on: macos-14 + runs-on: macos-15 rn-architecture: 'new' ios-use-frameworks: 'no-frameworks' build-type: 'production' diff --git a/.github/workflows/testflight.yml b/.github/workflows/testflight.yml index a0df4cad40..4a5bf03a92 100644 --- a/.github/workflows/testflight.yml +++ b/.github/workflows/testflight.yml @@ -14,7 +14,7 @@ jobs: upload_to_testflight: name: Build and Upload React Native Sample to Testflight - runs-on: macos-14 + runs-on: macos-15 needs: [diff_check] if: ${{ needs.diff_check.outputs.skip_ci != 'true' }} steps: From 100b74040f2f711014385519caf5b2d2c6418403 Mon Sep 17 00:00:00 2001 From: Antonis Lilis Date: Thu, 6 Nov 2025 15:25:04 +0100 Subject: [PATCH 02/11] Bump xcode version for 0.71.11 --- .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 f6bb87f9c5..13eeea4d4e 100644 --- a/.github/workflows/e2e-v2.yml +++ b/.github/workflows/e2e-v2.yml @@ -183,7 +183,7 @@ jobs: runs-on: macos-15 - platform: ios rn-version: '0.71.11' - xcode-version: '14.2' + xcode-version: '16.2' runs-on: macos-15 - platform: android runs-on: ubuntu-latest From 9850b9fcba3f3127c29f1ac6b168d87dab42227e Mon Sep 17 00:00:00 2001 From: Antonis Lilis Date: Tue, 18 Nov 2025 14:52:58 +0100 Subject: [PATCH 03/11] Bump E2E to iOS 15.1 --- .../patch-scripts/rn.patch.podfile.js | 36 +++++++++++++++++-- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/dev-packages/e2e-tests/patch-scripts/rn.patch.podfile.js b/dev-packages/e2e-tests/patch-scripts/rn.patch.podfile.js index db43b54b54..8ab2afa36b 100755 --- a/dev-packages/e2e-tests/patch-scripts/rn.patch.podfile.js +++ b/dev-packages/e2e-tests/patch-scripts/rn.patch.podfile.js @@ -21,13 +21,16 @@ if (enableHermes === null) { throw new Error('Invalid engine'); } +// Optional iOS version argument, defaults to '15.1' due to Cocoa SDK V9 and RN 0.81.0 requirement +const iosVersion = args['ios-version'] || '15.1'; + debug.log('Patching Podfile', args['pod-file']); -const content = fs.readFileSync(args['pod-file'], 'utf8'); +let content = fs.readFileSync(args['pod-file'], 'utf8'); const isHermesEnabled = content.includes(':hermes_enabled => true,'); const shouldPatch = enableHermes !== isHermesEnabled; if (shouldPatch) { - const patched = content.replace( + content = content.replace( /:hermes_enabled.*/, enableHermes ? ':hermes_enabled => true,' : ':hermes_enabled => false,', ); @@ -36,7 +39,34 @@ if (shouldPatch) { } else { debug.log('Patching Podfile for JSC'); } - fs.writeFileSync(args['pod-file'], patched); +} + +// Patch iOS version +const platformPattern = /platform :ios, (min_ios_version_supported|['"][0-9.]+['"])/; +const currentMatch = content.match(platformPattern); + +if (currentMatch) { + const currentValue = currentMatch[1]; + const shouldPatchVersion = currentValue === 'min_ios_version_supported' || + currentValue !== `'${iosVersion}'`; + + if (shouldPatchVersion) { + content = content.replace( + platformPattern, + `platform :ios, '${iosVersion}'` + ); + debug.log(`Patching iOS version to ${iosVersion} (was: ${currentValue})`); + } else { + debug.log(`iOS version already set to ${iosVersion}`); + } +} else { + debug.log('Warning: Could not find platform :ios line to patch'); +} + +// Write the file if any changes were made +if (shouldPatch || currentMatch) { + fs.writeFileSync(args['pod-file'], content); + debug.log('Podfile patched successfully!'); } else { debug.log('Podfile is already patched!'); } From 587930058128b538d9ab5e9ce0ddbccbb73a8df4 Mon Sep 17 00:00:00 2001 From: Antonis Lilis Date: Tue, 18 Nov 2025 14:53:28 +0100 Subject: [PATCH 04/11] Bump xcode to 16.4 --- .github/workflows/e2e-v2.yml | 6 +++--- .github/workflows/sample-application-expo.yml | 2 +- .github/workflows/sample-application.yml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/e2e-v2.yml b/.github/workflows/e2e-v2.yml index b7a745f59b..005660dd99 100644 --- a/.github/workflows/e2e-v2.yml +++ b/.github/workflows/e2e-v2.yml @@ -188,12 +188,12 @@ jobs: include: - platform: ios rn-version: '0.81.0' - xcode-version: '16.2' + xcode-version: '16.4' runs-on: macos-15 - platform: ios rn-version: '0.71.11' - xcode-version: '16.2' - runs-on: macos-15 + xcode-version: '14.2' + runs-on: macos-13 - platform: android runs-on: ubuntu-latest exclude: diff --git a/.github/workflows/sample-application-expo.yml b/.github/workflows/sample-application-expo.yml index 79771350d4..d3966c75a1 100644 --- a/.github/workflows/sample-application-expo.yml +++ b/.github/workflows/sample-application-expo.yml @@ -44,7 +44,7 @@ jobs: build-type: ['dev', 'production'] include: - platform: ios - xcode-version: '16.2' + xcode-version: '16.4' runs-on: macos-15 - platform: android runs-on: ubuntu-latest diff --git a/.github/workflows/sample-application.yml b/.github/workflows/sample-application.yml index c231095c79..df24769281 100644 --- a/.github/workflows/sample-application.yml +++ b/.github/workflows/sample-application.yml @@ -52,7 +52,7 @@ jobs: build-type: ['dev', 'production'] include: - platform: ios - xcode-version: '16.2' + xcode-version: '16.4' runs-on: macos-15 - platform: macos runs-on: macos-15 From 221d0fe9b65f1eee62af13b4bebec3a109e9010c Mon Sep 17 00:00:00 2001 From: Antonis Lilis Date: Tue, 2 Dec 2025 15:49:28 +0100 Subject: [PATCH 05/11] chore(ci): Update hardcoded Xcode 16.2 references to 16.4 --- .github/workflows/e2e-v2.yml | 2 +- .github/workflows/testflight.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/e2e-v2.yml b/.github/workflows/e2e-v2.yml index 02eede8ed3..076551ed77 100644 --- a/.github/workflows/e2e-v2.yml +++ b/.github/workflows/e2e-v2.yml @@ -61,7 +61,7 @@ jobs: - uses: ./.github/actions/disk-cleanup if: ${{ matrix.platform == 'android' }} - - run: sudo xcode-select -s /Applications/Xcode_16.2.app/Contents/Developer + - run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer if: ${{ matrix.platform == 'ios' }} - run: npm i -g corepack diff --git a/.github/workflows/testflight.yml b/.github/workflows/testflight.yml index 97d1174f1b..6ac3b1cc0d 100644 --- a/.github/workflows/testflight.yml +++ b/.github/workflows/testflight.yml @@ -19,7 +19,7 @@ jobs: if: ${{ needs.diff_check.outputs.skip_ci != 'true' }} steps: - uses: actions/checkout@v6 - - run: sudo xcode-select -s /Applications/Xcode_16.2.app/Contents/Developer + - run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - uses: ruby/setup-ruby@v1 with: working-directory: samples/react-native From 22745f877d7235688e8366437f0149a99dbcf1ee Mon Sep 17 00:00:00 2001 From: Antonis Lilis Date: Tue, 2 Dec 2025 16:50:55 +0100 Subject: [PATCH 06/11] chore(ci): Update iOS simulator to iPhone SE (3rd generation) with iOS >=18.0 --- .github/workflows/e2e-v2.yml | 8 ++++++-- .github/workflows/native-tests.yml | 4 ++-- .github/workflows/sample-application.yml | 4 ++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/.github/workflows/e2e-v2.yml b/.github/workflows/e2e-v2.yml index 076551ed77..1bdd719ee0 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.0.10' - IOS_DEVICE: 'iPhone 16' - IOS_VERSION: '18.1' + IOS_DEVICE: 'iPhone SE (3rd generation)' + IOS_VERSION: '>=18.0' jobs: ready-to-merge-gate: @@ -401,6 +401,10 @@ jobs: -timezone US/Pacific script: ./dev-packages/e2e-tests/cli.mjs ${{ matrix.platform }} --test + - name: List available iOS simulators + if: ${{ matrix.platform == 'ios' }} + run: xcrun simctl list devices available + - uses: futureware-tech/simulator-action@dab10d813144ef59b48d401cd95da151222ef8cd # pin@v4 if: ${{ matrix.platform == 'ios' }} with: diff --git a/.github/workflows/native-tests.yml b/.github/workflows/native-tests.yml index 8e49ac7672..ac6b7c74b3 100644 --- a/.github/workflows/native-tests.yml +++ b/.github/workflows/native-tests.yml @@ -8,7 +8,7 @@ on: - release/** pull_request: types: [opened, synchronize, reopened, labeled] - + concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} @@ -54,7 +54,7 @@ jobs: env: SCHEME: RNSentryCocoaTester CONFIGURATION: Release - DESTINATION: 'platform=iOS Simulator,OS=latest,name=iPhone 16' + DESTINATION: 'platform=iOS Simulator,OS=latest,name=iPhone SE (3rd generation)' run: | env NSUnbufferedIO=YES \ xcodebuild -workspace *.xcworkspace \ diff --git a/.github/workflows/sample-application.yml b/.github/workflows/sample-application.yml index 55f22d177f..a4f8a7be0f 100644 --- a/.github/workflows/sample-application.yml +++ b/.github/workflows/sample-application.yml @@ -19,8 +19,8 @@ env: IOS_APP_ARCHIVE_PATH: sentry-react-native-sample.app.zip ANDROID_APP_ARCHIVE_PATH: sentry-react-native-sample.apk.zip REACT_NATIVE_SAMPLE_PATH: samples/react-native - IOS_DEVICE: 'iPhone 16' - IOS_VERSION: '18.1' + IOS_DEVICE: 'iPhone SE (3rd generation)' + IOS_VERSION: '>=18.0' ANDROID_API_LEVEL: '30' jobs: From 89a09de0a92af6e5c9fd332f1d9f5047780d1701 Mon Sep 17 00:00:00 2001 From: Antonis Lilis Date: Wed, 3 Dec 2025 10:34:40 +0100 Subject: [PATCH 07/11] Scroll to make button visible --- dev-packages/e2e-tests/maestro/feedback/captureFlow-ios.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dev-packages/e2e-tests/maestro/feedback/captureFlow-ios.yml b/dev-packages/e2e-tests/maestro/feedback/captureFlow-ios.yml index 6a3ebe8023..fb0f5f5e8f 100644 --- a/dev-packages/e2e-tests/maestro/feedback/captureFlow-ios.yml +++ b/dev-packages/e2e-tests/maestro/feedback/captureFlow-ios.yml @@ -38,6 +38,9 @@ jsEngine: graaljs id: 'sentry-feedback-take-screenshot-button' - tapOn: id: 'sentry-feedback-take-screenshot-button' +- scrollUntilVisible: + element: + id: 'sentry-feedback-screenshot-button' - tapOn: id: 'sentry-feedback-screenshot-button' From b20e6108af5e71a74fadbbf1d45c3a1449efefae Mon Sep 17 00:00:00 2001 From: Antonis Lilis Date: Wed, 3 Dec 2025 12:43:40 +0100 Subject: [PATCH 08/11] Extend wait for button --- dev-packages/e2e-tests/maestro/feedback/captureFlow-ios.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/dev-packages/e2e-tests/maestro/feedback/captureFlow-ios.yml b/dev-packages/e2e-tests/maestro/feedback/captureFlow-ios.yml index fb0f5f5e8f..a663a39f1c 100644 --- a/dev-packages/e2e-tests/maestro/feedback/captureFlow-ios.yml +++ b/dev-packages/e2e-tests/maestro/feedback/captureFlow-ios.yml @@ -38,9 +38,11 @@ jsEngine: graaljs id: 'sentry-feedback-take-screenshot-button' - tapOn: id: 'sentry-feedback-take-screenshot-button' -- scrollUntilVisible: - element: +# Wait for floating screenshot button to appear +- extendedWaitUntil: + visible: id: 'sentry-feedback-screenshot-button' + timeout: 10_000 - tapOn: id: 'sentry-feedback-screenshot-button' From fd80aaafda18eee09dee51f5596f6f7eafbd3c0d Mon Sep 17 00:00:00 2001 From: Antonis Lilis Date: Wed, 3 Dec 2025 14:44:06 +0100 Subject: [PATCH 09/11] Revert "Extend wait for button" This reverts commit b20e6108af5e71a74fadbbf1d45c3a1449efefae. --- dev-packages/e2e-tests/maestro/feedback/captureFlow-ios.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/dev-packages/e2e-tests/maestro/feedback/captureFlow-ios.yml b/dev-packages/e2e-tests/maestro/feedback/captureFlow-ios.yml index a663a39f1c..fb0f5f5e8f 100644 --- a/dev-packages/e2e-tests/maestro/feedback/captureFlow-ios.yml +++ b/dev-packages/e2e-tests/maestro/feedback/captureFlow-ios.yml @@ -38,11 +38,9 @@ jsEngine: graaljs id: 'sentry-feedback-take-screenshot-button' - tapOn: id: 'sentry-feedback-take-screenshot-button' -# Wait for floating screenshot button to appear -- extendedWaitUntil: - visible: +- scrollUntilVisible: + element: id: 'sentry-feedback-screenshot-button' - timeout: 10_000 - tapOn: id: 'sentry-feedback-screenshot-button' From 71f9b86f67879171c55326895f3fb329392e2b5a Mon Sep 17 00:00:00 2001 From: Antonis Lilis Date: Wed, 3 Dec 2025 16:01:16 +0100 Subject: [PATCH 10/11] Use iPhone 16 --- .github/workflows/e2e-v2.yml | 2 +- .github/workflows/sample-application.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/e2e-v2.yml b/.github/workflows/e2e-v2.yml index 1bdd719ee0..ae5e90deb3 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.0.10' - IOS_DEVICE: 'iPhone SE (3rd generation)' + IOS_DEVICE: 'iPhone 16' IOS_VERSION: '>=18.0' jobs: diff --git a/.github/workflows/sample-application.yml b/.github/workflows/sample-application.yml index a4f8a7be0f..3ae494a58e 100644 --- a/.github/workflows/sample-application.yml +++ b/.github/workflows/sample-application.yml @@ -19,7 +19,7 @@ env: IOS_APP_ARCHIVE_PATH: sentry-react-native-sample.app.zip ANDROID_APP_ARCHIVE_PATH: sentry-react-native-sample.apk.zip REACT_NATIVE_SAMPLE_PATH: samples/react-native - IOS_DEVICE: 'iPhone SE (3rd generation)' + IOS_DEVICE: 'iPhone 16' IOS_VERSION: '>=18.0' ANDROID_API_LEVEL: '30' From 2a71fc7ca1a2d92643acb750c81aaa7f2cf5be1a Mon Sep 17 00:00:00 2001 From: Antonis Lilis Date: Wed, 3 Dec 2025 17:17:08 +0100 Subject: [PATCH 11/11] Run native tests on iPhone 16 too --- .github/workflows/native-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/native-tests.yml b/.github/workflows/native-tests.yml index ac6b7c74b3..a09f68649e 100644 --- a/.github/workflows/native-tests.yml +++ b/.github/workflows/native-tests.yml @@ -54,7 +54,7 @@ jobs: env: SCHEME: RNSentryCocoaTester CONFIGURATION: Release - DESTINATION: 'platform=iOS Simulator,OS=latest,name=iPhone SE (3rd generation)' + DESTINATION: 'platform=iOS Simulator,OS=latest,name=iPhone 16' run: | env NSUnbufferedIO=YES \ xcodebuild -workspace *.xcworkspace \