Skip to content

Commit 40a834d

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 1492575 commit 40a834d

4 files changed

Lines changed: 86 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: 69 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,38 @@ 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.launch<IntentReceiverActivity>(
49+
createCustomTabIntent(customTabPage.url.toString()),
50+
).use {
51+
customTabScreen {
52+
verifyCloseButton()
53+
verifyTrackingProtectionIcon()
54+
verifySecurityIndicator()
55+
verifyPageTitle(customTabPage.title)
56+
verifyPageUrl(customTabPage.url.toString())
57+
verifyActionButton()
58+
verifyMenuButton()
59+
}
7160
}
7261
}
7362

7463
@Test
7564
fun verifyCustomTabMenuItemsTest() {
7665
val customTabPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
7766

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()
67+
ActivityScenario.launch<IntentReceiverActivity>(
68+
createCustomTabIntent(customTabPage.url.toString()),
69+
).use {
70+
customTabScreen {
71+
}.openMainMenu {
72+
verifyForwardButton()
73+
verifyRefreshButton()
74+
verifyStopButton()
75+
verifyShareButton()
76+
verifyRequestDesktopButton()
77+
verifyFindInPageButton()
78+
verifyOpenInBrowserButton()
79+
}
9380
}
9481
}
9582

@@ -98,78 +85,70 @@ class CustomTabsTest {
9885
val pageLinks = TestAssetHelper.getGenericAsset(mockWebServer, 4)
9986
val genericURL = TestAssetHelper.getGenericAsset(mockWebServer, 1)
10087

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())
88+
ActivityScenario.launch<IntentReceiverActivity>(
89+
createCustomTabIntent(pageLinks.url.toString()),
90+
).use {
91+
customTabScreen {
92+
clickGenericLink("Link 1")
93+
verifyPageTitle(genericURL.title)
94+
verifyPageUrl(genericURL.url.toString())
95+
}.goBack {
96+
verifyPageTitle(pageLinks.title)
97+
verifyPageUrl(pageLinks.url.toString())
98+
}.openMainMenu {
99+
clickForwardButton()
100+
verifyPageTitle(genericURL.title)
101+
verifyPageUrl(genericURL.url.toString())
102+
}
118103
}
119104
}
120105

121106
@Test
122107
fun customTabShareTest() {
123108
val customTabPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
124109

125-
intentReceiverActivityTestRule.launchActivity(
126-
createCustomTabIntent(
127-
customTabPage.url.toString(),
128-
),
129-
)
130-
131-
customTabScreen {
132-
}.openMainMenu {
133-
}.clickShareButton {
134-
verifyShareContentPanel()
110+
ActivityScenario.launch<IntentReceiverActivity>(
111+
createCustomTabIntent(customTabPage.url.toString()),
112+
).use {
113+
customTabScreen {
114+
}.openMainMenu {
115+
}.clickShareButton {
116+
verifyShareContentPanel()
117+
}
135118
}
136119
}
137120

138121
@Test
139122
fun customTabRequestDesktopSiteTest() {
140123
val customTabPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
141124

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()
125+
ActivityScenario.launch<IntentReceiverActivity>(
126+
createCustomTabIntent(customTabPage.url.toString()),
127+
).use {
128+
customTabScreen {
129+
}.openMainMenu {
130+
switchRequestDesktopSiteToggle()
131+
}.openMainMenu {
132+
verifyRequestDesktopSiteIsTurnedOn()
133+
switchRequestDesktopSiteToggle()
134+
}.openMainMenu {
135+
verifyRequestDesktopSiteIsTurnedOff()
136+
}
156137
}
157138
}
158139

159140
@Test
160141
fun customTabOpenInBrowserTest() {
161142
val customTabPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
162143

163-
intentReceiverActivityTestRule.launchActivity(
164-
createCustomTabIntent(
165-
customTabPage.url.toString(),
166-
),
167-
)
168-
169-
customTabScreen {
170-
}.openMainMenu {
171-
}.clickOpenInBrowserButton {
172-
verifyUrl(customTabPage.url.toString())
144+
ActivityScenario.launch<IntentReceiverActivity>(
145+
createCustomTabIntent(customTabPage.url.toString()),
146+
).use {
147+
customTabScreen {
148+
}.openMainMenu {
149+
}.clickOpenInBrowserButton {
150+
verifyUrl(customTabPage.url.toString())
151+
}
173152
}
174153
}
175154
}

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)