Skip to content

Commit 370903a

Browse files
committed
Replace deprecated ActivityTestRule with ActivityScenario
- Rewrite BrowserActivityTestRule using ExternalResource + ActivityScenario.launch() - Update CustomTabsTest to launch IntentReceiverActivity inline via ActivityScenario - Declare androidx.test:core as a direct androidTestImplementation dependency
1 parent 206c963 commit 370903a

4 files changed

Lines changed: 92 additions & 103 deletions

File tree

app/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,7 @@ dependencies {
294294
implementation libs.mozilla.ui.tabcounter
295295
implementation libs.mozilla.ui.widgets
296296

297+
androidTestImplementation libs.androidx.test.core
297298
androidTestImplementation libs.androidx.test.espresso.core
298299
androidTestImplementation libs.androidx.test.espresso.idling.resources
299300
constraints {

app/src/androidTest/java/org/mozilla/reference/browser/helpers/BrowserActivityTestRule.kt

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,17 @@
22
* License, v. 2.0. If a copy of the MPL was not distributed with this
33
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
44

5-
@file:Suppress("DEPRECATION")
6-
75
package org.mozilla.reference.browser.helpers
86

7+
import androidx.test.core.app.ActivityScenario
98
import androidx.test.espresso.IdlingRegistry
10-
import androidx.test.rule.ActivityTestRule
9+
import org.junit.rules.ExternalResource
1110
import org.mozilla.reference.browser.BrowserActivity
1211

1312
/**
1413
* A [org.junit.Rule] to handle shared test set up for tests on [BrowserActivity].
15-
*
16-
* @param initialTouchMode See [ActivityTestRule]
17-
* @param launchActivity See [ActivityTestRule]
1814
*/
19-
class BrowserActivityTestRule(
20-
initialTouchMode: Boolean = false,
21-
launchActivity: Boolean = true,
22-
) : ActivityTestRule<BrowserActivity>(BrowserActivity::class.java, initialTouchMode, launchActivity) {
15+
class BrowserActivityTestRule : ExternalResource() {
2316
/**
2417
* Ensures the test doesn't advance until session page load is completed.
2518
*
@@ -29,16 +22,25 @@ class BrowserActivityTestRule(
2922
* implementation changes and the tests break. In that case, this code might be
3023
* broken because it's not used, and thus tested, at present.
3124
*/
32-
3325
private lateinit var loadingIdlingResource: SessionLoadedIdlingResource
26+
private lateinit var scenario: ActivityScenario<BrowserActivity>
27+
28+
val activity: BrowserActivity
29+
get() {
30+
var result: BrowserActivity? = null
31+
scenario.onActivity { result = it }
32+
return result!!
33+
}
3434

35-
override fun beforeActivityLaunched() {
35+
override fun before() {
3636
loadingIdlingResource = SessionLoadedIdlingResource().also {
3737
IdlingRegistry.getInstance().register(it)
3838
}
39+
scenario = ActivityScenario.launch(BrowserActivity::class.java)
3940
}
4041

41-
override fun afterActivityFinished() {
42+
override fun after() {
43+
scenario.close()
4244
IdlingRegistry.getInstance().unregister(loadingIdlingResource)
4345
}
4446
}

app/src/androidTest/java/org/mozilla/reference/browser/ui/CustomTabsTest.kt

Lines changed: 75 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,9 @@
22
* License, v. 2.0. If a copy of the MPL was not distributed with this
33
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
44

5-
@file:Suppress("DEPRECATION")
6-
75
package org.mozilla.reference.browser.ui
86

9-
import androidx.test.rule.ActivityTestRule
7+
import androidx.test.core.app.ActivityScenario
108
import mockwebserver3.MockWebServer
119
import org.junit.After
1210
import org.junit.Before
@@ -26,13 +24,6 @@ class CustomTabsTest {
2624
@get:Rule
2725
val activityTestRule = BrowserActivityTestRule()
2826

29-
@get:Rule
30-
val intentReceiverActivityTestRule = ActivityTestRule(
31-
IntentReceiverActivity::class.java,
32-
true,
33-
false,
34-
)
35-
3627
@Rule
3728
@JvmField
3829
val retryTestRule = RetryTestRule(3)
@@ -54,42 +45,40 @@ class CustomTabsTest {
5445
fun openCustomTabTest() {
5546
val customTabPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
5647

57-
intentReceiverActivityTestRule.launchActivity(
58-
createCustomTabIntent(
59-
customTabPage.url.toString(),
60-
),
61-
)
62-
63-
customTabScreen {
64-
verifyCloseButton()
65-
verifyTrackingProtectionIcon()
66-
verifySecurityIndicator()
67-
verifyPageTitle(customTabPage.title)
68-
verifyPageUrl(customTabPage.url.toString())
69-
verifyActionButton()
70-
verifyMenuButton()
48+
ActivityScenario
49+
.launch<IntentReceiverActivity>(
50+
createCustomTabIntent(customTabPage.url.toString()),
51+
).use {
52+
customTabScreen {
53+
verifyCloseButton()
54+
verifyTrackingProtectionIcon()
55+
verifySecurityIndicator()
56+
verifyPageTitle(customTabPage.title)
57+
verifyPageUrl(customTabPage.url.toString())
58+
verifyActionButton()
59+
verifyMenuButton()
60+
}
7161
}
7262
}
7363

7464
@Test
7565
fun verifyCustomTabMenuItemsTest() {
7666
val customTabPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
7767

78-
intentReceiverActivityTestRule.launchActivity(
79-
createCustomTabIntent(
80-
customTabPage.url.toString(),
81-
),
82-
)
83-
84-
customTabScreen {
85-
}.openMainMenu {
86-
verifyForwardButton()
87-
verifyRefreshButton()
88-
verifyStopButton()
89-
verifyShareButton()
90-
verifyRequestDesktopButton()
91-
verifyFindInPageButton()
92-
verifyOpenInBrowserButton()
68+
ActivityScenario
69+
.launch<IntentReceiverActivity>(
70+
createCustomTabIntent(customTabPage.url.toString()),
71+
).use {
72+
customTabScreen {
73+
}.openMainMenu {
74+
verifyForwardButton()
75+
verifyRefreshButton()
76+
verifyStopButton()
77+
verifyShareButton()
78+
verifyRequestDesktopButton()
79+
verifyFindInPageButton()
80+
verifyOpenInBrowserButton()
81+
}
9382
}
9483
}
9584

@@ -98,78 +87,74 @@ class CustomTabsTest {
9887
val pageLinks = TestAssetHelper.getGenericAsset(mockWebServer, 4)
9988
val genericURL = TestAssetHelper.getGenericAsset(mockWebServer, 1)
10089

101-
intentReceiverActivityTestRule.launchActivity(
102-
createCustomTabIntent(
103-
pageLinks.url.toString(),
104-
),
105-
)
106-
107-
customTabScreen {
108-
clickGenericLink("Link 1")
109-
verifyPageTitle(genericURL.title)
110-
verifyPageUrl(genericURL.url.toString())
111-
}.goBack {
112-
verifyPageTitle(pageLinks.title)
113-
verifyPageUrl(pageLinks.url.toString())
114-
}.openMainMenu {
115-
clickForwardButton()
116-
verifyPageTitle(genericURL.title)
117-
verifyPageUrl(genericURL.url.toString())
90+
ActivityScenario
91+
.launch<IntentReceiverActivity>(
92+
createCustomTabIntent(pageLinks.url.toString()),
93+
).use {
94+
customTabScreen {
95+
clickGenericLink("Link 1")
96+
verifyPageTitle(genericURL.title)
97+
verifyPageUrl(genericURL.url.toString())
98+
}.goBack {
99+
verifyPageTitle(pageLinks.title)
100+
verifyPageUrl(pageLinks.url.toString())
101+
}.openMainMenu {
102+
clickForwardButton()
103+
verifyPageTitle(genericURL.title)
104+
verifyPageUrl(genericURL.url.toString())
105+
}
118106
}
119107
}
120108

121109
@Test
122110
fun customTabShareTest() {
123111
val customTabPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
124112

125-
intentReceiverActivityTestRule.launchActivity(
126-
createCustomTabIntent(
127-
customTabPage.url.toString(),
128-
),
129-
)
130-
131-
customTabScreen {
132-
}.openMainMenu {
133-
}.clickShareButton {
134-
verifyShareContentPanel()
113+
ActivityScenario
114+
.launch<IntentReceiverActivity>(
115+
createCustomTabIntent(customTabPage.url.toString()),
116+
).use {
117+
customTabScreen {
118+
}.openMainMenu {
119+
}.clickShareButton {
120+
verifyShareContentPanel()
121+
}
135122
}
136123
}
137124

138125
@Test
139126
fun customTabRequestDesktopSiteTest() {
140127
val customTabPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
141128

142-
intentReceiverActivityTestRule.launchActivity(
143-
createCustomTabIntent(
144-
customTabPage.url.toString(),
145-
),
146-
)
147-
148-
customTabScreen {
149-
}.openMainMenu {
150-
switchRequestDesktopSiteToggle()
151-
}.openMainMenu {
152-
verifyRequestDesktopSiteIsTurnedOn()
153-
switchRequestDesktopSiteToggle()
154-
}.openMainMenu {
155-
verifyRequestDesktopSiteIsTurnedOff()
129+
ActivityScenario
130+
.launch<IntentReceiverActivity>(
131+
createCustomTabIntent(customTabPage.url.toString()),
132+
).use {
133+
customTabScreen {
134+
}.openMainMenu {
135+
switchRequestDesktopSiteToggle()
136+
}.openMainMenu {
137+
verifyRequestDesktopSiteIsTurnedOn()
138+
switchRequestDesktopSiteToggle()
139+
}.openMainMenu {
140+
verifyRequestDesktopSiteIsTurnedOff()
141+
}
156142
}
157143
}
158144

159145
@Test
160146
fun customTabOpenInBrowserTest() {
161147
val customTabPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
162148

163-
intentReceiverActivityTestRule.launchActivity(
164-
createCustomTabIntent(
165-
customTabPage.url.toString(),
166-
),
167-
)
168-
169-
customTabScreen {
170-
}.openMainMenu {
171-
}.clickOpenInBrowserButton {
172-
verifyUrl(customTabPage.url.toString())
149+
ActivityScenario
150+
.launch<IntentReceiverActivity>(
151+
createCustomTabIntent(customTabPage.url.toString()),
152+
).use {
153+
customTabScreen {
154+
}.openMainMenu {
155+
}.clickOpenInBrowserButton {
156+
verifyUrl(customTabPage.url.toString())
157+
}
173158
}
174159
}
175160
}

gradle/libs.versions.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ androidx-compose-ui-text = { group = "androidx.compose.ui", name = "ui-text" }
9494
androidx-compose-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" }
9595

9696
# AndroidX Testing
97+
androidx-test-core = { group = "androidx.test", name = "core", version.ref = "androidx-test-core" }
9798
androidx-test-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "androidx-test-espresso" }
9899
androidx-test-espresso-idling-resources = { group = "androidx.test.espresso", name = "espresso-idling-resource", version.ref = "androidx-test-espresso" }
99100
androidx-test-monitor = { group = "androidx.test", name = "monitor", version.ref = "androidx-test-monitor" }

0 commit comments

Comments
 (0)