From 2728c311d809de3aaea03b09c984a93bbd476489 Mon Sep 17 00:00:00 2001 From: "Alinson S. Xavier" Date: Sun, 25 Apr 2021 19:22:32 -0500 Subject: [PATCH] Large tests: Make compatible with API 27 --- .github/workflows/main.yml | 3 ++- build.sh | 2 +- .../java/org/isoron/uhabits/BaseUserInterfaceTest.kt | 3 ++- .../java/org/isoron/uhabits/acceptance/steps/BackupSteps.kt | 5 ++++- .../java/org/isoron/uhabits/acceptance/steps/CommonSteps.kt | 2 ++ .../src/main/java/org/isoron/uhabits/utils/ViewExtensions.kt | 2 +- 6 files changed, 12 insertions(+), 5 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index bf998892b..0004f8520 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -30,6 +30,7 @@ jobs: AndroidTest: needs: Build runs-on: macOS-10.15 + timeout-minutes: 45 strategy: matrix: api: [ @@ -37,7 +38,7 @@ jobs: # 24, # Failing tests # 25, # Failing tests # 26, # Failing tests - # 27, # Failing tests + 27, 28, # 29, # Crashes constantly, see: https://issuetracker.google.com/issues/159732638 # 30, # Not available yet diff --git a/build.sh b/build.sh index b67baba52..36a370889 100755 --- a/build.sh +++ b/build.sh @@ -127,7 +127,7 @@ _run_instrumented_tests() { -r -e coverage true -e size $size \ -w ${PACKAGE_NAME}.test/androidx.test.runner.AndroidJUnitRunner \ | tee ${ANDROID_OUTPUTS_DIR}/instrument.txt - if grep "\(INSTRUMENTATION_STATUS_CODE.*-1\|FAILURES\|ABORTED\|onError\|Error type\)" $ANDROID_OUTPUTS_DIR/instrument.txt; then + if grep "\(INSTRUMENTATION_STATUS_CODE.*-1\|FAILURES\|ABORTED\|onError\|Error type\|crashed\)" $ANDROID_OUTPUTS_DIR/instrument.txt; then log_error "Some $size instrumented tests failed." log_error "Saving logcat: ${ANDROID_OUTPUTS_DIR}/logcat.txt..." $ADB logcat -d > ${ANDROID_OUTPUTS_DIR}/logcat.txt diff --git a/uhabits-android/src/androidTest/java/org/isoron/uhabits/BaseUserInterfaceTest.kt b/uhabits-android/src/androidTest/java/org/isoron/uhabits/BaseUserInterfaceTest.kt index 7d7cd11fd..657eaf086 100644 --- a/uhabits-android/src/androidTest/java/org/isoron/uhabits/BaseUserInterfaceTest.kt +++ b/uhabits-android/src/androidTest/java/org/isoron/uhabits/BaseUserInterfaceTest.kt @@ -56,7 +56,8 @@ open class BaseUserInterfaceTest { @After @Throws(Exception::class) fun tearDown() { - for (i in 0..9) device.pressBack() + device.pressBack() + device.pressBack() } @Throws(Exception::class) diff --git a/uhabits-android/src/androidTest/java/org/isoron/uhabits/acceptance/steps/BackupSteps.kt b/uhabits-android/src/androidTest/java/org/isoron/uhabits/acceptance/steps/BackupSteps.kt index 75e3c565e..77b253407 100644 --- a/uhabits-android/src/androidTest/java/org/isoron/uhabits/acceptance/steps/BackupSteps.kt +++ b/uhabits-android/src/androidTest/java/org/isoron/uhabits/acceptance/steps/BackupSteps.kt @@ -19,9 +19,11 @@ package org.isoron.uhabits.acceptance.steps +import android.os.Build.VERSION.SDK_INT import androidx.test.uiautomator.UiSelector import org.isoron.uhabits.BaseUserInterfaceTest.Companion.device import org.isoron.uhabits.acceptance.steps.CommonSteps.clickText +import org.isoron.uhabits.acceptance.steps.CommonSteps.pressBack import org.isoron.uhabits.acceptance.steps.ListHabitsSteps.MenuItem.SETTINGS import org.isoron.uhabits.acceptance.steps.ListHabitsSteps.clickMenu @@ -31,7 +33,8 @@ const val DOWNLOAD_FOLDER = "/sdcard/Download/" fun exportFullBackup() { clickMenu(SETTINGS) clickText("Export full backup") - device.pressBack() + if (SDK_INT < 28) return + pressBack() } fun clearDownloadFolder() { diff --git a/uhabits-android/src/androidTest/java/org/isoron/uhabits/acceptance/steps/CommonSteps.kt b/uhabits-android/src/androidTest/java/org/isoron/uhabits/acceptance/steps/CommonSteps.kt index 0d2326337..9e8cbd276 100644 --- a/uhabits-android/src/androidTest/java/org/isoron/uhabits/acceptance/steps/CommonSteps.kt +++ b/uhabits-android/src/androidTest/java/org/isoron/uhabits/acceptance/steps/CommonSteps.kt @@ -120,10 +120,12 @@ object CommonSteps : BaseUserInterfaceTest() { private fun verifyDisplaysView(className: String) { Espresso.onView(ViewMatchers.withClassName(CoreMatchers.endsWith(className))) .check(ViewAssertions.matches(ViewMatchers.isEnabled())) + device.waitForIdle() } fun verifyDoesNotDisplayText(text: String?) { Espresso.onView(ViewMatchers.withText(text)).check(ViewAssertions.doesNotExist()) + device.waitForIdle() } @Throws(Exception::class) diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/utils/ViewExtensions.kt b/uhabits-android/src/main/java/org/isoron/uhabits/utils/ViewExtensions.kt index cc3ee4f5e..936e58573 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/utils/ViewExtensions.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/utils/ViewExtensions.kt @@ -110,7 +110,7 @@ fun Activity.showMessage(msg: String) { fun Activity.showSendFileScreen(archiveFilename: String) { val file = File(archiveFilename) val fileUri = FileProvider.getUriForFile(this, "org.isoron.uhabits", file) - this.startActivity( + this.startActivitySafely( Intent().apply { action = Intent.ACTION_SEND type = "application/zip"