diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/CrashReportingTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/CrashReportingTest.kt new file mode 100644 index 000000000..a4a0d86f5 --- /dev/null +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/CrashReportingTest.kt @@ -0,0 +1,75 @@ +package org.mozilla.fenix.ui + +import androidx.compose.ui.test.junit4.AndroidComposeTestRule +import okhttp3.mockwebserver.MockWebServer +import org.junit.After +import org.junit.Before +import org.junit.Ignore +import org.junit.Rule +import org.junit.Test +import org.mozilla.fenix.customannotations.SmokeTest +import org.mozilla.fenix.helpers.AndroidAssetDispatcher +import org.mozilla.fenix.helpers.FeatureSettingsHelper +import org.mozilla.fenix.helpers.HomeActivityIntentTestRule +import org.mozilla.fenix.helpers.TestAssetHelper +import org.mozilla.fenix.ui.robots.homeScreen +import org.mozilla.fenix.ui.robots.navigationToolbar + +class CrashReportingTest { + + private lateinit var mockWebServer: MockWebServer + private val featureSettingsHelper = FeatureSettingsHelper() + + @get:Rule + val activityTestRule = AndroidComposeTestRule( + HomeActivityIntentTestRule(), + { it.activity } + ) + + @Before + fun setUp() { + featureSettingsHelper.setJumpBackCFREnabled(false) + featureSettingsHelper.setPocketEnabled(false) + + mockWebServer = MockWebServer().apply { + dispatcher = AndroidAssetDispatcher() + start() + } + } + + @After + fun tearDown() { + mockWebServer.shutdown() + featureSettingsHelper.resetAllFeatureFlags() + } + + @SmokeTest + @Test + fun closeTabCrashedReporterTest() { + + homeScreen { + }.openNavigationToolbar { + }.openTabCrashReporter { + }.clickTabCrashedCloseButton { + }.openTabDrawer { + verifyNoOpenTabsInNormalBrowsing() + } + } + + @Ignore("Test failure caused by: https://github.com/mozilla-mobile/fenix/issues/19964") + @SmokeTest + @Test + fun restoreTabCrashedReporterTest() { + val website = TestAssetHelper.getGenericAsset(mockWebServer, 1) + + homeScreen { + }.openNavigationToolbar { + }.enterURLAndEnterToBrowser(website.url) {} + + navigationToolbar { + }.openTabCrashReporter { + clickTabCrashedRestoreButton() + verifyPageContent(website.content) + } + } +} diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/SmokeTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/SmokeTest.kt index 0e8de5e36..ed1e8bbfb 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/SmokeTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/SmokeTest.kt @@ -17,7 +17,6 @@ import mozilla.components.concept.engine.mediasession.MediaSession import okhttp3.mockwebserver.MockWebServer import org.junit.After import org.junit.Before -import org.junit.Ignore import org.junit.Rule import org.junit.Test import org.mozilla.fenix.IntentReceiverActivity @@ -1023,34 +1022,6 @@ class SmokeTest { } } - @Test - fun closeTabCrashedReporterTest() { - - homeScreen { - }.openNavigationToolbar { - }.openTabCrashReporter { - }.clickTabCrashedCloseButton { - }.openTabDrawer { - verifyNoOpenTabsInNormalBrowsing() - } - } - - @Ignore("Test failure caused by: https://github.com/mozilla-mobile/fenix/issues/19964") - @Test - fun restoreTabCrashedReporterTest() { - val website = TestAssetHelper.getGenericAsset(mockWebServer, 1) - - homeScreen { - }.openNavigationToolbar { - }.enterURLAndEnterToBrowser(website.url) {} - - navigationToolbar { - }.openTabCrashReporter { - clickTabCrashedRestoreButton() - verifyPageContent(website.content) - } - } - @Test // Verifies the main menu of a custom tab with a custom menu item fun customTabMenuItemsTest() { diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/BrowserRobot.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/BrowserRobot.kt index e26b41af4..2f69adf79 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/BrowserRobot.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/BrowserRobot.kt @@ -750,6 +750,8 @@ class BrowserRobot { val tabCrashedCloseButton = mDevice.findObject(text("Close tab")) tabCrashedCloseButton.click() + mDevice.waitForIdle() + HomeScreenRobot().interact() return HomeScreenRobot.Transition() } diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/HomeScreenRobot.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/HomeScreenRobot.kt index 365bb7948..7cc7084cd 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/HomeScreenRobot.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/HomeScreenRobot.kt @@ -222,14 +222,12 @@ class HomeScreenRobot { val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) fun openTabDrawer(interact: TabDrawerRobot.() -> Unit): TabDrawerRobot.Transition { - mDevice.waitForIdle() + mDevice.findObject( + UiSelector().descriptionContains("open tab. Tap to switch tabs.") + ).waitForExists(waitingTime) tabsCounter().click() - - mDevice.waitNotNull( - Until.findObject(By.res("$packageName:id/tab_layout")), - waitingTime - ) + mDevice.waitNotNull(Until.findObject(By.res("$packageName:id/tab_layout"))) TabDrawerRobot().interact() return TabDrawerRobot.Transition()