fix(e2e): add build-tools 30.0.3 and platform-tools hash override #24
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: E2E Mobile Tests | |
| on: | |
| # Weekly schedule - Monday 9am UTC | |
| schedule: | |
| - cron: '0 9 * * 1' | |
| # TODO: Remove before merging - for testing only | |
| push: | |
| branches: | |
| - feat/mobile-devtools-e2e-integration | |
| # Manual trigger | |
| workflow_dispatch: | |
| inputs: | |
| test_matrix: | |
| description: 'Test matrix to run' | |
| required: false | |
| type: choice | |
| options: | |
| - all | |
| - android | |
| - ios | |
| - compat | |
| - latest | |
| default: 'all' | |
| # Callable by other workflows (e.g., release) | |
| workflow_call: | |
| concurrency: | |
| group: e2e-mobile-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| e2e-android-compat: | |
| name: E2E Android (RN 0.72) | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 30 | |
| if: | | |
| inputs.test_matrix == 'all' || | |
| inputs.test_matrix == 'android' || | |
| inputs.test_matrix == 'compat' || | |
| github.event_name != 'workflow_dispatch' | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Enable KVM | |
| run: | | |
| echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules | |
| sudo udevadm control --reload-rules | |
| sudo udevadm trigger --name-match=kvm | |
| - name: Install devbox | |
| uses: jetify-com/devbox-install-action@v0.15.0 | |
| with: | |
| project-path: examples/E2E-compat | |
| - name: Run Android E2E Tests | |
| working-directory: examples/E2E-compat | |
| run: devbox run --pure test:e2e:android | |
| env: | |
| DETOX_AVD: medium_phone_API33_x86_64 | |
| - name: Upload test results | |
| if: always() | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: e2e-android-compat-results | |
| path: examples/E2E-compat/reports/ | |
| if-no-files-found: ignore | |
| e2e-ios-compat: | |
| name: E2E iOS (RN 0.72) | |
| runs-on: macos-14 | |
| timeout-minutes: 30 | |
| if: | | |
| inputs.test_matrix == 'all' || | |
| inputs.test_matrix == 'ios' || | |
| inputs.test_matrix == 'compat' || | |
| github.event_name != 'workflow_dispatch' | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install devbox | |
| uses: jetify-com/devbox-install-action@v0.15.0 | |
| with: | |
| project-path: examples/E2E-compat | |
| - name: Run iOS E2E Tests | |
| working-directory: examples/E2E-compat | |
| run: devbox run --pure test:e2e:ios | |
| - name: Upload test results | |
| if: always() | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: e2e-ios-compat-results | |
| path: examples/E2E-compat/reports/ | |
| if-no-files-found: ignore | |
| e2e-android-latest: | |
| name: E2E Android (RN 0.84) | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 30 | |
| continue-on-error: true # TODO: Remove when RN 0.84 support is complete | |
| if: | | |
| inputs.test_matrix == 'all' || | |
| inputs.test_matrix == 'android' || | |
| inputs.test_matrix == 'latest' || | |
| github.event_name != 'workflow_dispatch' | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Enable KVM | |
| run: | | |
| echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules | |
| sudo udevadm control --reload-rules | |
| sudo udevadm trigger --name-match=kvm | |
| - name: Install devbox | |
| uses: jetify-com/devbox-install-action@v0.15.0 | |
| with: | |
| project-path: examples/E2E-latest | |
| - name: Run Android E2E Tests | |
| working-directory: examples/E2E-latest | |
| run: devbox run --pure test:e2e:android | |
| env: | |
| DETOX_AVD: medium_phone_API35_x86_64 | |
| - name: Upload test results | |
| if: always() | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: e2e-android-latest-results | |
| path: examples/E2E-latest/reports/ | |
| if-no-files-found: ignore | |
| e2e-ios-latest: | |
| name: E2E iOS (RN 0.84) | |
| runs-on: macos-14 | |
| timeout-minutes: 30 | |
| continue-on-error: true # TODO: Remove when RN 0.84 support is complete | |
| if: | | |
| inputs.test_matrix == 'all' || | |
| inputs.test_matrix == 'ios' || | |
| inputs.test_matrix == 'latest' || | |
| github.event_name != 'workflow_dispatch' | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install devbox | |
| uses: jetify-com/devbox-install-action@v0.15.0 | |
| with: | |
| project-path: examples/E2E-latest | |
| - name: Run iOS E2E Tests | |
| working-directory: examples/E2E-latest | |
| run: devbox run --pure test:e2e:ios | |
| - name: Upload test results | |
| if: always() | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: e2e-ios-latest-results | |
| path: examples/E2E-latest/reports/ | |
| if-no-files-found: ignore | |
| e2e-summary: | |
| name: E2E Test Summary | |
| runs-on: ubuntu-latest | |
| needs: | |
| [e2e-android-compat, e2e-ios-compat, e2e-android-latest, e2e-ios-latest] | |
| if: always() | |
| steps: | |
| - name: Check results | |
| run: | | |
| echo "📊 E2E Test Results:" | |
| echo " Android (RN 0.72): ${{ needs.e2e-android-compat.result }}" | |
| echo " iOS (RN 0.72): ${{ needs.e2e-ios-compat.result }}" | |
| echo " Android (RN 0.84): ${{ needs.e2e-android-latest.result }}" | |
| echo " iOS (RN 0.84): ${{ needs.e2e-ios-latest.result }}" | |
| echo "" | |
| # Check for failures, treating continue-on-error jobs as non-blocking | |
| if [[ "${{ needs.e2e-android-compat.result }}" != "success" && "${{ needs.e2e-android-compat.result }}" != "skipped" ]] || \ | |
| [[ "${{ needs.e2e-ios-compat.result }}" != "success" && "${{ needs.e2e-ios-compat.result }}" != "skipped" ]]; then | |
| echo "::error::One or more E2E test suites failed" | |
| echo "::error::Check the individual job logs for details" | |
| exit 1 | |
| fi | |
| # Note: android-latest and ios-latest have continue-on-error, so we don't fail on them | |
| if [[ "${{ needs.e2e-android-latest.result }}" == "failure" ]] || \ | |
| [[ "${{ needs.e2e-ios-latest.result }}" == "failure" ]]; then | |
| echo "::warning::RN 0.84 tests failed but are allowed to fail (continue-on-error)" | |
| fi | |
| echo "::notice::✅ E2E tests passed successfully!" |