Skip to content

Add coverage report

Add coverage report #1

Workflow file for this run

name: Android Instrumented Tests
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch: # Allow manual triggering
jobs:
instrumented-tests:
runs-on: macos-latest # macOS runner for hardware acceleration
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: "17"
distribution: "temurin"
cache: gradle
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Run unit tests
run: ./gradlew :android:testDebugUnitTest
- name: Setup Android SDK
uses: android-actions/setup-android@v2
- name: AVD cache
uses: actions/cache@v3
id: avd-cache
with:
path: |
~/.android/avd/*
~/.android/adb*
key: avd-${{ runner.os }}-${{ hashFiles('**/*.gradle*') }}
- name: Create AVD and generate snapshot for caching
if: steps.avd-cache.outputs.cache-hit != 'true'
uses: ReactiveCircus/android-emulator-runner@v2
with:
api-level: 29
force-avd-creation: false
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
disable-animations: false
script: echo "Created AVD snapshot"
- name: Run instrumented tests with coverage
uses: ReactiveCircus/android-emulator-runner@v2
with:
api-level: 29
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 :android:connectedDebugAndroidTest
# Find coverage data (EC files)
COVERAGE_DATA=$(find android/build -name "*.ec" | head -n 1)
if [ -n "$COVERAGE_DATA" ]; then
echo "Found coverage data: $COVERAGE_DATA"
# Download JaCoCo CLI
mkdir -p tools
curl -L "https://repo1.maven.org/maven2/org/jacoco/org.jacoco.cli/0.8.10/org.jacoco.cli-0.8.10-nodeps.jar" -o tools/jacoco-cli.jar
# Create report directory
mkdir -p android/build/reports/jacoco-android/html
# Generate HTML report
java -jar tools/jacoco-cli.jar report "$COVERAGE_DATA" \
--classfiles android/build/tmp/kotlin-classes/debug \
--sourcefiles android/src/main/java \
--html android/build/reports/jacoco-android/html \
--xml android/build/reports/jacoco-android/report.xml
fi
- name: Upload coverage report
uses: actions/upload-artifact@v3
with:
name: jacoco-report
path: android/build/reports/jacoco-android
retention-days: 7