From 3613bca58f2d0d704e583091118da8bd6dc011c3 Mon Sep 17 00:00:00 2001 From: Juliusz Wajgelt Date: Thu, 27 Aug 2026 09:27:57 +0200 Subject: [PATCH 1/2] Add dispatchable E2E Maestro workflow A trimmed-down test-all that builds only what the two iOS Maestro E2E flows need (Apple prebuilds, RNTester app, npm package dry-run) and runs them with fail-on-error, omitting Android, SPM, unit-test, and lint jobs. --- .github/workflows/e2e-maestro.yml | 82 +++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 .github/workflows/e2e-maestro.yml diff --git a/.github/workflows/e2e-maestro.yml b/.github/workflows/e2e-maestro.yml new file mode 100644 index 000000000000..4e871df3eab7 --- /dev/null +++ b/.github/workflows/e2e-maestro.yml @@ -0,0 +1,82 @@ +name: E2E Maestro + +# A trimmed-down test-all: builds only what the two iOS Maestro E2E flows +# need (Apple prebuilds, the RNTester app, the npm package) and runs them. +# No Android, SPM, unit-test, or lint jobs. + +on: + workflow_dispatch: + +permissions: + contents: read + +jobs: + prebuild_apple_dependencies: + uses: ./.github/workflows/prebuild-ios-dependencies.yml + secrets: inherit + + prebuild_react_native_core: + needs: [prebuild_apple_dependencies] + uses: ./.github/workflows/prebuild-ios-core.yml + with: + use-hermes-prebuilt: ${{ !endsWith(github.ref_name, '-stable') }} + secrets: inherit + + # Builds RNTester and uploads the RNTesterApp-NewArch- artifacts + # consumed by e2e-ios-rntester.yml (run-unit-tests defaults to false). + build_rntester_app: + runs-on: macos-15-large + needs: [prebuild_apple_dependencies, prebuild_react_native_core] + strategy: + fail-fast: false + matrix: + flavor: [Debug, Release] + steps: + - name: Checkout + uses: actions/checkout@v6 + - name: Build RNTester + uses: ./.github/actions/test-ios-rntester + with: + use-prebuilds: true + flavor: ${{ matrix.flavor }} + + # Builds the react-native .tgz (dry-run) consumed by e2e-ios-templateapp.yml. + build_npm_package: + runs-on: 8-core-ubuntu + needs: [prebuild_apple_dependencies, prebuild_react_native_core] + container: + image: reactnativecommunity/react-native-android:latest + env: + TERM: 'dumb' + # Set the encoding to resolve a known character encoding issue with decompressing tar.gz files in containers + # via Gradle: https://github.com/gradle/gradle/issues/23391#issuecomment-1878979127 + LC_ALL: C.UTF8 + GRADLE_OPTS: '-Dorg.gradle.daemon=false' + REACT_NATIVE_DOWNLOADS_DIR: /opt/react-native-downloads + steps: + - name: Checkout + uses: actions/checkout@v6 + - name: Build NPM Package + uses: ./.github/actions/build-npm-package + with: + release-type: dry-run + gradle-cache-encryption-key: ${{ secrets.GRADLE_CACHE_ENCRYPTION_KEY }} + + test_e2e_ios_rntester: + needs: build_rntester_app + uses: ./.github/workflows/e2e-ios-rntester.yml + with: + fail-on-error: true + secrets: inherit + + test_e2e_ios_templateapp: + needs: + [ + build_npm_package, + prebuild_apple_dependencies, + prebuild_react_native_core, + ] + uses: ./.github/workflows/e2e-ios-templateapp.yml + with: + fail-on-error: true + secrets: inherit From 758fcae2029c0e96b4d940c4fea805cf2ff70140 Mon Sep 17 00:00:00 2001 From: Juliusz Wajgelt Date: Thu, 27 Aug 2026 09:30:30 +0200 Subject: [PATCH 2/2] Use standard GitHub-hosted runner labels for the E2E Maestro path The larger-runner labels (macos-15-large, macos-26-large, 8-core-ubuntu) are configured for upstream, not this org; jobs using them would queue forever. --- .github/workflows/e2e-ios-templateapp.yml | 2 +- .github/workflows/e2e-maestro.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/e2e-ios-templateapp.yml b/.github/workflows/e2e-ios-templateapp.yml index cc092e9acfb5..52198c766b08 100644 --- a/.github/workflows/e2e-ios-templateapp.yml +++ b/.github/workflows/e2e-ios-templateapp.yml @@ -18,7 +18,7 @@ jobs: # Building the app needs Xcode, so it stays on a macOS runner. The E2E run # itself drives a remote simulator via sim-remote, so it runs on Linux. build: - runs-on: macos-26-large + runs-on: macos-26 strategy: fail-fast: false matrix: diff --git a/.github/workflows/e2e-maestro.yml b/.github/workflows/e2e-maestro.yml index 4e871df3eab7..fd15bc8053c0 100644 --- a/.github/workflows/e2e-maestro.yml +++ b/.github/workflows/e2e-maestro.yml @@ -25,7 +25,7 @@ jobs: # Builds RNTester and uploads the RNTesterApp-NewArch- artifacts # consumed by e2e-ios-rntester.yml (run-unit-tests defaults to false). build_rntester_app: - runs-on: macos-15-large + runs-on: macos-15 needs: [prebuild_apple_dependencies, prebuild_react_native_core] strategy: fail-fast: false @@ -42,7 +42,7 @@ jobs: # Builds the react-native .tgz (dry-run) consumed by e2e-ios-templateapp.yml. build_npm_package: - runs-on: 8-core-ubuntu + runs-on: ubuntu-latest needs: [prebuild_apple_dependencies, prebuild_react_native_core] container: image: reactnativecommunity/react-native-android:latest