FWK testing - Android #26
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Android Instrumentation Tests | ||
| on: [push, pull_request] | ||
| jobs: | ||
| instrumented-tests: | ||
| runs-on: ubuntu-latest | ||
| timeout-minutes: 20 | ||
| steps: | ||
| - name: Checkout source | ||
| uses: actions/checkout@v3 | ||
| - name: Set up JDK 17 | ||
| uses: actions/setup-java@v3 | ||
| with: | ||
| distribution: 'temurin' | ||
| java-version: 17 | ||
| cache: gradle | ||
| - name: Set up Android SDK | ||
| uses: android-actions/setup-android@v3 | ||
| # Manually install latest cmdline-tools to fix SDK Manager XML issue | ||
| - name: Install Latest cmdline-tools | ||
| run: | | ||
| sudo mkdir -p $ANDROID_SDK_ROOT/cmdline-tools/latest | ||
| sudo curl -fsSL https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip -o cmdline-tools.zip | ||
| sudo unzip cmdline-tools.zip -d $ANDROID_SDK_ROOT/cmdline-tools/latest/ | ||
| sudo rm cmdline-tools.zip | ||
| echo "export PATH=$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$PATH" >> $GITHUB_ENV | ||
| # Accept SDK licenses (fixes "sdkmanager: command not found" issue) | ||
| - name: Accept Android SDK Licenses | ||
| run: yes | sdkmanager --licenses | ||
| # Enable KVM for faster emulation | ||
| - 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 | ||
| - name: Generate Gradle Wrapper (if missing) | ||
| run: gradle wrapper | ||
| working-directory: Android # Ensure working in correct directory | ||
| - name: Grant execute permission for Gradle wrapper | ||
| run: chmod +x Android/gradlew | ||
| # Launch emulator and run tests | ||
| - name: Run Android Instrumented Tests | ||
| uses: ReactiveCircus/android-emulator-runner@v2 | ||
| with: | ||
| api-level: 30 | ||
| target: google_apis | ||
| arch: x86_64 | ||
| profile: Nexus 6 | ||
| disable-animations: true | ||
| emulator-options: > | ||
| -no-window -gpu swiftshader_indirect -no-snapshot -noaudio -no-boot-anim | ||
| -camera-back none -camera-front none | ||
| script: | | ||
| echo "Waiting for emulator to be online..." | ||
| adb wait-for-device | ||
| adb shell "while [[ -z \$(getprop sys.boot_completed) ]]; do sleep 1; done" | ||
| echo "Device is ready, running tests..." | ||
| ./gradlew connectedCheck --stacktrace | ||
| working-directory: Android | ||
| # Upload test reports for debugging | ||
| - name: Upload Test Reports | ||
| if: always() | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: test-reports | ||
| path: Android/app/build/reports/ | ||