@ -71,6 +71,7 @@ class BrowserRobot {
fun verifyCurrentPrivateSession ( context : Context ) {
val selectedTab = context . components . core . store . state . selectedTab
Log . i ( TAG , " verifyCurrentPrivateSession: Trying to verify that current browsing session is private " )
assertTrue ( " Current session is private " , selectedTab ?. content ?. private ?: false )
Log . i ( TAG , " verifyCurrentPrivateSession: Verified that current browsing session is private " )
}
@ -228,6 +229,7 @@ class BrowserRobot {
fun verifyNavURLBarHidden ( ) = assertUIObjectIsGone ( navURLBar ( ) )
fun verifyMenuButton ( ) {
Log . i ( TAG , " verifyMenuButton: Trying to verify main menu button is displayed " )
threeDotButton ( ) . check ( matches ( isDisplayed ( ) ) )
Log . i ( TAG , " verifyMenuButton: Verified main menu button is displayed " )
}
@ -249,6 +251,7 @@ class BrowserRobot {
assertUIObjectExists ( itemWithResId ( " $packageName :id/notification_dot " ) )
fun dismissContentContextMenu ( ) {
Log . i ( TAG , " dismissContentContextMenu: Trying to click device back button " )
mDevice . pressBack ( )
Log . i ( TAG , " dismissContentContextMenu: Clicked device back button " )
assertUIObjectExists ( itemWithResId ( " $packageName :id/engineView " ) )
@ -280,7 +283,9 @@ class BrowserRobot {
fun clickSubmitLoginButton ( ) {
clickPageObject ( itemWithResId ( " submit " ) )
assertUIObjectIsGone ( itemWithResId ( " submit " ) )
Log . i ( TAG , " clickSubmitLoginButton: Waiting for device to be idle for $waitingTimeLong ms " )
mDevice . waitForIdle ( waitingTimeLong )
Log . i ( TAG , " clickSubmitLoginButton: Waited for device to be idle for $waitingTimeLong ms " )
}
fun enterPassword ( password : String ) {
@ -323,11 +328,13 @@ class BrowserRobot {
// failing to swipe on Firebase sometimes, so it tries again
try {
Log . i ( TAG , " swipeNavBarRight: Try block " )
Log . i ( TAG , " swipeNavBarRight: Trying to perform swipe right action on navigation toolbar " )
navURLBar ( ) . swipeRight ( 2 )
Log . i ( TAG , " swipeNavBarRight: Performed swipe right action on navigation toolbar " )
assertUIObjectIsGone ( itemWithText ( tabUrl ) )
} catch ( e : AssertionError ) {
Log . i ( TAG , " swipeNavBarRight: AssertionError caught, executing fallback methods " )
Log . i ( TAG , " swipeNavBarRight: Trying to perform swipe right action on navigation toolbar " )
navURLBar ( ) . swipeRight ( 2 )
Log . i ( TAG , " swipeNavBarRight: Performed swipe right action on navigation toolbar " )
assertUIObjectIsGone ( itemWithText ( tabUrl ) )
@ -338,11 +345,13 @@ class BrowserRobot {
// failing to swipe on Firebase sometimes, so it tries again
try {
Log . i ( TAG , " swipeNavBarLeft: Try block " )
Log . i ( TAG , " swipeNavBarLeft: Trying to perform swipe left action on navigation toolbar " )
navURLBar ( ) . swipeLeft ( 2 )
Log . i ( TAG , " swipeNavBarLeft: Performed swipe left action on navigation toolbar " )
assertUIObjectIsGone ( itemWithText ( tabUrl ) )
} catch ( e : AssertionError ) {
Log . i ( TAG , " swipeNavBarLeft: AssertionError caught, executing fallback methods " )
Log . i ( TAG , " swipeNavBarLeft: Trying to perform swipe left action on navigation toolbar " )
navURLBar ( ) . swipeLeft ( 2 )
Log . i ( TAG , " swipeNavBarLeft: Performed swipe left action on navigation toolbar " )
assertUIObjectIsGone ( itemWithText ( tabUrl ) )
@ -354,6 +363,7 @@ class BrowserRobot {
try {
Log . i ( TAG , " clickSuggestedLoginsButton: Started try # $i " )
mDevice . waitForObjects ( suggestedLogins ( ) )
Log . i ( TAG , " clickSuggestedLoginsButton: Trying to click suggested logins button " )
suggestedLogins ( ) . click ( )
Log . i ( TAG , " clickSuggestedLoginsButton: Clicked suggested logins button " )
mDevice . waitForObjects ( suggestedLogins ( ) )
@ -370,6 +380,7 @@ class BrowserRobot {
}
fun setTextForApartmentTextBox ( apartment : String ) {
Log . i ( TAG , " setTextForApartmentTextBox: Trying to set the text for the apartment text box to: $apartment " )
itemWithResId ( " apartment " ) . setText ( apartment )
Log . i ( TAG , " setTextForApartmentTextBox: The text for the apartment text box was set to: $apartment " )
}
@ -388,8 +399,9 @@ class BrowserRobot {
try {
Log . i ( TAG , " clickSelectAddressButton: Started try # $i " )
assertUIObjectExists ( selectAddressButton ( ) )
Log . i ( TAG , " clickSelectAddressButton: Trying to click the select address button and wait for $waitingTime ms for a new window " )
selectAddressButton ( ) . clickAndWaitForNewWindow ( waitingTime )
Log . i ( TAG , " clickSelectAddressButton: Clicked select address button" )
Log . i ( TAG , " clickSelectAddressButton: Clicked the select address button and waited for $waitingTime ms for a new window " )
break
} catch ( e : AssertionError ) {
@ -409,37 +421,51 @@ class BrowserRobot {
fun verifySelectAddressButtonExists ( exists : Boolean ) = assertUIObjectExists ( selectAddressButton ( ) , exists = exists )
fun changeCreditCardExpiryDate ( expiryDate : String ) {
Log . i ( TAG , " changeCreditCardExpiryDate: Trying to set credit card expiry date to: $expiryDate " )
itemWithResId ( " expiryMonthAndYear " ) . setText ( expiryDate )
Log . i ( TAG , " changeCreditCardExpiryDate: Credit card expiry date was set to: $expiryDate " )
}
fun clickCreditCardNumberTextBox ( ) {
Log . i ( TAG , " clickCreditCardNumberTextBox: Waiting for credit card number text box" )
Log . i ( TAG , " clickCreditCardNumberTextBox: Waiting for $waitingTime ms until finding the credit card number text box" )
mDevice . wait ( Until . findObject ( By . res ( " cardNumber " ) ) , waitingTime )
Log . i ( TAG , " clickCreditCardNumberTextBox: Waited for $waitingTime ms until the credit card number text box was found " )
Log . i ( TAG , " clickCreditCardNumberTextBox: Trying to click the credit card number text box " )
mDevice . findObject ( By . res ( " cardNumber " ) ) . click ( )
Log . i ( TAG , " clickCreditCardNumberTextBox: Clicked credit card number text box " )
Log . i ( TAG , " clickCreditCardNumberTextBox: Clicked the credit card number text box " )
Log . i ( TAG , " clickCreditCardNumberTextBox: Waiting for $waitingTimeShort ms for $appName window to be updated " )
mDevice . waitForWindowUpdate ( appName , waitingTimeShort )
Log . i ( TAG , " clickCreditCardNumberTextBox: Waited for $waitingTimeShort ms for $appName window to be updated " )
}
fun clickCreditCardFormSubmitButton ( ) {
Log . i ( TAG , " clickCreditCardFormSubmitButton: Trying to click the credit card form submit button and wait for $waitingTime ms for a new window " )
itemWithResId ( " submit " ) . clickAndWaitForNewWindow ( waitingTime )
Log . i ( TAG , " clickCreditCardFormSubmitButton: Clicked credit card form submit button" )
Log . i ( TAG , " clickCreditCardFormSubmitButton: Clicked the credit card form submit button and waited for $waitingTime ms for a new window " )
}
fun fillAndSaveCreditCard ( cardNumber : String , cardName : String , expiryMonthAndYear : String ) {
Log . i ( TAG , " fillAndSaveCreditCard: Tying to set credit card number to: $cardNumber " )
itemWithResId ( " cardNumber " ) . setText ( cardNumber )
Log . i ( TAG , " fillAndSaveCreditCard: Set card number to: $cardNumber " )
Log . i ( TAG , " fillAndSaveCreditCard: Credit card number was set to: $cardNumber " )
mDevice . waitForIdle ( waitingTime )
Log . i ( TAG , " fillAndSaveCreditCard: Trying to set credit card name to: $cardName " )
itemWithResId ( " nameOnCard " ) . setText ( cardName )
Log . i ( TAG , " fillAndSaveCreditCard: Set card name to: $cardName " )
Log . i ( TAG , " fillAndSaveCreditCard: Credit card name was set to: $cardName " )
mDevice . waitForIdle ( waitingTime )
Log . i ( TAG , " fillAndSaveCreditCard: Trying to set credit card expiry month and year to: $expiryMonthAndYear " )
itemWithResId ( " expiryMonthAndYear " ) . setText ( expiryMonthAndYear )
Log . i ( TAG , " fillAndSaveCreditCard: Set expiry month and year to: $expiryMonthAndYear " )
Log . i ( TAG , " fillAndSaveCreditCard: Credit card expiry month and year were set to: $expiryMonthAndYear " )
Log . i ( TAG , " fillAndSaveCreditCard: Waiting for device to be idle for $waitingTime ms " )
mDevice . waitForIdle ( waitingTime )
Log . i ( TAG , " fillAndSaveCreditCard: Waited for device to be idle for $waitingTime ms " )
Log . i ( TAG , " fillAndSaveCreditCard: Trying to click the credit card form submit button and wait for $waitingTime ms for a new window " )
itemWithResId ( " submit " ) . clickAndWaitForNewWindow ( waitingTime )
Log . i ( TAG , " fillAndSaveCreditCard: Clicked credit card form submit button " )
Log . i ( TAG , " fillAndSaveCreditCard: Clicked the credit card form submit button and waited for $waitingTime ms for a new window " )
waitForPageToLoad ( )
Log . i ( TAG , " fillAndSaveCreditCard: Waiting for $waitingTime ms for $packageName window to be updated " )
mDevice . waitForWindowUpdate ( packageName , waitingTime )
Log . i ( TAG , " fillAndSaveCreditCard: Waited for $waitingTime ms for $packageName window to be updated " )
}
fun verifyUpdateOrSaveCreditCardPromptExists ( exists : Boolean ) =
@ -463,7 +489,9 @@ class BrowserRobot {
}
fun verifySuggestedUserName ( userName : String ) {
Log . i ( TAG , " verifySuggestedUserName: Waiting for $waitingTime ms for suggested logins fragment to exist " )
itemWithResId ( " $packageName :id/mozac_feature_login_multiselect_expand " ) . waitForExists ( waitingTime )
Log . i ( TAG , " verifySuggestedUserName: Waited for $waitingTime ms for suggested logins fragment to exist " )
assertUIObjectExists ( itemContainingText ( userName ) )
}
@ -548,43 +576,54 @@ class BrowserRobot {
fun verifyCookiesProtectionHintIsDisplayed ( composeTestRule : HomeActivityComposeTestRule , isDisplayed : Boolean ) {
if ( isDisplayed ) {
Log . i ( TAG , " verifyCookiesProtectionHintIsDisplayed: Trying to verify that the total cookie protection message is displayed " )
composeTestRule . onNodeWithTag ( " tcp_cfr.message " ) . assertIsDisplayed ( )
Log . i ( TAG , " verifyCookiesProtectionHintIsDisplayed: Verified total cookie protection message is displayed " )
Log . i ( TAG , " verifyCookiesProtectionHintIsDisplayed: Trying to verify that the total cookie protection learn more link is displayed " )
composeTestRule . onNodeWithTag ( " tcp_cfr.action " ) . assertIsDisplayed ( )
Log . i ( TAG , " verifyCookiesProtectionHintIsDisplayed: Verified total cookie protection learn more link is displayed " )
Log . i ( TAG , " verifyCookiesProtectionHintIsDisplayed: Verified that the total cookie protection learn more link is displayed " )
Log . i ( TAG , " verifyCookiesProtectionHintIsDisplayed: Trying to verify that the total cookie protection dismiss button is displayed " )
composeTestRule . onNodeWithTag ( " cfr.dismiss " ) . assertIsDisplayed ( )
Log . i ( TAG , " verifyCookiesProtectionHintIsDisplayed: Verified total cookie protection dismiss button is displayed " )
} else {
Log . i ( TAG , " verifyCookiesProtectionHintIsDisplayed: Trying to verify that the total cookie protection message does not exist " )
composeTestRule . onNodeWithTag ( " tcp_cfr.message " ) . assertDoesNotExist ( )
Log . i ( TAG , " verifyCookiesProtectionHintIsDisplayed: Verified total cookie protection message does not exist " )
Log . i ( TAG , " verifyCookiesProtectionHintIsDisplayed: Verified that the total cookie protection message does not exist " )
Log . i ( TAG , " verifyCookiesProtectionHintIsDisplayed: Trying to verify that the total cookie protection learn more link does not exist " )
composeTestRule . onNodeWithTag ( " tcp_cfr.action " ) . assertDoesNotExist ( )
Log . i ( TAG , " verifyCookiesProtectionHintIsDisplayed: Verified total cookie protection learn more link does not exist " )
Log . i ( TAG , " verifyCookiesProtectionHintIsDisplayed: Trying to verify that the total cookie protection dismiss button does not exist " )
composeTestRule . onNodeWithTag ( " cfr.dismiss " ) . assertDoesNotExist ( )
Log . i ( TAG , " verifyCookiesProtectionHintIsDisplayed: Verified t otal cookie protection dismiss button does not exist" )
Log . i ( TAG , " verifyCookiesProtectionHintIsDisplayed: Verified t hat the t otal cookie protection dismiss button does not exist" )
}
}
fun clickTCPCFRLearnMore ( composeTestRule : HomeActivityComposeTestRule ) {
Log . i ( TAG , " clickTCPCFRLearnMore: Trying to click the total cookie protection learn more link " )
composeTestRule . onNodeWithTag ( " tcp_cfr.action " ) . performClick ( )
Log . i ( TAG , " clickTCPCFRLearnMore: Clicked total cookie protection learn more link " )
}
fun dismissTCPCFRPopup ( composeTestRule : HomeActivityComposeTestRule ) {
Log . i ( TAG , " dismissTCPCFRPopup: Trying to click the total cookie protection dismiss button " )
composeTestRule . onNodeWithTag ( " cfr.dismiss " ) . performClick ( )
Log . i ( TAG , " dismissTCPCFRPopup: Clicked total cookie protection dismiss button " )
}
fun verifyShouldShowCFRTCP ( shouldShow : Boolean , settings : Settings ) {
if ( shouldShow ) {
Log . i ( TAG , " verifyShouldShowCFRTCP: Trying to verify that the TCP CFR should be shown " )
assertTrue ( settings . shouldShowTotalCookieProtectionCFR )
Log . i ( TAG , " verifyShouldShowCFRTCP: Verified that TCP CFR should be shown" )
Log . i ( TAG , " verifyShouldShowCFRTCP: Verified that the TCP CFR should be shown" )
} else {
Log . i ( TAG , " verifyShouldShowCFRTCP: Trying to verify that the TCP CFR should not be shown " )
assertFalse ( settings . shouldShowTotalCookieProtectionCFR )
Log . i ( TAG , " verifyShouldShowCFRTCP: Verified that TCP CFR should not be shown" )
Log . i ( TAG , " verifyShouldShowCFRTCP: Verified that the TCP CFR should not be shown" )
}
}
fun selectTime ( hour : Int , minute : Int ) {
Log . i ( TAG , " selectTime: Trying to select time picker hour: $hour and minute: $minute " )
onView (
isAssignableFrom ( TimePicker :: class . java ) ,
) . inRoot (
@ -674,17 +713,18 @@ class BrowserRobot {
for ( i in 1. . RETRY _COUNT ) {
try {
Log . i ( TAG , " verifySelectedDropDownOption: Started try # $i " )
Log . i ( TAG , " verifySelectedDropDownOption: Looking for \" Submit drop down option \" form button " )
Log . i ( TAG , " verifySelectedDropDownOption: Waiting for $waitingTime ms for \" Submit drop down option \" form button to exist " )
mDevice . findObject (
UiSelector ( )
. textContains ( " Submit drop down option " )
. resourceId ( " submitOption " ) ,
) . waitForExists ( waitingTime )
Log . i ( TAG , " verifySelectedDropDownOption: Waited for $waitingTime ms for \" Submit drop down option \" form button to exist " )
assertUIObjectExists ( itemContainingText ( " Selected option is: $optionName " ) )
break
} catch ( e : AssertionError ) {
Log . i ( TAG , " verifySelectedDropDownOption: AssertionError caught, executing fallback methods " )
Log . e ( TAG , " Selected option isn't displayed ${e.localizedMessage} " )
clickPageObject ( itemWithResId ( " dropDown " ) )
@ -704,16 +744,18 @@ class BrowserRobot {
fun verifyCookieBannerExists ( exists : Boolean ) {
for ( i in 1. . RETRY _COUNT ) {
Log . i ( TAG , " verifyCookieBannerExists: For loop: $i " )
Log . i ( TAG , " verifyCookieBannerExists: Started try # $i " )
try {
// Wait for the blocker to kick-in and make the cookie banner disappear
Log . i ( TAG , " verifyCookieBannerExists: Waiting for $waitingTime ms for cookie banner to be gone " )
itemWithResId ( " CybotCookiebotDialog " ) . waitUntilGone ( waitingTime )
Log . i ( TAG , " verifyCookieBannerExists: Wait ing for window updat e" )
Log . i ( TAG , " verifyCookieBannerExists: Wait ed for $waitingTime ms for cookie banner to be gon e" )
// Assert that the blocker properly dismissed the cookie banner
assertUIObjectExists ( itemWithResId ( " CybotCookiebotDialog " ) , exists = exists )
break
} catch ( e : AssertionError ) {
Log . i ( TAG , " verifyCookieBannerExists: AssertionError caught, executing fallback methods " )
if ( i == RETRY _COUNT ) {
throw e
}
@ -840,11 +882,12 @@ class BrowserRobot {
assertUIObjectExists ( itemWithDescription ( " Close " ) )
fun clickOpenLinksInAppsDismissCFRButton ( ) {
Log . i ( TAG , " clickOpenLinksInAppsDismissCFRButton: Trying to click the open links in apps banner \" Dismiss \" button " )
itemWithResIdContainingText (
" $packageName :id/dismiss " ,
getStringResource ( R . string . open _in _app _cfr _negative _button _text ) ,
) . click ( )
Log . i ( TAG , " clickOpenLinksInAppsDismissCFRButton: Clicked open links in apps banner \" Dismiss \" button " )
Log . i ( TAG , " clickOpenLinksInAppsDismissCFRButton: Clicked the open links in apps banner \" Dismiss \" button " )
}
fun clickTakeSurveyButton ( ) {
@ -871,6 +914,7 @@ class BrowserRobot {
}
fun longClickToolbar ( ) {
Log . i ( TAG , " longClickToolbar: Trying to long click the toolbar " )
onView ( withId ( R . id . mozac _browser _toolbar _url _view ) ) . perform ( longClick ( ) )
Log . i ( TAG , " longClickToolbar: Long clicked the toolbar " )
}
@ -903,27 +947,31 @@ class BrowserRobot {
}
fun clickStayInPrivateBrowsingPromptButton ( ) {
Log . i ( TAG , " clickStayInPrivateBrowsingPromptButton: Trying to click the \" STAY IN PRIVATE BROWSING \" prompt button " )
itemWithResIdContainingText (
" $packageName :id/deny_button " ,
getStringResource ( R . string . mozac _feature _downloads _cancel _active _private _downloads _deny ) ,
) . click ( )
Log . i ( TAG , " clickStayInPrivateBrowsingPromptButton: Clicked \" STAY IN PRIVATE BROWSING \" prompt button " )
Log . i ( TAG , " clickStayInPrivateBrowsingPromptButton: Clicked the \" STAY IN PRIVATE BROWSING \" prompt button " )
}
fun clickCancelPrivateDownloadsPromptButton ( ) {
Log . i ( TAG , " clickCancelPrivateDownloadsPromptButton: Trying to click the \" CANCEL DOWNLOADS \" prompt button " )
itemWithResIdContainingText (
" $packageName :id/accept_button " ,
getStringResource ( R . string . mozac _feature _downloads _cancel _active _downloads _accept ) ,
) . click ( )
Log . i ( TAG , " clickCancelPrivateDownloadsPromptButton: Clicked \" CANCEL DOWNLOADS \" prompt button " )
Log . i ( TAG , " clickCancelPrivateDownloadsPromptButton: Clicked the \" CANCEL DOWNLOADS \" prompt button " )
Log . i ( TAG , " clickCancelPrivateDownloadsPromptButton: Waiting for $waitingTime ms for $packageName window to be updated " )
mDevice . waitForWindowUpdate ( packageName , waitingTime )
Log . i ( TAG , " clickCancelPrivateDownloadsPromptButton: Waited for $waitingTime ms for $packageName window to be updated " )
}
fun fillPdfForm ( name : String ) {
// Set PDF form text for the text box
Log . i ( TAG , " fillPdfForm: Trying to set the text of the PDF form text box to: $name " )
itemWithResId ( " pdfjs_internal_id_10R " ) . setText ( name )
Log . i ( TAG , " fillPdfForm: Set PDF form text box text to: $name " )
Log . i ( TAG , " fillPdfForm: PDF form text box text was se t to: $name " )
mDevice . waitForWindowUpdate ( packageName , waitingTime )
if (
! itemWithResId ( " pdfjs_internal_id_11R " ) . exists ( ) &&
@ -932,18 +980,22 @@ class BrowserRobot {
. contains ( " mInputShown=true " )
) {
// Close the keyboard
Log . i ( TAG , " fillPdfForm: Trying to close the keyboard using device back button " )
mDevice . pressBack ( )
Log . i ( TAG , " fillPdfForm: Clos ing the keyboard using device back button" )
Log . i ( TAG , " fillPdfForm: Clos ed the keyboard using device back button" )
}
// Click PDF form check box
Log . i ( TAG , " fillPdfForm: Trying to click the PDF form check box " )
itemWithResId ( " pdfjs_internal_id_11R " ) . click ( )
Log . i ( TAG , " fillPdfForm: Clicked PDF form check box " )
}
class Transition {
fun openThreeDotMenu ( interact : ThreeDotMenuMainRobot . ( ) -> Unit ) : ThreeDotMenuMainRobot . Transition {
Log . i ( TAG , " openThreeDotMenu: Waiting for device to be idle for $waitingTime ms " )
mDevice . waitForIdle ( waitingTime )
Log . i ( TAG , " openThreeDotMenu: Device was idle for $waitingTime ms " )
Log . i ( TAG , " openThreeDotMenu: Trying to click the main menu button " )
threeDotButton ( ) . perform ( click ( ) )
Log . i ( TAG , " openThreeDotMenu: Clicked the main menu button " )
@ -953,8 +1005,9 @@ class BrowserRobot {
fun openNavigationToolbar ( interact : NavigationToolbarRobot . ( ) -> Unit ) : NavigationToolbarRobot . Transition {
clickPageObject ( navURLBar ( ) )
Log . i ( TAG , " openNavigationToolbar: Looking for search bar " )
Log . i ( TAG , " openNavigationToolbar: Waiting for $waitingTime ms for for search bar to exist " )
searchBar ( ) . waitForExists ( waitingTime )
Log . i ( TAG , " openNavigationToolbar: Waited for $waitingTime ms for for search bar to exist " )
NavigationToolbarRobot ( ) . interact ( )
return NavigationToolbarRobot . Transition ( )
@ -971,7 +1024,7 @@ class BrowserRobot {
) ,
waitingTime ,
)
Log . i ( TAG , " openTabDrawer: Trying to click the tab counter button " )
tabsCounter ( ) . click ( )
Log . i ( TAG , " openTabDrawer: Clicked the tab counter button " )
assertUIObjectExists ( itemWithResId ( " $packageName :id/new_tab_button " ) )
@ -982,8 +1035,9 @@ class BrowserRobot {
if ( i == RETRY _COUNT ) {
throw e
} else {
Log . i ( TAG , " openTabDrawer: Waiting for device to be idle " )
mDevice . waitForIdle ( )
Log . i ( TAG , " openTabDrawer: Device waited to be idle" )
Log . i ( TAG , " openTabDrawer: Waited for device to be idle" )
}
}
}
@ -1005,10 +1059,10 @@ class BrowserRobot {
) ,
waitingTime ,
)
Log . i ( TAG , " openComposeTabDrawer: Trying to click the tab counter button " )
tabsCounter ( ) . click ( )
Log . i ( TAG , " openComposeTabDrawer: Clicked the tab counter button " )
Log . i ( TAG , " openComposeTabDrawer: Trying to verify the tabs tray exists " )
composeTestRule . onNodeWithTag ( TabsTrayTestTag . tabsTray ) . assertExists ( )
Log . i ( TAG , " openComposeTabDrawer: Verified the tabs tray exists " )
@ -1018,22 +1072,24 @@ class BrowserRobot {
if ( i == RETRY _COUNT ) {
throw e
} else {
Log . i ( TAG , " openComposeTabDrawer: Waiting for device to be idle " )
mDevice . waitForIdle ( )
Log . i ( TAG , " openComposeTabDrawer: Device waited to be idle" )
Log . i ( TAG , " openComposeTabDrawer: Waited for device to be idle" )
}
}
}
Log . i ( TAG , " openComposeTabDrawer: Trying to verify the tabs tray new tab FAB button exists " )
composeTestRule . onNodeWithTag ( TabsTrayTestTag . fab ) . assertExists ( )
Log . i ( TAG , " openComposeTabDrawer: Verified the tabs tray new tab button exists" )
Log . i ( TAG , " openComposeTabDrawer: Verified the tabs tray new tab FAB button exists" )
ComposeTabDrawerRobot ( composeTestRule ) . interact ( )
return ComposeTabDrawerRobot . Transition ( composeTestRule )
}
fun openNotificationShade ( interact : NotificationRobot . ( ) -> Unit ) : NotificationRobot . Transition {
Log . i ( TAG , " openNotificationShade: Trying to open the notification tray " )
mDevice . openNotification ( )
Log . i ( TAG , " openNotificationShade: Opened notification tray" )
Log . i ( TAG , " openNotificationShade: Opened the notification tray" )
NotificationRobot ( ) . interact ( )
return NotificationRobot . Transition ( )
@ -1041,8 +1097,7 @@ class BrowserRobot {
fun goToHomescreen ( interact : HomeScreenRobot . ( ) -> Unit ) : HomeScreenRobot . Transition {
clickPageObject ( itemWithDescription ( " Home screen " ) )
Log . i ( TAG , " goToHomescreen: Looking for home screen layout or jump back in contextual hint " )
Log . i ( TAG , " goToHomescreen: Waiting for $waitingTime ms for for home screen layout or jump back in contextual hint to exist " )
mDevice . findObject ( UiSelector ( ) . resourceId ( " $packageName :id/homeLayout " ) )
. waitForExists ( waitingTime ) ||
mDevice . findObject (
@ -1050,6 +1105,7 @@ class BrowserRobot {
getStringResource ( R . string . onboarding _home _screen _jump _back _contextual _hint _2 ) ,
) ,
) . waitForExists ( waitingTime )
Log . i ( TAG , " goToHomescreen: Waited for $waitingTime ms for for home screen layout or jump back in contextual hint to exist " )
HomeScreenRobot ( ) . interact ( )
return HomeScreenRobot . Transition ( )
@ -1058,7 +1114,7 @@ class BrowserRobot {
fun goToHomescreenWithComposeTopSites ( composeTestRule : HomeActivityComposeTestRule , interact : ComposeTopSitesRobot . ( ) -> Unit ) : ComposeTopSitesRobot . Transition {
clickPageObject ( itemWithDescription ( " Home screen " ) )
Log . i ( TAG , " goToHomescreenWithComposeTopSites: Looking for home screen layout or jump back in contextual hint" )
Log . i ( TAG , " goToHomescreenWithComposeTopSites: Waiting for $waitingTime ms for for home screen layout or jump back in contextual hint to exis t" )
mDevice . findObject ( UiSelector ( ) . resourceId ( " $packageName :id/homeLayout " ) )
. waitForExists ( waitingTime ) ||
mDevice . findObject (
@ -1066,12 +1122,14 @@ class BrowserRobot {
getStringResource ( R . string . onboarding _home _screen _jump _back _contextual _hint _2 ) ,
) ,
) . waitForExists ( waitingTime )
Log . i ( TAG , " goToHomescreenWithComposeTopSites: Waited for $waitingTime ms for for home screen layout or jump back in contextual hint to exist " )
ComposeTopSitesRobot ( composeTestRule ) . interact ( )
return ComposeTopSitesRobot . Transition ( composeTestRule )
}
fun goBack ( interact : HomeScreenRobot . ( ) -> Unit ) : HomeScreenRobot . Transition {
Log . i ( TAG , " goBack: Trying to click device back button " )
mDevice . pressBack ( )
Log . i ( TAG , " goBack: Clicked device back button " )
@ -1081,7 +1139,9 @@ class BrowserRobot {
fun clickTabCrashedCloseButton ( interact : HomeScreenRobot . ( ) -> Unit ) : HomeScreenRobot . Transition {
clickPageObject ( itemWithText ( " Close tab " ) )
Log . i ( TAG , " clickTabCrashedCloseButton: Waiting for device to be idle " )
mDevice . waitForIdle ( )
Log . i ( TAG , " clickTabCrashedCloseButton: Waited for device to be idle " )
HomeScreenRobot ( ) . interact ( )
return HomeScreenRobot . Transition ( )
@ -1167,50 +1227,56 @@ class BrowserRobot {
}
fun openSiteSecuritySheet ( interact : SiteSecurityRobot . ( ) -> Unit ) : SiteSecurityRobot . Transition {
Log . i ( TAG , " openSiteSecuritySheet: Looking for site security toolbar button " )
Log . i ( TAG , " openSiteSecuritySheet: Waiting for $waitingTime ms for site security toolbar button to exist " )
siteSecurityToolbarButton ( ) . waitForExists ( waitingTime )
Log . i ( TAG , " openSiteSecuritySheet: Waited for $waitingTime ms for site security toolbar button to exist " )
Log . i ( TAG , " openSiteSecuritySheet: Trying to click the site security toolbar button and wait for $waitingTime ms for a new window " )
siteSecurityToolbarButton ( ) . clickAndWaitForNewWindow ( waitingTime )
Log . i ( TAG , " openSiteSecuritySheet: Clicked site security toolbar button " )
Log . i ( TAG , " openSiteSecuritySheet: Clicked the site security toolbar button and waited for $waitingTime ms for a new window " )
SiteSecurityRobot ( ) . interact ( )
return SiteSecurityRobot . Transition ( )
}
fun clickManageAddressButton ( interact : SettingsSubMenuAutofillRobot . ( ) -> Unit ) : SettingsSubMenuAutofillRobot . Transition {
Log . i ( TAG , " clickManageAddressButton: Trying to click the manage address button and wait for $waitingTime ms for a new window " )
itemWithResId ( " $packageName :id/manage_addresses " )
. clickAndWaitForNewWindow ( waitingTime )
Log . i ( TAG , " clickManageAddressButton: Clicked manage address button" )
Log . i ( TAG , " clickManageAddressButton: Clicked the manage address button and waited for $waitingTime ms for a new window " )
SettingsSubMenuAutofillRobot ( ) . interact ( )
return SettingsSubMenuAutofillRobot . Transition ( )
}
fun clickManageCreditCardsButton ( interact : SettingsSubMenuAutofillRobot . ( ) -> Unit ) : SettingsSubMenuAutofillRobot . Transition {
Log . i ( TAG , " clickManageCreditCardsButton: Trying to click the manage credit cards button and wait for $waitingTime ms for a new window " )
itemWithResId ( " $packageName :id/manage_credit_cards " )
. clickAndWaitForNewWindow ( waitingTime )
Log . i ( TAG , " clickManageCreditCardsButton: Clicked manage credit cards button" )
Log . i ( TAG , " clickManageCreditCardsButton: Clicked the manage credit cards button and waited for $waitingTime ms for a new window " )
SettingsSubMenuAutofillRobot ( ) . interact ( )
return SettingsSubMenuAutofillRobot . Transition ( )
}
fun clickOpenLinksInAppsGoToSettingsCFRButton ( interact : SettingsRobot . ( ) -> Unit ) : SettingsRobot . Transition {
Log . i ( TAG , " clickOpenLinksInAppsGoToSettingsCFRButton: Trying to click the \" Go to settings \" open links in apps CFR button and wait for $waitingTime ms for a new window " )
itemWithResIdContainingText (
" $packageName :id/action " ,
getStringResource ( R . string . open _in _app _cfr _positive _button _text ) ,
) . clickAndWaitForNewWindow ( waitingTime )
Log . i ( TAG , " clickOpenLinksInAppsGoToSettingsCFRButton: Clicked \" Go to settings \" open links in apps CFR button " )
Log . i ( TAG , " clickOpenLinksInAppsGoToSettingsCFRButton: Clicked the \" Go to settings \" open links in apps CFR button and waited for $waitingTime ms for a new window " )
SettingsRobot ( ) . interact ( )
return SettingsRobot . Transition ( )
}
fun clickDownloadPDFButton ( interact : DownloadRobot . ( ) -> Unit ) : DownloadRobot . Transition {
Log . i ( TAG , " clickDownloadPDFButton: Trying to click the download PDF button " )
itemWithResIdContainingText (
" download " ,
" Download " ,
) . click ( )
Log . i ( TAG , " clickDownloadPDFButton: Clicked download PDF button" )
Log . i ( TAG , " clickDownloadPDFButton: Clicked the download PDF button" )
DownloadRobot ( ) . interact ( )
return DownloadRobot . Transition ( )
@ -1270,8 +1336,10 @@ fun clickPageObject(item: UiObject) {
for ( i in 1. . RETRY _COUNT ) {
try {
Log . i ( TAG , " clickPageObject: Started try # $i " )
Log . i ( TAG , " clickPageObject: Looking for ${item.selector} " )
Log . i ( TAG , " clickPageObject: Waiting for $waitingTime ms for ${item.selector} to exist " )
item . waitForExists ( waitingTime )
Log . i ( TAG , " clickPageObject: Waited for $waitingTime ms for ${item.selector} to exist " )
Log . i ( TAG , " clickPageObject: Trying to click ${item.selector} " )
item . click ( )
Log . i ( TAG , " clickPageObject: Clicked ${item.selector} " )
@ -1295,8 +1363,10 @@ fun longClickPageObject(item: UiObject) {
for ( i in 1. . RETRY _COUNT ) {
try {
Log . i ( TAG , " longClickPageObject: Started try # $i " )
Log . i ( TAG , " longClickPageObject: Looking for ${item.selector} " )
Log . i ( TAG , " longClickPageObject: Waiting for $waitingTime ms for ${item.selector} to exist " )
item . waitForExists ( waitingTime )
Log . i ( TAG , " longClickPageObject: Waited for $waitingTime ms for ${item.selector} to exist " )
Log . i ( TAG , " longClickPageObject: Trying to long click ${item.selector} " )
item . longClick ( )
Log . i ( TAG , " longClickPageObject: Long clicked ${item.selector} " )
@ -1321,21 +1391,25 @@ fun clickContextMenuItem(item: String) {
Until . findObject ( text ( item ) ) ,
waitingTime ,
)
Log . i ( TAG , " clickContextMenuItem: Trying to click context menu item: $item " )
mDevice . findObject ( text ( item ) ) . click ( )
Log . i ( TAG , " longClickPageObject : Clicked context menu item: $item " )
Log . i ( TAG , " clickContextMenuItem : Clicked context menu item: $item " )
}
fun setPageObjectText ( webPageItem : UiObject , text : String ) {
for ( i in 1. . RETRY _COUNT ) {
Log . i ( TAG , " setPageObjectText: For loop i = $i " )
Log . i ( TAG , " setPageObjectText: Started try # $i " )
try {
webPageItem . also {
Log . i ( TAG , " setPageObjectText: Looking for ${webPageItem.selector} " )
Log . i ( TAG , " setPageObjectText: Waiting for $waitingTime ms for ${webPageItem.selector} to exist " )
it . waitForExists ( waitingTime )
Log . i ( TAG , " setPageObjectText: Waited for $waitingTime ms for ${webPageItem.selector} to exist " )
Log . i ( TAG , " setPageObjectText: Trying to clear ${webPageItem.selector} text field " )
it . clearTextField ( )
Log . i ( TAG , " setPageObjectText: Cleared ${webPageItem.selector} text field " )
Log . i ( TAG , " setPageObjectText: Trying to set ${webPageItem.selector} text to $text " )
it . text = text
Log . i ( TAG , " setPageObjectText: ${webPageItem.selector} text set to $text " )
Log . i ( TAG , " setPageObjectText: ${webPageItem.selector} text was set to $text " )
}
break
@ -1355,8 +1429,10 @@ fun setPageObjectText(webPageItem: UiObject, text: String) {
}
fun clearTextFieldItem ( item : UiObject ) {
Log . i ( TAG , " clearTextFieldItem: Looking for ${item.selector} " )
Log . i ( TAG , " clearTextFieldItem: Waiting for $waitingTime ms for ${item.selector} to exist " )
item . waitForExists ( waitingTime )
Log . i ( TAG , " clearTextFieldItem: Waited for $waitingTime ms for ${item.selector} to exist " )
Log . i ( TAG , " clearTextFieldItem: Trying to clear ${item.selector} text field " )
item . clearTextField ( )
Log . i ( TAG , " clearTextFieldItem: Cleared ${item.selector} text field " )
}