1717
1818package com.itsaky.androidide.activities
1919
20+ import android.Manifest
21+ import android.content.Context
22+ import android.content.Intent
23+ import android.net.Uri
24+ import android.provider.Settings
2025import androidx.test.ext.junit.runners.AndroidJUnit4
2126import androidx.test.platform.app.InstrumentationRegistry
27+ import androidx.test.rule.GrantPermissionRule
28+ import androidx.test.runner.permission.PermissionRequester
2229import androidx.test.uiautomator.UiDevice
30+ import androidx.test.uiautomator.Until
2331import com.adevinta.android.barista.assertion.BaristaCheckedAssertions.assertChecked
2432import com.adevinta.android.barista.assertion.BaristaCheckedAssertions.assertUnchecked
2533import com.adevinta.android.barista.assertion.BaristaEnabledAssertions.assertDisabled
@@ -32,7 +40,10 @@ import com.adevinta.android.barista.rule.BaristaRule
3240import com.google.common.truth.Truth.assertThat
3341import com.itsaky.androidide.R
3442import com.itsaky.androidide.preferences.internal.statOptIn
43+ import com.itsaky.androidide.testing.android.LAUNCH_TIMEOUT
44+ import com.itsaky.androidide.testing.android.getApplicationContext
3545import com.itsaky.androidide.testing.android.stringRes
46+ import com.itsaky.androidide.utils.isAtLeastT
3647import org.junit.FixMethodOrder
3748import org.junit.Rule
3849import org.junit.Test
@@ -52,6 +63,10 @@ class OnboardingActivityStatesTest {
5263 @Rule
5364 val baristaActivityRule = BaristaRule .create(OnboardingActivity ::class .java)
5465
66+ @JvmField
67+ @Rule
68+ val grantPermissionsRule = GrantPermissionRule .grant(Manifest .permission.WRITE_EXTERNAL_STORAGE )
69+
5570 @Test
5671 fun A_testOnboarding_welcomeScreen () {
5772 baristaActivityRule.launchActivity()
@@ -64,6 +79,8 @@ class OnboardingActivityStatesTest {
6479
6580 @Test
6681 fun B_testOnboarding_statConsentScreen () {
82+ tryGrantPermissions()
83+
6784 baristaActivityRule.launchActivity()
6885
6986 clickOn(R .id.next)
@@ -97,10 +114,12 @@ class OnboardingActivityStatesTest {
97114 @Test
98115 fun F_testOnboarding_toolsSetup () {
99116
117+ tryGrantPermissions()
118+
100119 baristaActivityRule.launchActivity()
101120
102- val device = UiDevice .getInstance( InstrumentationRegistry .getInstrumentation() )
103- device.grantAndroidIDEPermissions( )
121+ clickOn( R .id.next )
122+ clickOn( R .id.next )
104123
105124 assertDisplayed(stringRes(R .string.title_install_tools))
106125 assertDisplayed(stringRes(R .string.subtitle_install_tools))
@@ -139,4 +158,25 @@ class OnboardingActivityStatesTest {
139158 assertEnabled(R .id.sdk_version_layout)
140159 assertEnabled(R .id.jdk_version_layout)
141160 }
161+
162+ private fun tryGrantPermissions () {
163+ if (isAtLeastT()) {
164+ PermissionRequester ().apply {
165+ addPermissions(Manifest .permission.POST_NOTIFICATIONS )
166+ requestPermissions()
167+ }
168+ }
169+
170+ val device = UiDevice .getInstance(InstrumentationRegistry .getInstrumentation())
171+ val context = getApplicationContext<Context >()
172+
173+ device.performActionAndWait({
174+ val intent = Intent (Settings .ACTION_MANAGE_UNKNOWN_APP_SOURCES ,
175+ Uri .parse(" package:${context.packageName} " ))
176+ intent.setFlags(Intent .FLAG_ACTIVITY_NEW_TASK )
177+ context.startActivity(intent)
178+ }, Until .newWindow(), LAUNCH_TIMEOUT )
179+
180+ device.handlePermissionInSettings(true )
181+ }
142182}
0 commit comments