1010 paths :
1111 - ' .github/workflows/e2e-android-test.yml'
1212 - ' example/**'
13- - ' cpp/**'
14- - ' nitrogen/**'
15- - ' src/**'
13+ - ' packages/react-native-quick-crypto/ cpp/**'
14+ - ' packages/react-native-quick-crypto/ nitrogen/**'
15+ - ' packages/react-native-quick-crypto/ src/**'
1616 - ' packages/react-native-quick-crypto/android/**'
1717 push :
1818 branches : [main]
1919 paths :
2020 - ' example/**'
21- - ' cpp/**'
22- - ' nitrogen/**'
23- - ' src/**'
21+ - ' packages/react-native-quick-crypto/ cpp/**'
22+ - ' packages/react-native-quick-crypto/ nitrogen/**'
23+ - ' packages/react-native-quick-crypto/ src/**'
2424 - ' packages/react-native-quick-crypto/android/**'
2525
2626env :
2727 EMULATOR_API_LEVEL : 34
28+ # Opt actions still on Node 20 (setup-java, upload/download-artifact, setup-android, etc.)
29+ # into the runner's Node 24 instead. Silences deprecation warnings until each action ships a v5.
30+ # https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
31+ FORCE_JAVASCRIPT_ACTIONS_TO_NODE24 : ' true'
32+
33+ # Minimum scopes — post-maestro-screenshot composite action posts a PR comment with
34+ # the upload-image artifact link.
35+ permissions :
36+ contents : read
37+ pull-requests : write
2838
2939jobs :
3040 # ============================================================================
5161 - name : Setup Node.js
5262 uses : actions/setup-node@v5
5363 with :
54- node-version : ' 20 '
64+ node-version : ' 24 '
5565
5666 - name : Install Bun
5767 uses : ./.github/actions/setup-bun
8797 packages/react-native-quick-crypto/android/build
8898 node_modules/.bun/react-native-nitro-modules*/node_modules/react-native-nitro-modules/android/.cxx
8999 node_modules/.bun/react-native-nitro-modules*/node_modules/react-native-nitro-modules/android/build
90- key : ${{ runner.os }}-gradle-${{ github.run_id }}
100+ key : ${{ runner.os }}-gradle-${{ hashFiles('example/android/**/*.gradle*', 'example/android/gradle.properties', 'example/android/gradle/wrapper/gradle-wrapper.properties', 'packages/react-native-quick-crypto/android/build.gradle', 'packages/react-native-quick-crypto/android/gradle.properties', 'bun.lock') }}
91101 restore-keys : |
92102 ${{ runner.os }}-gradle-
93103
@@ -141,7 +151,7 @@ jobs:
141151 packages/react-native-quick-crypto/android/build
142152 node_modules/.bun/react-native-nitro-modules*/node_modules/react-native-nitro-modules/android/.cxx
143153 node_modules/.bun/react-native-nitro-modules*/node_modules/react-native-nitro-modules/android/build
144- key : ${{ runner.os }}-gradle-${{ github.run_id }}
154+ key : ${{ runner.os }}-gradle-${{ hashFiles('example/android/**/*.gradle*', 'example/android/gradle.properties', 'example/android/gradle/wrapper/gradle-wrapper.properties', 'packages/react-native-quick-crypto/android/build.gradle', 'packages/react-native-quick-crypto/android/gradle.properties', 'bun.lock') }}
145155
146156 # ============================================================================
147157 # AVD Job - Create and cache emulator snapshot (runs in parallel with build)
@@ -167,9 +177,7 @@ jobs:
167177 path : |
168178 ~/.android/avd/*
169179 ~/.android/adb*
170- key : avd-pixel7pro-${{ env.EMULATOR_API_LEVEL }}-${{ github.run_id }}
171- restore-keys : |
172- avd-pixel7pro-${{ env.EMULATOR_API_LEVEL }}-
180+ key : avd-pixel7pro-${{ env.EMULATOR_API_LEVEL }}-x86_64-v1
173181
174182 - name : Create AVD and Generate Snapshot for Caching
175183 if : steps.avd-cache.outputs.cache-hit != 'true'
@@ -190,7 +198,7 @@ jobs:
190198 path : |
191199 ~/.android/avd/*
192200 ~/.android/adb*
193- key : avd-pixel7pro-${{ env.EMULATOR_API_LEVEL }}-${{ github.run_id }}
201+ key : avd-pixel7pro-${{ env.EMULATOR_API_LEVEL }}-x86_64-v1
194202
195203 # ============================================================================
196204 # Test Job - Run E2E tests (needs both build and AVD)
@@ -209,7 +217,7 @@ jobs:
209217 - name : Setup Node.js
210218 uses : actions/setup-node@v5
211219 with :
212- node-version : ' 20 '
220+ node-version : ' 24 '
213221
214222 - name : Install Bun
215223 uses : ./.github/actions/setup-bun
@@ -226,7 +234,7 @@ jobs:
226234 uses : actions/cache/restore@v5
227235 with :
228236 path : node_modules
229- key : ${{ runner.os }}-node-modules-${{ github.run_id }}
237+ key : ${{ runner.os }}-node-modules-${{ hashFiles('bun.lock') }}
230238 restore-keys : |
231239 ${{ runner.os }}-node-modules-
232240
@@ -237,7 +245,7 @@ jobs:
237245 uses : actions/cache/save@v5
238246 with :
239247 path : node_modules
240- key : ${{ runner.os }}-node-modules-${{ github.run_id }}
248+ key : ${{ runner.os }}-node-modules-${{ hashFiles('bun.lock') }}
241249
242250 - name : Download APK
243251 uses : actions/download-artifact@v4
@@ -263,9 +271,7 @@ jobs:
263271 path : |
264272 ~/.android/avd/*
265273 ~/.android/adb*
266- key : avd-pixel7pro-${{ env.EMULATOR_API_LEVEL }}-${{ github.run_id }}
267- restore-keys : |
268- avd-pixel7pro-${{ env.EMULATOR_API_LEVEL }}-
274+ key : avd-pixel7pro-${{ env.EMULATOR_API_LEVEL }}-x86_64-v1
269275
270276 - name : Run E2E Tests
271277 uses : reactivecircus/android-emulator-runner@v2
0 commit comments