Bug 1845307 - New verifySyncedTabsWhenUserIsNotSignedInTest UI test

fenix/117.0
AndiAJ 10 months ago committed by mergify[bot]
parent 54c273bb78
commit f84f86c218

@ -375,4 +375,17 @@ class ComposeTabbedBrowsingTest {
verifyNavigationToolbar()
}
}
@Test
fun verifySyncedTabsWhenUserIsNotSignedInTest() {
navigationToolbar {
}.openComposeTabDrawer(composeTestRule) {
verifySyncedTabsButtonIsSelected(isSelected = false)
}.toggleToSyncedTabs {
verifySyncedTabsButtonIsSelected(isSelected = true)
verifySyncedTabsListWhenUserIsNotSignedIn()
}.clickSignInToSyncButton {
verifyTurnOnSyncMenu()
}
}
}

@ -363,4 +363,18 @@ class TabbedBrowsingTest {
verifyNavigationToolbar()
}
}
@Test
fun verifySyncedTabsWhenUserIsNotSignedInTest() {
navigationToolbar {
}.openTabTray {
verifySyncedTabsButtonIsSelected(isSelected = false)
clickSyncedTabsButton()
}.toggleToSyncedTabs {
verifySyncedTabsButtonIsSelected(isSelected = true)
verifySyncedTabsListWhenUserIsNotSignedIn()
}.clickSignInToSyncButton {
verifyTurnOnSyncMenu()
}
}
}

@ -40,9 +40,11 @@ import org.hamcrest.Matcher
import org.mozilla.fenix.R
import org.mozilla.fenix.helpers.Constants
import org.mozilla.fenix.helpers.HomeActivityComposeTestRule
import org.mozilla.fenix.helpers.MatcherHelper.assertItemContainingTextExists
import org.mozilla.fenix.helpers.MatcherHelper.itemContainingText
import org.mozilla.fenix.helpers.TestAssetHelper
import org.mozilla.fenix.helpers.TestAssetHelper.waitingTime
import org.mozilla.fenix.helpers.TestHelper.getStringResource
import org.mozilla.fenix.helpers.TestHelper.mDevice
import org.mozilla.fenix.helpers.clickAtLocationInView
import org.mozilla.fenix.helpers.idlingresource.BottomSheetBehaviorStateIdlingResource
@ -79,6 +81,15 @@ class ComposeTabDrawerRobot(private val composeTestRule: HomeActivityComposeTest
}
}
fun verifySyncedTabsListWhenUserIsNotSignedIn() {
verifySyncedTabsList()
assertItemContainingTextExists(
itemContainingText(getStringResource(R.string.synced_tabs_sign_in_message)),
itemContainingText(getStringResource(R.string.sync_sign_in)),
itemContainingText(getStringResource(R.string.tab_drawer_fab_sync)),
)
}
fun verifyExistingOpenTabs(vararg titles: String) {
titles.forEach { title ->
itemContainingText(title).waitForExists(waitingTime)
@ -287,6 +298,19 @@ class ComposeTabDrawerRobot(private val composeTestRule: HomeActivityComposeTest
return Transition(composeTestRule)
}
fun toggleToSyncedTabs(interact: ComposeTabDrawerRobot.() -> Unit): Transition {
composeTestRule.syncedTabsButton().performClick()
ComposeTabDrawerRobot(composeTestRule).interact()
return Transition(composeTestRule)
}
fun clickSignInToSyncButton(interact: SyncSignInRobot.() -> Unit): SyncSignInRobot.Transition {
itemContainingText(getStringResource(R.string.sync_sign_in))
.clickAndWaitForNewWindow(TestAssetHelper.waitingTimeShort)
SyncSignInRobot().interact()
return SyncSignInRobot.Transition()
}
fun openThreeDotMenu(interact: ComposeTabDrawerRobot.() -> Unit): Transition {
composeTestRule.threeDotButton().performClick()
ComposeTabDrawerRobot(composeTestRule).interact()

@ -8,6 +8,7 @@ package org.mozilla.fenix.ui.robots
import android.net.Uri
import android.os.Build
import androidx.compose.ui.test.onNodeWithTag
import androidx.recyclerview.widget.RecyclerView
import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.IdlingRegistry
@ -32,7 +33,9 @@ import org.hamcrest.CoreMatchers.not
import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue
import org.mozilla.fenix.R
import org.mozilla.fenix.helpers.Constants
import org.mozilla.fenix.helpers.Constants.LONG_CLICK_DURATION
import org.mozilla.fenix.helpers.HomeActivityComposeTestRule
import org.mozilla.fenix.helpers.MatcherHelper.itemWithResId
import org.mozilla.fenix.helpers.MatcherHelper.itemWithResIdContainingText
import org.mozilla.fenix.helpers.SessionLoadedIdlingResource
@ -41,8 +44,10 @@ import org.mozilla.fenix.helpers.TestAssetHelper.waitingTimeShort
import org.mozilla.fenix.helpers.TestHelper.getStringResource
import org.mozilla.fenix.helpers.TestHelper.mDevice
import org.mozilla.fenix.helpers.TestHelper.packageName
import org.mozilla.fenix.helpers.TestHelper.waitForObjects
import org.mozilla.fenix.helpers.click
import org.mozilla.fenix.helpers.ext.waitNotNull
import org.mozilla.fenix.tabstray.TabsTrayTestTag
/**
* Implementation of Robot Pattern for the URL toolbar.
@ -226,6 +231,37 @@ class NavigationToolbarRobot {
return TabDrawerRobot.Transition()
}
fun openComposeTabDrawer(composeTestRule: HomeActivityComposeTestRule, interact: ComposeTabDrawerRobot.() -> Unit): ComposeTabDrawerRobot.Transition {
for (i in 1..Constants.RETRY_COUNT) {
try {
mDevice.waitForObjects(
mDevice.findObject(
UiSelector()
.resourceId("$packageName:id/mozac_browser_toolbar_browser_actions"),
),
waitingTime,
)
tabTrayButton().click()
composeTestRule.onNodeWithTag(TabsTrayTestTag.tabsTray).assertExists()
break
} catch (e: AssertionError) {
if (i == Constants.RETRY_COUNT) {
throw e
} else {
mDevice.waitForIdle()
}
}
}
composeTestRule.onNodeWithTag(TabsTrayTestTag.fab).assertExists()
ComposeTabDrawerRobot(composeTestRule).interact()
return ComposeTabDrawerRobot.Transition(composeTestRule)
}
fun visitLinkFromClipboard(interact: BrowserRobot.() -> Unit): BrowserRobot.Transition {
if (clearAddressBarButton().waitForExists(waitingTimeShort)) {
clearAddressBarButton().click()

@ -25,7 +25,16 @@ import org.mozilla.fenix.helpers.click
class SyncSignInRobot {
fun verifyAccountSettingsMenuHeader() = assertAccountSettingsMenuHeader()
fun verifyTurnOnSyncMenu() = assertTurnOnSyncMenu()
fun verifyTurnOnSyncMenu() {
mDevice.findObject(UiSelector().resourceId("$packageName:id/container")).waitForExists(waitingTime)
assertTrue(
mDevice.findObject(
UiSelector()
.resourceId("$packageName:id/signInScanButton")
.resourceId("$packageName:id/signInEmailButton"),
).waitForExists(waitingTime),
)
}
class Transition {
fun goBack(interact: BrowserRobot.() -> Unit): BrowserRobot.Transition {
@ -46,14 +55,3 @@ private fun assertAccountSettingsMenuHeader() {
onView(withText(R.string.preferences_account_settings))
.check((matches(withEffectiveVisibility(Visibility.VISIBLE))))
}
private fun assertTurnOnSyncMenu() {
mDevice.findObject(UiSelector().resourceId("$packageName:id/container")).waitForExists(waitingTime)
assertTrue(
mDevice.findObject(
UiSelector()
.resourceId("$packageName:id/signInScanButton")
.resourceId("$packageName:id/signInEmailButton"),
).waitForExists(waitingTime),
)
}

@ -39,6 +39,8 @@ import org.hamcrest.Matcher
import org.mozilla.fenix.R
import org.mozilla.fenix.helpers.Constants.LONG_CLICK_DURATION
import org.mozilla.fenix.helpers.Constants.RETRY_COUNT
import org.mozilla.fenix.helpers.MatcherHelper.assertItemContainingTextExists
import org.mozilla.fenix.helpers.MatcherHelper.assertItemWithResIdAndDescriptionExists
import org.mozilla.fenix.helpers.MatcherHelper.assertItemWithResIdAndTextExists
import org.mozilla.fenix.helpers.MatcherHelper.assertItemWithResIdExists
import org.mozilla.fenix.helpers.MatcherHelper.itemContainingText
@ -48,6 +50,7 @@ import org.mozilla.fenix.helpers.MatcherHelper.itemWithResIdContainingText
import org.mozilla.fenix.helpers.TestAssetHelper.waitingTime
import org.mozilla.fenix.helpers.TestAssetHelper.waitingTimeLong
import org.mozilla.fenix.helpers.TestAssetHelper.waitingTimeShort
import org.mozilla.fenix.helpers.TestHelper.getStringResource
import org.mozilla.fenix.helpers.TestHelper.mDevice
import org.mozilla.fenix.helpers.TestHelper.packageName
import org.mozilla.fenix.helpers.TestHelper.scrollToElementByText
@ -81,7 +84,9 @@ class TabDrawerRobot {
assertPrivateBrowsingButtonIsSelected(isSelected)
fun verifySyncedTabsButtonIsSelected(isSelected: Boolean) =
assertSyncedTabsButtonIsSelected(isSelected)
syncedTabsButton().check(matches(isSelected(isSelected)))
fun clickSyncedTabsButton() = syncedTabsButton().click()
fun verifyExistingOpenTabs(vararg titles: String) = assertExistingOpenTabs(*titles)
fun verifyNoExistingOpenTabs(vararg titles: String) = assertNoExistingOpenTabs(*titles)
@ -272,6 +277,20 @@ class TabDrawerRobot {
itemContainingText("$numOfTabs selected"),
)
fun verifySyncedTabsListWhenUserIsNotSignedIn() {
assertItemWithResIdExists(itemWithResId("$packageName:id/tabsTray"))
assertItemContainingTextExists(
itemContainingText(getStringResource(R.string.synced_tabs_sign_in_message)),
itemContainingText(getStringResource(R.string.sync_sign_in)),
)
assertItemWithResIdAndDescriptionExists(
itemWithResIdAndDescription(
"$packageName:id/new_tab_button",
getStringResource(R.string.resync_button_content_description),
),
)
}
class Transition {
fun openTabDrawer(interact: TabDrawerRobot.() -> Unit): Transition {
mDevice.waitForIdle(waitingTime)
@ -315,6 +334,19 @@ class TabDrawerRobot {
return Transition()
}
fun toggleToSyncedTabs(interact: TabDrawerRobot.() -> Unit): Transition {
syncedTabsButton().perform(click())
TabDrawerRobot().interact()
return Transition()
}
fun clickSignInToSyncButton(interact: SyncSignInRobot.() -> Unit): Transition {
itemContainingText(getStringResource(R.string.sync_sign_in))
.clickAndWaitForNewWindow(waitingTimeShort)
SyncSignInRobot().interact()
return Transition()
}
fun openTabsListThreeDotMenu(interact: ThreeDotMenuMainRobot.() -> Unit): ThreeDotMenuMainRobot.Transition {
threeDotMenu().perform(click())
@ -593,10 +625,6 @@ private fun assertPrivateBrowsingButtonIsSelected(isSelected: Boolean) {
privateBrowsingButton().check(matches(isSelected(isSelected)))
}
private fun assertSyncedTabsButtonIsSelected(isSelected: Boolean) {
syncedTabsButton().check(matches(isSelected(isSelected)))
}
private val tabsList =
UiScrollable(UiSelector().className("androidx.recyclerview.widget.RecyclerView"))

Loading…
Cancel
Save