diff --git a/.idea/androidTestResultsUserPreferences.xml b/.idea/androidTestResultsUserPreferences.xml index b7119ac08..1c3cb7253 100644 --- a/.idea/androidTestResultsUserPreferences.xml +++ b/.idea/androidTestResultsUserPreferences.xml @@ -97,6 +97,19 @@ + + + + + + + @@ -111,6 +124,19 @@ + + + + + + + diff --git a/app/src/androidTest/java/com/itsaky/androidide/activities/OnboardingActivityBehaviorTest.kt b/app/src/androidTest/java/com/itsaky/androidide/activities/OnboardingActivityBehaviorTest.kt index 5078111ea..068111095 100644 --- a/app/src/androidTest/java/com/itsaky/androidide/activities/OnboardingActivityBehaviorTest.kt +++ b/app/src/androidTest/java/com/itsaky/androidide/activities/OnboardingActivityBehaviorTest.kt @@ -45,6 +45,7 @@ import com.itsaky.androidide.testing.android.hasObjectWithText import com.itsaky.androidide.testing.android.launchAndroidIDE import com.itsaky.androidide.testing.android.stringRes import com.itsaky.androidide.testing.android.uiAutomation +import com.itsaky.androidide.utils.isAtLeastR import com.itsaky.androidide.utils.isAtLeastT import org.junit.FixMethodOrder import org.junit.Rule @@ -200,7 +201,11 @@ class OnboardingActivityBehaviorTest { grantButton.clickAndWaitForNewWindow() // check permission denied behavior - device.handleAndroidRPermissions(false) + if (permissionDesc == R.string.permission_desc_install_packages || isAtLeastR()) { + device.handlePermissionInSettings(false) + } else { + device.getObjectWithText("DENY").clickAndWaitForWindowUpdate(device) + } // verify AndroidIDE is visible assertThat(device.currentPackageName).isEqualTo(BuildInfo.PACKAGE_NAME) @@ -218,7 +223,11 @@ class OnboardingActivityBehaviorTest { grantButton.clickAndWaitForNewWindow() // check permission granted behavior - device.handleAndroidRPermissions(true) + if (permissionDesc == R.string.permission_desc_install_packages || isAtLeastR()) { + device.handlePermissionInSettings(true) + } else { + device.getObjectWithText("ALLOW").clickAndWaitForWindowUpdate(device) + } grantButton = device.getObjectWithText(permissionDesc) .parent!! diff --git a/app/src/androidTest/java/com/itsaky/androidide/activities/OnboardingActivityStatesTest.kt b/app/src/androidTest/java/com/itsaky/androidide/activities/OnboardingActivityStatesTest.kt index 52adbe881..5b35fdaa7 100644 --- a/app/src/androidTest/java/com/itsaky/androidide/activities/OnboardingActivityStatesTest.kt +++ b/app/src/androidTest/java/com/itsaky/androidide/activities/OnboardingActivityStatesTest.kt @@ -18,14 +18,12 @@ package com.itsaky.androidide.activities import androidx.test.ext.junit.runners.AndroidJUnit4 -import androidx.test.filters.FlakyTest import androidx.test.platform.app.InstrumentationRegistry import androidx.test.uiautomator.UiDevice import com.adevinta.android.barista.assertion.BaristaCheckedAssertions.assertChecked import com.adevinta.android.barista.assertion.BaristaCheckedAssertions.assertUnchecked import com.adevinta.android.barista.assertion.BaristaEnabledAssertions.assertDisabled import com.adevinta.android.barista.assertion.BaristaEnabledAssertions.assertEnabled -import com.adevinta.android.barista.assertion.BaristaRecyclerViewAssertions.assertRecyclerViewItemCount import com.adevinta.android.barista.assertion.BaristaVisibilityAssertions.assertDisplayed import com.adevinta.android.barista.assertion.BaristaVisibilityAssertions.assertNotDisplayed import com.adevinta.android.barista.interaction.BaristaClickInteractions.clickBack @@ -34,7 +32,6 @@ import com.adevinta.android.barista.rule.BaristaRule import com.google.common.truth.Truth.assertThat import com.itsaky.androidide.R import com.itsaky.androidide.preferences.internal.statOptIn -import com.itsaky.androidide.testing.android.launchAndroidIDE import com.itsaky.androidide.testing.android.stringRes import org.junit.FixMethodOrder import org.junit.Rule diff --git a/app/src/androidTest/java/com/itsaky/androidide/activities/onboardingUtils.kt b/app/src/androidTest/java/com/itsaky/androidide/activities/onboardingUtils.kt index a13ea58fa..06c02c19e 100644 --- a/app/src/androidTest/java/com/itsaky/androidide/activities/onboardingUtils.kt +++ b/app/src/androidTest/java/com/itsaky/androidide/activities/onboardingUtils.kt @@ -22,13 +22,13 @@ import android.widget.Switch import androidx.test.uiautomator.By import androidx.test.uiautomator.UiDevice import androidx.test.uiautomator.UiObject2 -import androidx.test.uiautomator.UiSelector import com.google.common.truth.Truth.assertThat import com.itsaky.androidide.R import com.itsaky.androidide.testing.android.clickAndWaitForNewWindow import com.itsaky.androidide.testing.android.clickAndWaitForWindowUpdate import com.itsaky.androidide.testing.android.getObjectWithText import com.itsaky.androidide.testing.android.hasObjectWithText +import com.itsaky.androidide.utils.isAtLeastR /** * @author Akash Yadav @@ -52,8 +52,12 @@ fun UiDevice.grantAndroidIDEPermissions() { .findObject(By.clazz(Button::class.java)) if (grantButton.text != null) { - grantButton.clickAndWaitForNewWindow() - handleAndroidRPermissions(allowPermission = true) + if (desc == R.string.permission_desc_install_packages || isAtLeastR()) { + grantButton.clickAndWaitForNewWindow() + handlePermissionInSettings(allowPermission = true) + } else { + getObjectWithText("ALLOW").clickAndWaitForWindowUpdate(this) + } } } @@ -65,26 +69,26 @@ fun UiDevice.nextButton(): UiObject2 { return findObject(By.desc("NEXT"))!! } -fun UiDevice.handleAndroidRPermissions( +fun UiDevice.handlePermissionInSettings( allowPermission: Boolean = true, ) { assertThat(currentPackageName).isAnyOf("com.android.settings", "com.android.permissioncontroller") assertThat(hasObjectWithText(R.string.app_name)).isTrue() - val storageSwitch = findObject(UiSelector().className(Switch::class.java)) - assertThat(storageSwitch).isNotNull() + val switch = findObject(By.clazz(Switch::class.java)) + assertThat(switch).isNotNull() // verify initial state - assertThat(storageSwitch.isCheckable).isTrue() - assertThat(storageSwitch.isEnabled).isTrue() - assertThat(storageSwitch.isChecked).isFalse() + assertThat(switch.isCheckable).isTrue() + assertThat(switch.isEnabled).isTrue() + assertThat(switch.isChecked).isFalse() if (allowPermission) { // enable permission - storageSwitch.click() + switch.click() // verify changed state - assertThat(storageSwitch.isChecked).isTrue() + assertThat(switch.isChecked).isTrue() } // navigate back without enabling the permission