ci(e2e): retry the API-29 emulator boot to absorb the android-emulator-runner keyevent race
The matrix E2E (29) job intermittently fails (~2%, API-29 only) in reactivecircus/android-emulator-runner's un-guarded, fatal post-boot `adb shell input keyevent 82`: on snapshot resume sys.boot_completed=1 is restored before system_server republishes the `input` binder service, so the job aborts before Gradle runs with "No service published for: input" (fast-fail ~1m43s). Proven on run 28667366203. Make the "Run E2E tests" step non-fatal (id + continue-on-error) and add a guarded second attempt (if steps.e2e.outcome == 'failure'). Two independent boots drop the race to ~0.04%; a genuine failure on both attempts still fails the job (outcome, not conclusion). Definitive manual-boot fix: #218. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -190,7 +190,27 @@ jobs:
|
||||
disable-animations: false
|
||||
script: echo "Generated AVD snapshot for caching."
|
||||
|
||||
# reactivecircus/android-emulator-runner runs an un-guarded, fatal `adb shell input keyevent 82`
|
||||
# after boot. On snapshot resume that can race system_server (sys.boot_completed=1 before the
|
||||
# `input` binder service is republished), aborting the job before Gradle runs with
|
||||
# "No service published for: input" — an ~2%, API-29-only infra flake, not a test failure. Make
|
||||
# the step non-fatal and retry once: two independent boots drop the race to ~0.04%. The definitive
|
||||
# fix (adopt the e2e-preview job's manual-boot + `keyevent 82 || true`) is tracked separately.
|
||||
- name: Run E2E tests
|
||||
id: e2e
|
||||
continue-on-error: true
|
||||
uses: reactivecircus/android-emulator-runner@e89f39f1abbbd05b1113a29cf4db69e7540cae5a # v2.37.0
|
||||
with:
|
||||
api-level: ${{ matrix.api-level }}
|
||||
target: google_apis
|
||||
arch: x86_64
|
||||
force-avd-creation: false
|
||||
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
|
||||
disable-animations: true
|
||||
script: ./gradlew connectedDebugAndroidTest --stacktrace
|
||||
|
||||
- name: Run E2E tests (retry after emulator boot race)
|
||||
if: steps.e2e.outcome == 'failure'
|
||||
uses: reactivecircus/android-emulator-runner@e89f39f1abbbd05b1113a29cf4db69e7540cae5a # v2.37.0
|
||||
with:
|
||||
api-level: ${{ matrix.api-level }}
|
||||
|
||||
Reference in New Issue
Block a user