From 33ff95ccbc2a4166691fc053dd22686dfb83e43a Mon Sep 17 00:00:00 2001 From: Simon Binder Date: Mon, 22 Sep 2025 12:09:51 +0200 Subject: [PATCH 1/4] Run emulator tests in CI --- .github/workflows/test.yml | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9c5cde47..f2f13691 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -74,3 +74,38 @@ jobs: path: | **/build/reports/ **/build/test-results/ + + android_emulator: + runs-on: ubuntu-latest + steps: + - name: checkout + uses: actions/checkout@v4 + + - name: Validate Gradle Wrapper + uses: gradle/actions/wrapper-validation@v4 + - uses: actions/cache@v4 + with: + path: ~/.konan + key: ${{ runner.os }}-${{ hashFiles('**/.lock') }} + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + - name: Set up Gradle + uses: gradle/actions/setup-gradle@v4 + with: + cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }} + + # https://github.com/ReactiveCircus/android-emulator-runner?tab=readme-ov-file#usage--examples + - name: Enable KVM + 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 + + - name: run tests + uses: reactivecircus/android-emulator-runner@v2 + with: + api-level: 36 + script: ./gradlew core-tests-android:connectedCheck From 39ebbfa753e6be4080066b5c2ef0ab7265a93a43 Mon Sep 17 00:00:00 2001 From: Simon Binder Date: Mon, 22 Sep 2025 12:22:51 +0200 Subject: [PATCH 2/4] Downgrade emulator level I guess? --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f2f13691..86d90901 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -107,5 +107,5 @@ jobs: - name: run tests uses: reactivecircus/android-emulator-runner@v2 with: - api-level: 36 + api-level: 35 script: ./gradlew core-tests-android:connectedCheck From 82c432f25fff7b920b53da04f13082919c261bd8 Mon Sep 17 00:00:00 2001 From: Simon Binder Date: Mon, 22 Sep 2025 12:44:27 +0200 Subject: [PATCH 3/4] Copy setup from JS tests --- .github/workflows/test.yml | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 86d90901..8119027b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -77,6 +77,9 @@ jobs: android_emulator: runs-on: ubuntu-latest + timeout-minutes: 30 + env: + AVD_NAME: ubuntu-avd-x86_64-31 steps: - name: checkout uses: actions/checkout@v4 @@ -96,6 +99,14 @@ jobs: uses: gradle/actions/setup-gradle@v4 with: cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }} + - name: AVD Cache + uses: actions/cache@v4 + id: avd-cache + with: + path: | + ~/.android/avd/* + ~/.android/adb* + key: avd-31 # https://github.com/ReactiveCircus/android-emulator-runner?tab=readme-ov-file#usage--examples - name: Enable KVM @@ -107,5 +118,16 @@ jobs: - name: run tests uses: reactivecircus/android-emulator-runner@v2 with: - api-level: 35 - script: ./gradlew core-tests-android:connectedCheck + api-level: 31 + force-avd-creation: false + target: google_apis + arch: x86_64 + disable-animations: false + avd-name: $AVD_NAME + emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none + script: echo "Generated AVD snapshot for caching." + + - name: Build and run tests with Gradle + run: | + ./gradlew --scan core-tests-android:connectedCheck + shell: bash From 0d18835a418f1555d5aec8945f6530ed29e7766e Mon Sep 17 00:00:00 2001 From: Simon Binder Date: Mon, 22 Sep 2025 16:21:24 +0200 Subject: [PATCH 4/4] Use script again? --- .github/workflows/test.yml | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8119027b..4b6bf5f3 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -115,7 +115,7 @@ jobs: sudo udevadm control --reload-rules sudo udevadm trigger --name-match=kvm - - name: run tests + - name: emulator tests uses: reactivecircus/android-emulator-runner@v2 with: api-level: 31 @@ -125,9 +125,4 @@ jobs: disable-animations: false avd-name: $AVD_NAME emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none - script: echo "Generated AVD snapshot for caching." - - - name: Build and run tests with Gradle - run: | - ./gradlew --scan core-tests-android:connectedCheck - shell: bash + script: ./gradlew --scan core-tests-android:connectedCheck