Skip to content

Instrumented tests on device #2474

Instrumented tests on device

Instrumented tests on device #2474

Workflow file for this run

name: Instrumented tests on device
on:
schedule:
# Run this twice per day, at 6:13 and 16:13
- cron: '13 6,16 * * *'
# Also run this workflow whenever we update this file
push:
paths:
- '.github/workflows/device-tests.yml'
jobs:
android-test:
runs-on: macos-latest
if: github.repository == 'google/accompanist'
timeout-minutes: 80
strategy:
# Allow tests to continue on other devices if they fail on one device.
fail-fast: false
matrix:
api-level: [ 22, 26, 28, 29 ]
shard: [ 0, 1, 2 ] # Need to update shard-count below if this changes
steps:
- uses: actions/checkout@v2
- name: Copy CI gradle.properties
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
- name: set up JDK
uses: actions/setup-java@v1
with:
java-version: 17
- name: Decrypt secrets
run: release/signing-setup.sh ${{ secrets.ENCRYPT_KEY }}
- name: Generate cache key
run: ./checksum.sh checksum.txt
- uses: actions/cache@v2
with:
path: |
~/.gradle/caches/modules-*
~/.gradle/caches/jars-*
~/.gradle/caches/build-cache-*
key: gradle-${{ hashFiles('checksum.txt') }}
# Determine what emulator image to use. We run all API 29+ emulators using
# the google_apis image
- name: Determine emulator target
id: determine-target
env:
API_LEVEL: ${{ matrix.api-level }}
run: |
TARGET="default"
if [ "$API_LEVEL" -ge "29" ]; then
TARGET="google_apis"
fi
echo "TARGET=$TARGET" >> $GITHUB_OUTPUT
- name: Run device tests
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: ${{ matrix.api-level }}
target: ${{ steps.determine-target.outputs.TARGET }}
profile: Galaxy Nexus
emulator-build: 7425822 # https://github.com/ReactiveCircus/android-emulator-runner/issues/160
# We run all tests, sharding them over 3 shards
script: ./scripts/run-tests.sh --log-file=logcat.txt --shard-index=${{ matrix.shard }} --shard-count=3
- name: Clean secrets
if: always()
run: release/signing-cleanup.sh
- name: Upload logs
if: always()
uses: actions/upload-artifact@v2
with:
name: logs-${{ matrix.api-level }}-${{ steps.determine-target.outputs.TARGET }}-${{ matrix.shard }}
path: logcat.txt
- name: Upload test results
if: always()
uses: actions/upload-artifact@v2
with:
name: test-results-${{ matrix.api-level }}-${{ steps.determine-target.outputs.TARGET }}-${{ matrix.shard }}
path: |
**/build/reports/*
**/build/outputs/*/connected/*