Repository navigation
ci: run the Android mobile web e2e tests on an emulator - #1306
Conversation
|
… vars ANDROID_AVD and ANDROID_PLATFORM_VERSION replace the fixed AVD names (Pixel_8_Pro_Android_15_API_35, Pixel_7_Pro_Android_14_API_34), which exist only on one machine. The defaults do not change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A new workflow starts an Android 15 emulator (google_apis, x86_64, KVM) in the GitHub runner with reactivecircus/android-emulator-runner, starts Appium 3 with the UiAutomator2 driver, and runs the mobile web suite twice: the first run saves the baselines, the second compares. It runs for pull requests that change the core, the service, the mobile web spec or its configs, and by hand. The LambdaTest Android jobs stay. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rkflow The cmdline-tools of the runner image do not know pixel_8_pro. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
a639eae to
03c106b
Compare
|
…endency changes - In CI only the setup run (BASELINE_SETUP=true) saves baselines with the local Appium configs, so the compare run fails on a missing baseline. - The workflow also runs when the root or package manifests, the lockfile, the workspace file or the pnpm patches change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e job log The job hung for 20+ minutes after the tests passed: when the action stops the emulator, it waits for the crashpad_handler processes that the emulator leaves running (ReactiveCircus/android-emulator-runner#385). The script now stops Appium and kills those processes when it ends. The Appium output (6000 lines) goes to logs/appium.log instead of the job log. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
In the first minutes after the boot the CI emulator is busy, and a native screenshot can still show the frame before a scroll, so the full page baseline of the setup run was stitched wrong (the scroll positions were exact). In an experiment with 6 CI jobs, 2 of 3 failed without a warm-up and 0 of 3 with one. The warm-up runs the full page test once and does not keep its files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Linux cuts process names to 15 characters ("crashpad_handle"), so
`pgrep -x crashpad_handler` never matched and the cleanup did not kill
those processes. Use -f with the path of the executable.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
What
android emulator: an Android 15 emulator (API 35,google_apis, x86_64, KVM) in the GitHub runner, withreactivecircus/android-emulator-runnerv2.38.0, Appium 3.8.0 and UiAutomator2 8.7.0. It runspnpm test.local.emus.web3 times: a warm-up (the full page test only; its result and files are not kept), a setup run that saves the baselines, and a compare run that compares with them (a missing baseline fails). If the setup run fails, the job stops and the compare run does not happen. The image isgoogle_apis: with a Play Store image, Chrome can update itself during the run; without a Play Store account, Chrome stays the same.ANDROID_AVD/ANDROID_PLATFORM_VERSION(the defaults do not change).AGENTS.mdand the verify skill describe the new workflow and the env vars.Test
🤖 Generated with Claude Code