@@ -25,34 +25,38 @@ jobs:
25
25
node-version : lts/jod
26
26
- run : npm ci
27
27
- run : npm run lint
28
- test :
28
+ unit-tests :
29
29
strategy :
30
30
fail-fast : false
31
31
matrix :
32
32
runner :
33
33
- ubuntu-latest
34
34
- windows-latest
35
35
- 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 }})
55
36
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
56
60
steps :
57
61
- uses : actions/checkout@v4
58
62
- uses : actions/setup-node@v4
@@ -70,28 +74,39 @@ jobs:
70
74
- run : rustup target add x86_64-linux-android aarch64-linux-android armv7-linux-androideabi i686-linux-android aarch64-apple-ios-sim
71
75
- run : npm ci
72
76
- 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
80
78
working-directory : apps/test-app
81
- - if : matrix.variant == 'ios-tests'
82
- name : Run tests (iOS)
79
+ - name : Run tests (iOS)
83
80
run : npm run test:ios
84
81
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
86
103
- name : Clone patched Hermes version
87
- if : matrix.variant == 'android-tests'
88
104
shell : bash
89
105
run : |
90
106
REACT_NATIVE_OVERRIDE_HERMES_DIR=$(npx react-native-node-api vendor-hermes --silent)
91
107
echo "REACT_NATIVE_OVERRIDE_HERMES_DIR=$REACT_NATIVE_OVERRIDE_HERMES_DIR" >> $GITHUB_ENV
92
108
working-directory : apps/test-app
93
109
- name : Setup Android Emulator cache
94
- if : matrix.variant == 'android-tests'
95
110
uses : actions/cache@v4
96
111
id : avd-cache
97
112
with :
@@ -101,29 +116,25 @@ jobs:
101
116
key : ${{ runner.os }}-avd-29
102
117
# See https://github.com/marketplace/actions/android-emulator-runner#running-hardware-accelerated-emulators-on-linux-runners
103
118
- name : Enable KVM group perms
104
- if : matrix.runner == 'ubuntu-latest' && matrix.variant == 'android-tests'
105
119
run : |
106
120
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
107
121
sudo udevadm control --reload-rules
108
122
sudo udevadm trigger --name-match=kvm
109
123
- name : Build weak-node-api for all architectures
110
- if : matrix.variant == 'android-tests'
111
124
run : npm run build-weak-node-api -- --android
112
125
working-directory : packages/host
113
126
- name : Build ferric-example for all architectures
114
- if : matrix.variant == 'android-tests'
115
127
run : npm run build -- --android
116
128
working-directory : packages/ferric-example
117
129
- name : Run tests (Android)
118
- if : matrix.variant == 'android-tests'
119
130
timeout-minutes : 75
120
131
uses : reactivecircus/android-emulator-runner@v2
121
132
with :
122
133
api-level : 29
123
134
force-avd-creation : false
124
135
emulator-options : -no-snapshot-save -no-metrics -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
125
136
disable-animations : true
126
- arch : ${{ runner.os == 'macOS' && 'arm64-v8a' || ' x86' }}
137
+ arch : x86
127
138
ndk : ${{ env.NDK_VERSION }}
128
139
cmake : 3.22.1
129
140
working-directory : apps/test-app
0 commit comments