Rebase artifacts #26
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Test Suite on React Native nightly build | ||
| on: | ||
| workflow_dispatch: {} | ||
| schedule: | ||
| - cron: '0 10 * * SAT' # 10:00 AM UTC time every Saturday | ||
| push: | ||
| branches: [main] | ||
| paths: | ||
| - .github/workflows/test-suite-nightly.yml | ||
| - tools/src/commands/SetupReactNativeNightly.ts | ||
| pull_request: | ||
| paths: | ||
| - .github/workflows/test-suite-nightly.yml | ||
| - tools/src/commands/SetupReactNativeNightly.ts | ||
| concurrency: | ||
| group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }} | ||
| cancel-in-progress: true | ||
| jobs: | ||
| ios-build: | ||
| runs-on: macos-15 | ||
| steps: | ||
| - name: 👀 Checkout | ||
| uses: actions/checkout@v5 | ||
| with: | ||
| submodules: true | ||
| - name: 🏗️ Setup Bun | ||
| uses: oven-sh/setup-bun@v2 | ||
| with: | ||
| # Version `1.x` fails due to https://github.com/oven-sh/setup-bun/issues/37 | ||
| # TODO(cedric): swap `latest` back once the issue is resolved | ||
| bun-version: latest | ||
| - name: 🔨 Switch to Xcode 26.0 | ||
| run: sudo xcode-select --switch /Applications/Xcode_26.0.app | ||
| - name: 🍺 Install required tools | ||
| run: | | ||
| brew install watchman || true | ||
| - name: ➕ Add `bin` to GITHUB_PATH | ||
| run: echo "$(pwd)/bin" >> $GITHUB_PATH | ||
| - name: 💎 Setup Ruby and install gems | ||
| uses: ruby/setup-ruby@v1 | ||
| with: | ||
| bundler-cache: true | ||
| ruby-version: 3.2.2 | ||
| - name: ♻️ Restore caches | ||
| uses: ./.github/actions/expo-caches | ||
| id: expo-caches | ||
| with: | ||
| yarn-tools: 'true' | ||
| - name: ⚙️ Setup react-native nightly | ||
| run: et setup-react-native-nightly | ||
| - name: ⚛️ Display React Native config | ||
| run: yarn expo-modules-autolinking react-native-config --platform ios | ||
| working-directory: apps/bare-expo | ||
| - name: 🌳 Display pod environment | ||
| run: pod env | ||
| working-directory: apps/bare-expo/ios | ||
| - name: 🥥 Update RCT-Folly and SocketRocket pods in apps/bare-expo/ios | ||
| run: pod update RCT-Folly SocketRocket --no-repo-update | ||
| working-directory: apps/bare-expo/ios | ||
| - name: 🍏 Build iOS Project | ||
| run: ./scripts/start-ios-e2e-test.ts --build | ||
| working-directory: apps/bare-expo | ||
| env: | ||
| EXPO_DEBUG: 1 | ||
| NODE_ENV: production | ||
| - name: 📸 Upload builds | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: bare-expo-ios-builds | ||
| path: apps/bare-expo/ios/build/BareExpo.app | ||
| - name: 🔔 Notify on Slack | ||
| uses: ./.github/actions/slack-notify | ||
| if: failure() && (github.event_name == 'schedule' || github.event.ref == 'refs/heads/main') | ||
| with: | ||
| webhook: ${{ secrets.slack_webhook_ios }} | ||
| channel: '#expo-ios' | ||
| author_name: Test Suite Nightly (iOS) | ||
| ios-test: | ||
| needs: ios-build | ||
| runs-on: macos-15 | ||
| steps: | ||
| - name: 👀 Checkout | ||
| uses: actions/checkout@v5 | ||
| with: | ||
| submodules: true | ||
| - name: 🏗️ Setup Bun | ||
| uses: oven-sh/setup-bun@v2 | ||
| with: | ||
| # Version `1.x` fails due to https://github.com/oven-sh/setup-bun/issues/37 | ||
| # TODO(cedric): swap `latest` back once the issue is resolved | ||
| bun-version: latest | ||
| - name: 🔨 Switch to Xcode 26.0 | ||
| run: sudo xcode-select --switch /Applications/Xcode_26.0.app | ||
| - name: ➕ Add `bin` to GITHUB_PATH | ||
| run: echo "$(pwd)/bin" >> $GITHUB_PATH | ||
| - name: 🌠 Download builds | ||
| uses: actions/download-artifact@v4 | ||
| with: | ||
| name: bare-expo-ios-builds | ||
| path: apps/bare-expo/ios/build/BareExpo.app | ||
| - name: 🧹 Cleanup unused simulator runtimes | ||
| run: | | ||
| xcrun simctl list devices -j | jq -r '.devices | to_entries[] | select(.key | contains("iOS") | not) | .value[].udid' | xargs -r -n1 xcrun simctl delete | ||
| xcrun simctl list devices --json | ||
| xcrun simctl erase all | ||
| xcrun simctl shutdown all | ||
| sudo xcodebuild -runFirstLaunch | ||
| - name: 🍺 Install Maestro | ||
| run: | | ||
| curl -Ls "https://get.maestro.mobile.dev" | bash | ||
| echo "${HOME}/.maestro/bin" >> $GITHUB_PATH | ||
| - name: ♻️ Restore caches | ||
| uses: ./.github/actions/expo-caches | ||
| id: expo-caches | ||
| with: | ||
| yarn-workspace: 'true' | ||
| - name: 🧶 Install node modules in root dir | ||
| if: steps.expo-caches.outputs.yarn-workspace-hit != 'true' | ||
| run: yarn install --frozen-lockfile | ||
| - name: 🍏 Run iOS tests | ||
| run: ./scripts/start-ios-e2e-test.ts --test | ||
| working-directory: apps/bare-expo | ||
| - name: 📸 Store testing artifacts | ||
| if: always() | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: bare-expo-artifacts-ios | ||
| path: | | ||
| ~/.maestro/tests/**/* | ||
| ~/Library/Logs/maestro/**/* | ||
| overwrite: true | ||
| - name: 🔔 Notify on Slack | ||
| uses: ./.github/actions/slack-notify | ||
| if: failure() && (github.event_name == 'schedule' || github.event.ref == 'refs/heads/main') | ||
| with: | ||
| webhook: ${{ secrets.slack_webhook_ios }} | ||
| channel: '#expo-ios' | ||
| author_name: Test Suite Nightly (iOS) | ||
| android-build: | ||
| runs-on: ubuntu-24.04 | ||
| env: | ||
| ORG_GRADLE_PROJECT_reactNativeArchitectures: x86_64 | ||
| GRADLE_OPTS: -Dorg.gradle.jvmargs="-Xmx4096m -XX:MaxMetaspaceSize=4096m" | ||
| steps: | ||
| - name: 👀 Checkout | ||
| uses: actions/checkout@v5 | ||
| with: | ||
| submodules: true | ||
| - name: 🧹 Cleanup GitHub Linux runner disk space | ||
| uses: ./.github/actions/cleanup-linux-disk-space | ||
| - name: 🏗️ Setup Bun | ||
| uses: oven-sh/setup-bun@v2 | ||
| with: | ||
| # Version `1.x` fails due to https://github.com/oven-sh/setup-bun/issues/37 | ||
| # TODO(cedric): swap `latest` back once the issue is resolved | ||
| bun-version: latest | ||
| - name: 🔨 Use JDK 17 | ||
| uses: actions/setup-java@v4 | ||
| with: | ||
| distribution: 'temurin' | ||
| java-version: '17' | ||
| - name: ➕ Add `bin` to GITHUB_PATH | ||
| run: echo "$(pwd)/bin" >> $GITHUB_PATH | ||
| - name: ♻️ Restore caches | ||
| uses: ./.github/actions/expo-caches | ||
| id: expo-caches | ||
| with: | ||
| gradle: 'true' | ||
| yarn-tools: 'true' | ||
| - name: ⚙️ Setup react-native nightly | ||
| run: et setup-react-native-nightly | ||
| - name: ⚛️ Display React Native config | ||
| run: yarn expo-modules-autolinking react-native-config --platform android | ||
| working-directory: apps/bare-expo | ||
| - name: 🤖 Gradle prebuild for Android project (workaround to fix build error) | ||
| run: ./gradlew preBuild | ||
| working-directory: apps/bare-expo/android | ||
| - name: 🤖 Build Android project | ||
| run: ./scripts/start-android-e2e-test.ts --build | ||
| working-directory: apps/bare-expo | ||
| - name: 📸 Upload builds | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: bare-expo-android-builds | ||
| path: apps/bare-expo/android/app/build/outputs/apk | ||
| - name: 🔔 Notify on Slack | ||
| uses: ./.github/actions/slack-notify | ||
| if: failure() && (github.event_name == 'schedule' || github.event.ref == 'refs/heads/main') | ||
| with: | ||
| webhook: ${{ secrets.slack_webhook_android }} | ||
| channel: '#expo-android' | ||
| author_name: Test Suite Nightly (Android) | ||
| android-test: | ||
| needs: android-build | ||
| runs-on: ubuntu-24.04 | ||
| strategy: | ||
| matrix: | ||
| api-level: [36] | ||
| steps: | ||
| - name: 👀 Checkout | ||
| uses: actions/checkout@v4 | ||
| - name: 🏗️ Setup Bun | ||
| uses: oven-sh/setup-bun@v2 | ||
| with: | ||
| # Version `1.x` fails due to https://github.com/oven-sh/setup-bun/issues/37 | ||
| # TODO(cedric): swap `latest` back once the issue is resolved | ||
| bun-version: latest | ||
| - name: 🌠 Download builds | ||
| uses: actions/download-artifact@v4 | ||
| with: | ||
| name: bare-expo-android-builds | ||
| path: apps/bare-expo/android/app/build/outputs/apk | ||
| - name: 🍺 Install Maestro | ||
| run: | | ||
| curl -Ls "https://get.maestro.mobile.dev" | bash | ||
| echo "${HOME}/.maestro/bin" >> $GITHUB_PATH | ||
| - name: ♻️ Restore caches | ||
| uses: ./.github/actions/expo-caches | ||
| id: expo-caches | ||
| with: | ||
| yarn-workspace: 'true' | ||
| - name: 🧶 Install node modules in root dir | ||
| if: steps.expo-caches.outputs.yarn-workspace-hit != 'true' | ||
| run: yarn install --frozen-lockfile | ||
| - name: 🤖 Run Android tests | ||
| uses: ./.github/actions/use-android-emulator | ||
| with: | ||
| avd-api: ${{ matrix.api-level }} | ||
| avd-name: avd-${{ matrix.api-level }} | ||
| script: ./scripts/start-android-e2e-test.ts --test | ||
| working-directory: ./apps/bare-expo | ||
| - name: 📸 Store testing artifacts | ||
| if: always() | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: bare-expo-artifacts-android | ||
| path: | | ||
| ~/.maestro/tests/**/* | ||
| ~/Library/Logs/maestro/**/* | ||
| overwrite: true | ||
| - name: 🔔 Notify on Slack | ||
| uses: ./.github/actions/slack-notify | ||
| if: failure() && (github.event_name == 'schedule' || github.event.ref == 'refs/heads/main') | ||
| webhook: ${{ secrets.slack_webhook_android }} | ||
| channel: '#expo-android' | ||
| author_name: Test Suite Nightly (Android) | ||