@@ -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 : macos-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