From dee217703e88320af855b76fb1181901bac6a2af Mon Sep 17 00:00:00 2001 From: Steve Soltys Date: Wed, 11 Oct 2023 01:59:37 -0400 Subject: [PATCH] Don't cache AVD for e2e tests --- .github/scripts/run_tests.sh | 32 ++--------- .github/workflows/build.yml | 4 ++ .github/workflows/test.yml | 56 +++++++------------ .../seedvault/e2e/screen/UiDeviceScreen.kt | 2 +- 4 files changed, 29 insertions(+), 65 deletions(-) diff --git a/.github/scripts/run_tests.sh b/.github/scripts/run_tests.sh index b74705450..998f1d72d 100755 --- a/.github/scripts/run_tests.sh +++ b/.github/scripts/run_tests.sh @@ -1,33 +1,11 @@ -adb root -sleep 5 -adb remount - -echo "Installing Seedvault app..." -adb shell mkdir -p /system/priv-app/Seedvault -adb push app/build/outputs/apk/release/app-release.apk /system/priv-app/Seedvault/Seedvault.apk - -echo "Installing Seedvault permissions..." -adb push permissions_com.stevesoltys.seedvault.xml /system/etc/permissions/privapp-permissions-seedvault.xml -adb push allowlist_com.stevesoltys.seedvault.xml /system/etc/sysconfig/allowlist-seedvault.xml - -echo "Setting Seedvault transport..." -sleep 10 -adb shell bmgr transport com.stevesoltys.seedvault.transport.ConfigurableBackupTransport - -wget --quiet https://github.com/seedvault-app/seedvault-test-data/releases/download/1/backup.tar.gz -adb shell mkdir -p /sdcard/seedvault_baseline -adb push backup.tar.gz /sdcard/seedvault_baseline -adb wait-for-device -adb shell tar -xzf /sdcard/seedvault_baseline/backup.tar.gz --directory=/sdcard/seedvault_baseline -adb shell rm /sdcard/seedvault_baseline/backup.tar.gz - large_test_exit_code=0 ./gradlew --stacktrace -Pinstrumented_test_size=large :app:connectedAndroidTest || large_test_exit_code=$? +adb pull /sdcard/seedvault_test_results + +[ -n "$large_test_exit_code" ] && [ "$large_test_exit_code" -ne 0 ] && { echo 'Large tests failed.'; exit 1; } + medium_test_exit_code=0 ./gradlew --stacktrace -Pinstrumented_test_size=medium :app:connectedAndroidTest || medium_test_exit_code=$? -adb pull /sdcard/seedvault_test_results - -[ -n "$large_test_exit_code" ] && [ "$large_test_exit_code" -ne 0 ] && { echo 'Large test failed.'; exit 1; } -[ -n "$medium_test_exit_code" ] && [ "$medium_test_exit_code" -ne 0 ] && { echo 'Medium test failed.'; exit 1; } +[ -n "$medium_test_exit_code" ] && [ "$medium_test_exit_code" -ne 0 ] && { echo 'Medium tests failed.'; exit 1; } diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 82ca5c423..52dd750b7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,6 +1,10 @@ name: Build on: [push, pull_request] +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + jobs: build: name: Build diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 700f45eb8..0c4dc3ca3 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -13,6 +13,8 @@ concurrency: jobs: instrumentation_tests: runs-on: macos-11 + if: github.repository == 'seedvault-app/seedvault' + timeout-minutes: 80 strategy: fail-fast: false matrix: @@ -35,51 +37,31 @@ jobs: java-version: '17' cache: 'gradle' - - name: AVD cache - uses: actions/cache@v3 - id: avd-cache - with: - path: | - ~/.android/avd/* - ~/.android/adb* - key: avd-${{ matrix.emulator_type }}-${{ matrix.android_target }} - - name: Build Release APK run: ./gradlew :app:assembleRelease - - name: Create AVD snapshot - if: steps.avd-cache.outputs.cache-hit != 'true' - uses: reactivecircus/android-emulator-runner@v2 - with: - api-level: ${{ matrix.android_target }} - target: ${{ matrix.emulator_type }} - arch: x86_64 - force-avd-creation: false - emulator-options: -writable-system -no-snapshot-load -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none - disable-animations: true - script: | - ./app/development/scripts/provision_emulator.sh "test" "system-images;android-${{ matrix.android_target }};${{ matrix.emulator_type }};x86_64" - echo "Generated AVD snapshot for caching." - - name: Assemble tests run: ./gradlew :app:assembleAndroidTest - name: Run tests - uses: reactivecircus/android-emulator-runner@v2 + uses: Wandalen/wretry.action@v1.3.0 with: - api-level: ${{ matrix.android_target }} - target: ${{ matrix.emulator_type }} - arch: x86_64 - force-avd-creation: false - emulator-options: -writable-system -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none - profile: pixel_6a - heap-size: '512M' - ram-size: '4096M' - disk-size: '14G' - sdcard-path-or-size: '4096M' - cores: 3 - disable-animations: false - script: ./.github/scripts/run_tests.sh + attempt_limit: 1 + action: reactivecircus/android-emulator-runner@v2 + with: | + api-level: ${{ matrix.android_target }} + target: ${{ matrix.emulator_type }} + arch: x86_64 + force-avd-creation: true + emulator-options: -cores 3 -writable-system -no-snapshot-load -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none + heap-size: '512M' + ram-size: '4096M' + disk-size: '14G' + sdcard-path-or-size: '4096M' + disable-animations: false + script: | + ./app/development/scripts/provision_emulator.sh "test" "system-images;android-${{ matrix.android_target }};${{ matrix.emulator_type }};x86_64" + ./.github/scripts/run_tests.sh - name: Upload test results if: always() diff --git a/app/src/androidTest/java/com/stevesoltys/seedvault/e2e/screen/UiDeviceScreen.kt b/app/src/androidTest/java/com/stevesoltys/seedvault/e2e/screen/UiDeviceScreen.kt index fdcdd67b9..b3c73c2d8 100644 --- a/app/src/androidTest/java/com/stevesoltys/seedvault/e2e/screen/UiDeviceScreen.kt +++ b/app/src/androidTest/java/com/stevesoltys/seedvault/e2e/screen/UiDeviceScreen.kt @@ -32,6 +32,6 @@ abstract class UiDeviceScreen { private fun device() = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) .also { - Configurator.getInstance().waitForSelectorTimeout = 60000 + Configurator.getInstance().waitForSelectorTimeout = 180000 } }