Skip to content
This repository was archived by the owner on Oct 18, 2024. It is now read-only.

Commit a4daca4

Browse files
committed
tests: add test for onboarding permissions behavior for Android < R
1 parent 2775702 commit a4daca4

File tree

4 files changed

+52
-16
lines changed

4 files changed

+52
-16
lines changed

.idea/androidTestResultsUserPreferences.xml

Lines changed: 26 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/src/androidTest/java/com/itsaky/androidide/activities/OnboardingActivityBehaviorTest.kt

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ import com.itsaky.androidide.testing.android.hasObjectWithText
4545
import com.itsaky.androidide.testing.android.launchAndroidIDE
4646
import com.itsaky.androidide.testing.android.stringRes
4747
import com.itsaky.androidide.testing.android.uiAutomation
48+
import com.itsaky.androidide.utils.isAtLeastR
4849
import com.itsaky.androidide.utils.isAtLeastT
4950
import org.junit.FixMethodOrder
5051
import org.junit.Rule
@@ -200,7 +201,11 @@ class OnboardingActivityBehaviorTest {
200201
grantButton.clickAndWaitForNewWindow()
201202

202203
// check permission denied behavior
203-
device.handleAndroidRPermissions(false)
204+
if (permissionDesc == R.string.permission_desc_install_packages || isAtLeastR()) {
205+
device.handlePermissionInSettings(false)
206+
} else {
207+
device.getObjectWithText("DENY").clickAndWaitForWindowUpdate(device)
208+
}
204209

205210
// verify AndroidIDE is visible
206211
assertThat(device.currentPackageName).isEqualTo(BuildInfo.PACKAGE_NAME)
@@ -218,7 +223,11 @@ class OnboardingActivityBehaviorTest {
218223
grantButton.clickAndWaitForNewWindow()
219224

220225
// check permission granted behavior
221-
device.handleAndroidRPermissions(true)
226+
if (permissionDesc == R.string.permission_desc_install_packages || isAtLeastR()) {
227+
device.handlePermissionInSettings(true)
228+
} else {
229+
device.getObjectWithText("ALLOW").clickAndWaitForWindowUpdate(device)
230+
}
222231

223232
grantButton = device.getObjectWithText(permissionDesc)
224233
.parent!!

app/src/androidTest/java/com/itsaky/androidide/activities/OnboardingActivityStatesTest.kt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,12 @@
1818
package com.itsaky.androidide.activities
1919

2020
import androidx.test.ext.junit.runners.AndroidJUnit4
21-
import androidx.test.filters.FlakyTest
2221
import androidx.test.platform.app.InstrumentationRegistry
2322
import androidx.test.uiautomator.UiDevice
2423
import com.adevinta.android.barista.assertion.BaristaCheckedAssertions.assertChecked
2524
import com.adevinta.android.barista.assertion.BaristaCheckedAssertions.assertUnchecked
2625
import com.adevinta.android.barista.assertion.BaristaEnabledAssertions.assertDisabled
2726
import com.adevinta.android.barista.assertion.BaristaEnabledAssertions.assertEnabled
28-
import com.adevinta.android.barista.assertion.BaristaRecyclerViewAssertions.assertRecyclerViewItemCount
2927
import com.adevinta.android.barista.assertion.BaristaVisibilityAssertions.assertDisplayed
3028
import com.adevinta.android.barista.assertion.BaristaVisibilityAssertions.assertNotDisplayed
3129
import com.adevinta.android.barista.interaction.BaristaClickInteractions.clickBack
@@ -34,7 +32,6 @@ import com.adevinta.android.barista.rule.BaristaRule
3432
import com.google.common.truth.Truth.assertThat
3533
import com.itsaky.androidide.R
3634
import com.itsaky.androidide.preferences.internal.statOptIn
37-
import com.itsaky.androidide.testing.android.launchAndroidIDE
3835
import com.itsaky.androidide.testing.android.stringRes
3936
import org.junit.FixMethodOrder
4037
import org.junit.Rule

app/src/androidTest/java/com/itsaky/androidide/activities/onboardingUtils.kt

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@ import android.widget.Switch
2222
import androidx.test.uiautomator.By
2323
import androidx.test.uiautomator.UiDevice
2424
import androidx.test.uiautomator.UiObject2
25-
import androidx.test.uiautomator.UiSelector
2625
import com.google.common.truth.Truth.assertThat
2726
import com.itsaky.androidide.R
2827
import com.itsaky.androidide.testing.android.clickAndWaitForNewWindow
2928
import com.itsaky.androidide.testing.android.clickAndWaitForWindowUpdate
3029
import com.itsaky.androidide.testing.android.getObjectWithText
3130
import com.itsaky.androidide.testing.android.hasObjectWithText
31+
import com.itsaky.androidide.utils.isAtLeastR
3232

3333
/**
3434
* @author Akash Yadav
@@ -52,8 +52,12 @@ fun UiDevice.grantAndroidIDEPermissions() {
5252
.findObject(By.clazz(Button::class.java))
5353

5454
if (grantButton.text != null) {
55-
grantButton.clickAndWaitForNewWindow()
56-
handleAndroidRPermissions(allowPermission = true)
55+
if (desc == R.string.permission_desc_install_packages || isAtLeastR()) {
56+
grantButton.clickAndWaitForNewWindow()
57+
handlePermissionInSettings(allowPermission = true)
58+
} else {
59+
getObjectWithText("ALLOW").clickAndWaitForWindowUpdate(this)
60+
}
5761
}
5862
}
5963

@@ -65,26 +69,26 @@ fun UiDevice.nextButton(): UiObject2 {
6569
return findObject(By.desc("NEXT"))!!
6670
}
6771

68-
fun UiDevice.handleAndroidRPermissions(
72+
fun UiDevice.handlePermissionInSettings(
6973
allowPermission: Boolean = true,
7074
) {
7175
assertThat(currentPackageName).isAnyOf("com.android.settings", "com.android.permissioncontroller")
7276
assertThat(hasObjectWithText(R.string.app_name)).isTrue()
7377

74-
val storageSwitch = findObject(UiSelector().className(Switch::class.java))
75-
assertThat(storageSwitch).isNotNull()
78+
val switch = findObject(By.clazz(Switch::class.java))
79+
assertThat(switch).isNotNull()
7680

7781
// verify initial state
78-
assertThat(storageSwitch.isCheckable).isTrue()
79-
assertThat(storageSwitch.isEnabled).isTrue()
80-
assertThat(storageSwitch.isChecked).isFalse()
82+
assertThat(switch.isCheckable).isTrue()
83+
assertThat(switch.isEnabled).isTrue()
84+
assertThat(switch.isChecked).isFalse()
8185

8286
if (allowPermission) {
8387
// enable permission
84-
storageSwitch.click()
88+
switch.click()
8589

8690
// verify changed state
87-
assertThat(storageSwitch.isChecked).isTrue()
91+
assertThat(switch.isChecked).isTrue()
8892
}
8993

9094
// navigate back without enabling the permission

0 commit comments

Comments
 (0)