@@ -223,31 +223,57 @@ runs:
223223 echo "manager=npm" >> $GITHUB_OUTPUT
224224 echo "runner=npx " >> $GITHUB_OUTPUT
225225 fi
226- - name : Run pre-run hook
227- if : fromJson(steps.load-config.outputs.config).platformId != 'android' && inputs.preRunHook != ''
228- shell : bash
229- working-directory : ${{ steps.load-config.outputs.projectRoot }}
230- env :
231- HOOK_CONTENT : ${{ inputs.preRunHook }}
232- HARNESS_RUNNER : ${{ inputs.runner }}
233- run : |
234- export HARNESS_PROJECT_ROOT="$PWD"
235- hook_file="$(mktemp "${RUNNER_TEMP:-/tmp}/harness-pre-run.XXXXXX.sh")"
236- trap 'rm -f "$hook_file"' EXIT
237- printf '%s\n' "$HOOK_CONTENT" > "$hook_file"
238- chmod +x "$hook_file"
239- bash "$hook_file"
240226 - name : Run E2E tests
241227 id : run-tests
242228 if : fromJson(steps.load-config.outputs.config).platformId != 'android'
243229 shell : bash
244230 working-directory : ${{ steps.load-config.outputs.projectRoot }}
231+ env :
232+ PRE_RUN_HOOK : ${{ inputs.preRunHook }}
233+ AFTER_RUN_HOOK : ${{ inputs.afterRunHook }}
234+ HARNESS_RUNNER : ${{ inputs.runner }}
245235 run : |
236+ export HARNESS_PROJECT_ROOT="$PWD"
237+
238+ if [ -n "$PRE_RUN_HOOK" ]; then
239+ pre_hook_file="$(mktemp "${RUNNER_TEMP:-/tmp}/harness-pre-run.XXXXXX.sh")"
240+ trap 'rm -f "$pre_hook_file"' EXIT
241+ printf '%s\n' "$PRE_RUN_HOOK" > "$pre_hook_file"
242+ chmod +x "$pre_hook_file"
243+ bash "$pre_hook_file"
244+ rm -f "$pre_hook_file"
245+ trap - EXIT
246+ fi
247+
246248 set +e
247249 ${{ steps.detect-pm.outputs.runner }}react-native-harness --harnessRunner ${{ inputs.runner }} ${{ inputs.harnessArgs }}
248250 harness_exit_code=$?
251+ set -e
252+
253+ export HARNESS_EXIT_CODE="$harness_exit_code"
254+ after_run_exit_code=0
255+ if [ -n "$AFTER_RUN_HOOK" ]; then
256+ after_hook_file="$(mktemp "${RUNNER_TEMP:-/tmp}/harness-after-run.XXXXXX.sh")"
257+ trap 'rm -f "$after_hook_file"' EXIT
258+ printf '%s\n' "$AFTER_RUN_HOOK" > "$after_hook_file"
259+ chmod +x "$after_hook_file"
260+ set +e
261+ bash "$after_hook_file"
262+ after_run_exit_code=$?
263+ set -e
264+ rm -f "$after_hook_file"
265+ trap - EXIT
266+ fi
267+
249268 echo "harness_exit_code=$harness_exit_code" >> "$GITHUB_OUTPUT"
250- exit "$harness_exit_code"
269+
270+ if [ "$harness_exit_code" -ne 0 ]; then
271+ exit "$harness_exit_code"
272+ fi
273+
274+ if [ "$after_run_exit_code" -ne 0 ]; then
275+ exit "$after_run_exit_code"
276+ fi
251277 - name : Run E2E tests
252278 id : run-tests-android
253279 if : fromJson(steps.load-config.outputs.config).platformId == 'android'
@@ -265,13 +291,14 @@ runs:
265291 disable-animations : true
266292 emulator-options : -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
267293 script : |
294+ export HARNESS_PROJECT_ROOT="$PWD"
295+
268296 adb install -r ${{ inputs.app }}
269297
270298 if [ -n "$PRE_RUN_HOOK" ]; then
271299 pre_hook_file="$(mktemp "${RUNNER_TEMP:-/tmp}/harness-pre-run.XXXXXX.sh")"
272300 printf '%s\n' "$PRE_RUN_HOOK" > "$pre_hook_file"
273301 chmod +x "$pre_hook_file"
274- export HARNESS_PROJECT_ROOT="$PWD"
275302 bash "$pre_hook_file"
276303 rm -f "$pre_hook_file"
277304 fi
@@ -302,21 +329,6 @@ runs:
302329 if [ "$after_run_exit_code" -ne 0 ]; then
303330 exit "$after_run_exit_code"
304331 fi
305- - name : Run after-run hook
306- if : always() && fromJson(steps.load-config.outputs.config).platformId != 'android' && inputs.afterRunHook != '' && steps.run-tests.outcome != 'skipped'
307- shell : bash
308- working-directory : ${{ steps.load-config.outputs.projectRoot }}
309- env :
310- HOOK_CONTENT : ${{ inputs.afterRunHook }}
311- HARNESS_RUNNER : ${{ inputs.runner }}
312- HARNESS_EXIT_CODE : ${{ steps.run-tests.outputs.harness_exit_code }}
313- run : |
314- export HARNESS_PROJECT_ROOT="$PWD"
315- hook_file="$(mktemp "${RUNNER_TEMP:-/tmp}/harness-after-run.XXXXXX.sh")"
316- trap 'rm -f "$hook_file"' EXIT
317- printf '%s\n' "$HOOK_CONTENT" > "$hook_file"
318- chmod +x "$hook_file"
319- bash "$hook_file"
320332 - name : Upload visual test artifacts
321333 if : always() && inputs.uploadVisualTestArtifacts == 'true'
322334 uses : actions/upload-artifact@v4
0 commit comments