@@ -25,34 +25,38 @@ jobs:
2525 node-version: lts/jod
2626 - run: npm ci
2727 - run: npm run lint
28- test :
28+ unit-tests :
2929 strategy:
3030 fail-fast: false
3131 matrix:
3232 runner:
3333 - ubuntu-latest
3434 - windows-latest
3535 - macos-latest
36- variant :
37- - unit-tests
38- - android-tests
39- - ios-tests
40- exclude :
41- # iOS tests are only supported on macOS runners
42- - runner : ubuntu-latest
43- variant : ios-tests
44- - runner : windows-latest
45- variant : ios-tests
46- # The reactivecircus/android-emulator-runner action does not support Windows runners
47- # See https://github.com/marketplace/actions/android-emulator-runner#github-action---android-emulator-runner
48- - runner : windows-latest
49- variant : android-tests
50- # MacOS is slow and expensive at running Android emulators
51- - runner : macos-latest
52- variant : android-tests
53-
54- name : Test (${{ matrix.variant }} on ${{ matrix.runner }})
5536 runs-on: ${{ matrix.runner }}
37+ name: Unit tests (${{ matrix.runner }})
38+ steps:
39+ - uses: actions/checkout@v4
40+ - uses: actions/setup-node@v4
41+ with:
42+ node-version: lts/jod
43+ - name: Set up JDK 17
44+ uses: actions/setup-java@v3
45+ with:
46+ java-version: "17"
47+ distribution: "temurin"
48+ - name: Setup Android SDK
49+ uses: android-actions/setup-android@v3
50+ with:
51+ packages: tools platform-tools ndk;${{ env.NDK_VERSION }}
52+ - run: rustup target add x86_64-linux-android aarch64-linux-android armv7-linux-androideabi i686-linux-android aarch64-apple-ios-sim
53+ - run: npm ci
54+ - run: npm run bootstrap
55+ - run: npm test
56+ test-ios:
57+ if: github.ref == 'refs/heads/main' || contains(github.event.pull_request.labels.*.name, 'test-ios')
58+ name: Test app (iOS)
59+ runs-on: ubuntu-latest
5660 steps:
5761 - uses: actions/checkout@v4
5862 - uses: actions/setup-node@v4
@@ -70,28 +74,39 @@ jobs:
7074 - run: rustup target add x86_64-linux-android aarch64-linux-android armv7-linux-androideabi i686-linux-android aarch64-apple-ios-sim
7175 - run: npm ci
7276 - run: npm run bootstrap
73- # Unit tests
74- - if : matrix.variant == 'unit-tests'
75- name : Run tests (Unit)
76- run : npm test
77- # Integration tests (iOS)
78- - if : matrix.variant == 'ios-tests'
79- run : npm run pod-install
77+ - run: npm run pod-install
8078 working-directory: apps/test-app
81- - if : matrix.variant == 'ios-tests'
82- name : Run tests (iOS)
79+ - name: Run tests (iOS)
8380 run: npm run test:ios
8481 working-directory: apps/test-app
85- # Integration tests (Android)
82+ test-android:
83+ if: github.ref == 'refs/heads/main' || contains(github.event.pull_request.labels.*.name, 'test-android')
84+ name: Test app (Android)
85+ runs-on: ubuntu-latest
86+ steps:
87+ - uses: actions/checkout@v4
88+ - uses: actions/setup-node@v4
89+ with:
90+ node-version: lts/jod
91+ - name: Set up JDK 17
92+ uses: actions/setup-java@v3
93+ with:
94+ java-version: "17"
95+ distribution: "temurin"
96+ - name: Setup Android SDK
97+ uses: android-actions/setup-android@v3
98+ with:
99+ packages: tools platform-tools ndk;${{ env.NDK_VERSION }}
100+ - run: rustup target add x86_64-linux-android aarch64-linux-android armv7-linux-androideabi i686-linux-android aarch64-apple-ios-sim
101+ - run: npm ci
102+ - run: npm run bootstrap
86103 - name: Clone patched Hermes version
87- if : matrix.variant == 'android-tests'
88104 shell: bash
89105 run: |
90106 REACT_NATIVE_OVERRIDE_HERMES_DIR=$(npx react-native-node-api vendor-hermes --silent)
91107 echo "REACT_NATIVE_OVERRIDE_HERMES_DIR=$REACT_NATIVE_OVERRIDE_HERMES_DIR" >> $GITHUB_ENV
92108 working-directory: apps/test-app
93109 - name: Setup Android Emulator cache
94- if : matrix.variant == 'android-tests'
95110 uses: actions/cache@v4
96111 id: avd-cache
97112 with:
@@ -101,29 +116,25 @@ jobs:
101116 key: ${{ runner.os }}-avd-29
102117 # See https://github.com/marketplace/actions/android-emulator-runner#running-hardware-accelerated-emulators-on-linux-runners
103118 - name: Enable KVM group perms
104- if : matrix.runner == 'ubuntu-latest' && matrix.variant == 'android-tests'
105119 run: |
106120 echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
107121 sudo udevadm control --reload-rules
108122 sudo udevadm trigger --name-match=kvm
109123 - name: Build weak-node-api for all architectures
110- if : matrix.variant == 'android-tests'
111124 run: npm run build-weak-node-api -- --android
112125 working-directory: packages/host
113126 - name: Build ferric-example for all architectures
114- if : matrix.variant == 'android-tests'
115127 run: npm run build -- --android
116128 working-directory: packages/ferric-example
117129 - name: Run tests (Android)
118- if : matrix.variant == 'android-tests'
119130 timeout-minutes: 75
120131 uses: reactivecircus/android-emulator-runner@v2
121132 with:
122133 api-level: 29
123134 force-avd-creation: false
124135 emulator-options: -no-snapshot-save -no-metrics -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
125136 disable-animations: true
126- arch : ${{ runner.os == 'macOS' && 'arm64-v8a' || ' x86' }}
137+ arch: x86
127138 ndk: ${{ env.NDK_VERSION }}
128139 cmake: 3.22.1
129140 working-directory: apps/test-app
0 commit comments