1
0
Fork 0
fenix/app/src/androidTest/java/org/mozilla/fenix/screenshots/MenuScreenShotTest.kt

243 lines
8.5 KiB
Kotlin

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.fenix.screenshots
import android.os.SystemClock
import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.matcher.ViewMatchers.withId
import androidx.test.espresso.matcher.ViewMatchers.withText
import androidx.test.rule.ActivityTestRule
import androidx.test.uiautomator.By
import androidx.test.uiautomator.Until
import tools.fastlane.screengrab.Screengrab
import tools.fastlane.screengrab.locale.LocaleTestRule
import okhttp3.mockwebserver.MockWebServer
import org.junit.After
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R
import org.mozilla.fenix.helpers.AndroidAssetDispatcher
import org.mozilla.fenix.helpers.HomeActivityTestRule
import org.mozilla.fenix.helpers.TestAssetHelper
import org.mozilla.fenix.helpers.click
import org.mozilla.fenix.helpers.ext.waitNotNull
import org.mozilla.fenix.ui.robots.homeScreen
import org.mozilla.fenix.ui.robots.bookmarksMenu
import org.mozilla.fenix.ui.robots.mDevice
import org.mozilla.fenix.ui.robots.navigationToolbar
import org.mozilla.fenix.ui.robots.swipeToBottom
class MenuScreenShotTest : ScreenshotTest() {
private lateinit var mockWebServer: MockWebServer
@Rule
@JvmField
val localeTestRule = LocaleTestRule()
@get:Rule
var mActivityTestRule: ActivityTestRule<HomeActivity> = HomeActivityTestRule()
@Before
fun setUp() {
mockWebServer = MockWebServer().apply {
setDispatcher(AndroidAssetDispatcher())
start()
}
}
@After
fun tearDown() {
mActivityTestRule.getActivity().finishAndRemoveTask()
mockWebServer.shutdown()
}
@Test
fun threeDotMenuTest() {
homeScreen {
}.openThreeDotMenu {
Screengrab.screenshot("ThreeDotMenuMainRobot_three-dot-menu")
}
}
@Test
fun settingsTest() {
homeScreen {
}.openThreeDotMenu {
}.openSettings {
Screengrab.screenshot("SettingsRobot_settings-menu")
settingsAccountPreferences()
Screengrab.screenshot("AccountSettingsRobot_settings-account")
mDevice.pressBack()
settingsSearch()
Screengrab.screenshot("SettingsSubMenuSearchRobot_settings-search")
mDevice.pressBack()
settingsTheme()
Screengrab.screenshot("SettingsSubMenuThemeRobot_settings-theme")
mDevice.pressBack()
settingsAccessibility()
Screengrab.screenshot("SettingsSubMenuAccessibilityRobot_settings-accessibility")
mDevice.pressBack()
settingsLanguage()
Screengrab.screenshot("SettingsSubMenuAccessibilityRobot_settings-language")
mDevice.pressBack()
settingDefaultBrowser()
Screengrab.screenshot("SettingsSubMenuDefaultBrowserRobot_settings-default-browser")
mDevice.pressBack()
// Disabled for Pixel 2
// settingsTP()
// Screengrab.screenshot("settings-enhanced-tp")
// mDevice.pressBack()
loginsAndPassword()
Screengrab.screenshot("SettingsSubMenuLoginsAndPasswords-settings-logins-passwords")
mDevice.pressBack()
swipeToBottom()
Screengrab.screenshot("SettingsRobot_settings-scroll-to-bottom")
settingsTelemetry()
Screengrab.screenshot("settings-telemetry")
mDevice.pressBack()
addOns()
Screengrab.screenshot("settings-addons")
}
}
@Test
fun historyTest() {
homeScreen {
}.openThreeDotMenu {
}
openHistoryThreeDotMenu()
Screengrab.screenshot("HistoryRobot_history-menu")
}
@Test
fun bookmarksManagementTest() {
homeScreen {
}.openThreeDotMenu {
}
openBookmarksThreeDotMenu()
Screengrab.screenshot("BookmarksRobot_bookmarks-menu")
bookmarksMenu {
clickAddFolderButtonUsingId()
Screengrab.screenshot("BookmarksRobot_add-folder-view")
saveNewFolder()
Screengrab.screenshot("BookmarksRobot_error-empty-folder-name")
addNewFolderName("test")
saveNewFolder()
}.openThreeDotMenu("test") {
Screengrab.screenshot("ThreeDotMenuBookmarksRobot_folder-menu")
}
editBookmarkFolder()
Screengrab.screenshot("ThreeDotMenuBookmarksRobot_edit-bookmark-folder-menu")
// It may be needed to wait here to have the screenshot
mDevice.pressBack()
bookmarksMenu {
}.openThreeDotMenu("test") {
deleteBookmarkFolder()
Screengrab.screenshot("ThreeDotMenuBookmarksRobot_delete-bookmark-folder-menu")
}
}
@Test
fun collectionMenuTest() {
val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
navigationToolbar {
Screengrab.screenshot("NavigationToolbarRobot_navigation-toolbar")
}.enterURLAndEnterToBrowser(defaultWebPage.url) {
Screengrab.screenshot("BrowserRobot_enter-url")
}.openTabDrawer {
TestAssetHelper.waitingTime
Screengrab.screenshot("TabDrawerRobot_one-tab-open")
}.openTabsListThreeDotMenu {
TestAssetHelper.waitingTime
Screengrab.screenshot("TabDrawerRobot_three-dot-menu")
}
}
@Test
fun tabMenuTest() {
val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
navigationToolbar {
}.enterURLAndEnterToBrowser(defaultWebPage.url) {
}.openThreeDotMenu {
Screengrab.screenshot("TabDrawerRobot_browser-tab-menu")
}.closeBrowserMenuToBrowser {
}.openTabDrawer {
Screengrab.screenshot("TabDrawerRobot_tab-drawer-with-tabs")
closeTab()
TestAssetHelper.waitingTime
Screengrab.screenshot("TabDrawerRobot_remove-tab")
}
}
@Test
fun saveLoginPromptTest() {
val saveLoginTest =
TestAssetHelper.getSaveLoginAsset(mockWebServer)
navigationToolbar {
}.enterURLAndEnterToBrowser(saveLoginTest.url) {
verifySaveLoginPromptIsShownNotSave()
SystemClock.sleep(TestAssetHelper.waitingTimeShort)
Screengrab.screenshot("save-login-prompt")
}
}
}
fun openHistoryThreeDotMenu() = onView(withText(R.string.library_history)).click()
fun openBookmarksThreeDotMenu() = onView(withText(R.string.library_bookmarks)).click()
fun editBookmarkFolder() = onView(withText(R.string.bookmark_menu_edit_button)).click()
fun deleteBookmarkFolder() = onView(withText(R.string.bookmark_menu_delete_button)).click()
fun saveToCollectionButton() = onView(withId(R.id.save_tab_group_button)).click()
fun tapOnTabCounter() = onView(withId(R.id.counter_text)).click()
fun settingsAccountPreferences() = onView(withText(R.string.preferences_sync)).click()
fun settingsSearch() = onView(withText(R.string.preferences_search)).click()
fun settingsTheme() = onView(withText(R.string.preferences_customize)).click()
fun settingsAccessibility() = onView(withText(R.string.preferences_accessibility)).click()
fun settingDefaultBrowser() = onView(withText(R.string.preferences_set_as_default_browser)).click()
fun settingsToolbar() = onView(withText(R.string.preferences_toolbar)).click()
fun settingsTP() = onView(withText(R.string.preference_enhanced_tracking_protection)).click()
fun settingsAddToHomeScreen() = onView(withText(R.string.preferences_add_private_browsing_shortcut)).click()
fun settingsRemoveData() = onView(withText(R.string.preferences_delete_browsing_data)).click()
fun settingsTelemetry() = onView(withText(R.string.preferences_data_collection)).click()
fun loginsAndPassword() = onView(withText(R.string.preferences_passwords_logins_and_passwords)).click()
fun addOns() = onView(withText(R.string.preferences_addons)).click()
fun settingsLanguage() = onView(withText(R.string.preferences_language)).click()
fun verifySaveLoginPromptIsShownNotSave() {
mDevice.waitNotNull(Until.findObjects(By.text("test@example.com")), TestAssetHelper.waitingTime)
val submitButton = mDevice.findObject(By.res("submit"))
submitButton.clickAndWait(Until.newWindow(), TestAssetHelper.waitingTime)
}
fun clickAddFolderButtonUsingId() = onView(withId(R.id.add_bookmark_folder)).click()