mirror of
https://gitee.com/zhangsken/AndroidIDE.git
synced 2026-10-16 07:49:44 +08:00
tests: add test for onboarding permissions behavior for Android < R
This commit is contained in:
+26
@@ -97,6 +97,19 @@
|
||||
</AndroidTestResultsTableState>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="-51454562">
|
||||
<value>
|
||||
<AndroidTestResultsTableState>
|
||||
<option name="preferredColumnWidths">
|
||||
<map>
|
||||
<entry key="Duration" value="90" />
|
||||
<entry key="Pixel_4_XL_API_27" value="120" />
|
||||
<entry key="Tests" value="360" />
|
||||
</map>
|
||||
</option>
|
||||
</AndroidTestResultsTableState>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="123996994">
|
||||
<value>
|
||||
<AndroidTestResultsTableState>
|
||||
@@ -111,6 +124,19 @@
|
||||
</AndroidTestResultsTableState>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="427304299">
|
||||
<value>
|
||||
<AndroidTestResultsTableState>
|
||||
<option name="preferredColumnWidths">
|
||||
<map>
|
||||
<entry key="Duration" value="90" />
|
||||
<entry key="Pixel_4_XL_API_27" value="120" />
|
||||
<entry key="Tests" value="360" />
|
||||
</map>
|
||||
</option>
|
||||
</AndroidTestResultsTableState>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="462596792">
|
||||
<value>
|
||||
<AndroidTestResultsTableState>
|
||||
|
||||
+11
-2
@@ -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!!
|
||||
|
||||
-3
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user