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 new file mode 100644 index 000000000000..fd15bc8053c0 --- /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 + 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: ubuntu-latest + 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