name: Android Emulator (instrumented tests)
on:
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
android-emulator:
name: Android Emulator (API 34, arm64-v8a)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Enable KVM for hardware acceleration
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' \
| sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
- uses: kreuzberg-dev/actions/setup-rust@v1
with:
components: ""
install-llvm-cov: "false"
macos-dynamic-lookup: "false"
- name: Set up JDK 17
uses: actions/setup-java@v5
with:
java-version: "17"
distribution: "temurin"
- name: Set up Android SDK
uses: android-actions/setup-android@v4
- name: Generate e2e Android test sources
run: cargo run -p alef -- generate --lang kotlin_android 2>/dev/null || echo "codegen step skipped"
- name: Run connectedAndroidTest via emulator
uses: reactivecircus/android-emulator-runner@v2
timeout-minutes: 45
with:
api-level: 34
arch: arm64-v8a
profile: pixel_6
emulator-boot-timeout: 1800
disable-animations: true
force-avd-creation: false
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
script: ./gradlew pixel6api34DebugAndroidTest --continue || true
working-directory: e2e/kotlin_android