From 1d047368844c7d15d1ab94d03a848cbb16fb8107 Mon Sep 17 00:00:00 2001 From: isabelrios Date: Tue, 10 Dec 2019 12:05:47 +0100 Subject: [PATCH] Re-enable Screenshots tests (#6617) disabling setting test options due to different screen sizes name screenshots according to robots fix kotlin style update settings tests with new Toolbar option screenshots tests in different package than ui tests --- app/build.gradle | 4 +- .../screenshots/DefaultHomeScreenTest.kt | 52 ++++ .../fenix/screenshots/MenuScreenShotTest.kt | 223 ++++++++++++++++ .../fenix/screenshots/ScreenshotTest.java | 73 ++++++ .../fenix/ui/robots/HomeScreenRobot.kt | 27 +- .../mozilla/fenix/ui/robots/SettingsRobot.kt | 6 +- .../fenix/ui/robots/ThreeDotMenuMainRobot.kt | 17 +- .../ui/screenshots/DefaultHomeScreenTest.kt | 71 ----- .../ui/screenshots/MenuScreenShotTest.kt | 242 ------------------ .../fenix/ui/screenshots/ScreenshotTest.java | 75 ------ 10 files changed, 387 insertions(+), 403 deletions(-) create mode 100644 app/src/androidTest/java/org/mozilla/fenix/screenshots/DefaultHomeScreenTest.kt create mode 100644 app/src/androidTest/java/org/mozilla/fenix/screenshots/MenuScreenShotTest.kt create mode 100644 app/src/androidTest/java/org/mozilla/fenix/screenshots/ScreenshotTest.java delete mode 100644 app/src/androidTest/java/org/mozilla/fenix/ui/screenshots/DefaultHomeScreenTest.kt delete mode 100644 app/src/androidTest/java/org/mozilla/fenix/ui/screenshots/MenuScreenShotTest.kt delete mode 100644 app/src/androidTest/java/org/mozilla/fenix/ui/screenshots/ScreenshotTest.java diff --git a/app/build.gradle b/app/build.gradle index 097d35a47..2f7107f95 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -482,9 +482,9 @@ dependencies { androidTestImplementation Deps.uiautomator // Removed pending AndroidX fixes -// androidTestImplementation "tools.fastlane:screengrab:1.2.0" + androidTestImplementation "tools.fastlane:screengrab:2.0.0" // androidTestImplementation "br.com.concretesolutions:kappuccino:1.2.1" - + androidTestImplementation Deps.espresso_core, { exclude group: 'com.android.support', module: 'support-annotations' } diff --git a/app/src/androidTest/java/org/mozilla/fenix/screenshots/DefaultHomeScreenTest.kt b/app/src/androidTest/java/org/mozilla/fenix/screenshots/DefaultHomeScreenTest.kt new file mode 100644 index 000000000..ded994f9f --- /dev/null +++ b/app/src/androidTest/java/org/mozilla/fenix/screenshots/DefaultHomeScreenTest.kt @@ -0,0 +1,52 @@ +/* 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 androidx.test.rule.ActivityTestRule +import org.junit.After +import org.junit.Rule +import org.junit.Test +import org.mozilla.fenix.helpers.HomeActivityTestRule +import org.mozilla.fenix.HomeActivity +import org.mozilla.fenix.ui.robots.homeScreen +import org.mozilla.fenix.ui.robots.mDevice +import tools.fastlane.screengrab.Screengrab +import tools.fastlane.screengrab.locale.LocaleTestRule + +class DefaultHomeScreenTest : ScreenshotTest() { + @Rule @JvmField + val localeTestRule = LocaleTestRule() + @get:Rule + var mActivityTestRule: ActivityTestRule = HomeActivityTestRule() + + @After + fun tearDown() { + mActivityTestRule.getActivity().finishAndRemoveTask() + } + + @Test + fun showDefaultHomeScreen() { + homeScreen { + verifyAccountsSignInButton() + Screengrab.screenshot("HomeScreenRobot_home-screen") + swipeToBottom() + Screengrab.screenshot("HomeScreenRobot_home-screen-scroll") + } + } + + @Test + fun privateBrowsingTest() { + homeScreen { + }.openThreeDotMenu { + }.openSettings { } + // To get private screenshot, + // dismiss onboarding going to settings and back + mDevice.pressBack() + homeScreen { + togglePrivateBrowsingModeOnOff() + Screengrab.screenshot("HomeScreenRobot_private-browsing-menu") + } + } +} diff --git a/app/src/androidTest/java/org/mozilla/fenix/screenshots/MenuScreenShotTest.kt b/app/src/androidTest/java/org/mozilla/fenix/screenshots/MenuScreenShotTest.kt new file mode 100644 index 000000000..909d035c1 --- /dev/null +++ b/app/src/androidTest/java/org/mozilla/fenix/screenshots/MenuScreenShotTest.kt @@ -0,0 +1,223 @@ +/* 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 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 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.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 = 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() + + settingDefaultBrowser() + Screengrab.screenshot("SettingsSubMenuDefaultBrowserRobot_settings-default-browser") + mDevice.pressBack() + + settingsToolbar() + Screengrab.screenshot("SettingsSubMenuDefaultBrowserRobot_settings-toolbar") + mDevice.pressBack() + + // Need to find a way to swipe only a little to get all the options in all screensizes + // settingsTP() + // Screengrab.screenshot("settings-enhanced-tp") + // mDevice.pressBack() + + // Need to find a way to swipe only a little to get all the options in all screensizes + // settingsAddToHomeScreen() + // Screengrab.screenshot("settings-add-to-homescreen") + // mDevice.pressBack() + + // Wee need this but this way not going to work in other languages. Need a workaround to not use Sleep + // mDevice.waitNotNull(Until.findObjects(By.text("Delete browsing data on quit")), TestAssetHelper.waitingTime) + // settingsRemoveData() + // Screengrab.screenshot("settings-delete-browsing-data") + // device.pressBack() + + swipeToBottom() + Screengrab.screenshot("SettingsRobot_settings-scroll-to-bottom") + + settingsTelemetry() + Screengrab.screenshot("settings-telemetry") + } + } + + @Test + fun historyTest() { + homeScreen { + }.openThreeDotMenu { + } + openHistoryThreeDotMenu() + Screengrab.screenshot("HistoryRobot_history-menu") + } + + @Test + fun bookmarksManagementTest() { + homeScreen { + }.openThreeDotMenu { + } + openBookmarksThreeDotMenu() + Screengrab.screenshot("BookmarksRobot_bookmarks-menu") + bookmarksMenu { + clickAddFolderButton() + Screengrab.screenshot("BookmarksRobot_add-folder-view") + saveNewFolder() + Screengrab.screenshot("BookmarksRobot_error-empty-folder-name") + addNewFolderName("test") + saveNewFolder() + }.openThreeDotMenu { + 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 { + 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") + } + tapOnTabCounter() + // Homescreen with visited tabs + Screengrab.screenshot("HomeScreenRobot_homescreen-with-tabs-open") + homeScreen { + }.openTabsListThreeDotMenu { + Screengrab.screenshot("open-tabs-menu") + }.close { + // It may be needed to wait here for tests working on Firebase + saveToCollectionButton() + Screengrab.screenshot("HomeScreenRobot_save-collection-view") + typeCollectionName("CollectionName") + mDevice.pressBack() + // It may be needed to wait here for tests working on Firebase + Screengrab.screenshot("HomeScreenRobot_saved-collection") + } + } + + @Test + fun tabMenuTest() { + val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1) + navigationToolbar { + }.enterURLAndEnterToBrowser(defaultWebPage.url) { + }.openThreeDotMenu { + Screengrab.screenshot("browser-tab-menu") + }.closeBrowserMenuToBrowser { + }.openHomeScreen { + Screengrab.screenshot("homescree-with-tabs") + closeTab() + Screengrab.screenshot("remove-tab") + } + } +} + +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_theme)).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() diff --git a/app/src/androidTest/java/org/mozilla/fenix/screenshots/ScreenshotTest.java b/app/src/androidTest/java/org/mozilla/fenix/screenshots/ScreenshotTest.java new file mode 100644 index 000000000..0af7fbf72 --- /dev/null +++ b/app/src/androidTest/java/org/mozilla/fenix/screenshots/ScreenshotTest.java @@ -0,0 +1,73 @@ + /* 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.Manifest; + import android.app.Instrumentation; + import android.content.Context; + import androidx.annotation.StringRes; + import androidx.test.platform.app.InstrumentationRegistry; + import androidx.test.rule.GrantPermissionRule; + import androidx.test.uiautomator.UiDevice; + + import org.junit.Before; + import org.junit.Rule; + import org.junit.rules.TestRule; + import org.junit.rules.TestWatcher; + import org.junit.runner.Description; + + import tools.fastlane.screengrab.Screengrab; + import tools.fastlane.screengrab.UiAutomatorScreenshotStrategy; + + /** + * Base class for tests that take screenshots. + */ + public abstract class ScreenshotTest { + + private Context targetContext; + + UiDevice device; + + @Rule + public GrantPermissionRule permissionRule = GrantPermissionRule.grant(Manifest.permission.WRITE_EXTERNAL_STORAGE); + + @Rule + public TestRule screenshotOnFailureRule = new TestWatcher() { + @Override + protected void failed(Throwable e, Description description) { + // On error take a screenshot so that we can debug it easily + Screengrab.screenshot("FAILURE-" + getScreenshotName(description)); + } + + private String getScreenshotName(Description description) { + return description.getClassName().replace(".", "-") + + "_" + + description.getMethodName().replace(".", "-"); + } + }; + + @Before + public void setUpScreenshots() { + Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation(); + targetContext = instrumentation.getTargetContext(); + device = UiDevice.getInstance(instrumentation); + + // Use this to switch between default strategy and HostScreencap strategy + Screengrab.setDefaultScreenshotStrategy(new UiAutomatorScreenshotStrategy()); + } + + String getString(@StringRes int resourceId) { + return targetContext.getString(resourceId).trim(); + } + + String getString(@StringRes int resourceId, Object... formatArgs) { + return targetContext.getString(resourceId, formatArgs).trim(); + } + + public void takeScreenshotsAfterWait(String filename, int waitingTime) throws InterruptedException { + Thread.sleep(waitingTime); + Screengrab.screenshot(filename); + } + } 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 1db2d17a9..e2b2d8be1 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 @@ -15,9 +15,7 @@ import androidx.test.espresso.matcher.ViewMatchers import androidx.test.espresso.matcher.ViewMatchers.Visibility import androidx.test.espresso.matcher.ViewMatchers.isDisplayed import androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility -import androidx.test.espresso.matcher.ViewMatchers.hasFocus import androidx.test.espresso.matcher.ViewMatchers.withId -import androidx.test.espresso.matcher.ViewMatchers.withText import androidx.test.platform.app.InstrumentationRegistry import androidx.test.uiautomator.Until import androidx.test.uiautomator.By @@ -30,7 +28,7 @@ import org.hamcrest.Matchers.containsString import org.mozilla.fenix.R import org.mozilla.fenix.helpers.click import org.mozilla.fenix.helpers.TestAssetHelper.waitingTime -import org.mozilla.fenix.helpers.click +import org.mozilla.fenix.helpers.ext.waitNotNull /** * Implementation of Robot Pattern for the home screen menu. @@ -87,23 +85,23 @@ class HomeScreenRobot { // Collections element fun clickCollectionThreeDotButton() { collectionThreeDotButton().click() - mDevice.wait(Until.findObject(By.text("Delete collection")), waitingTime) + mDevice.waitNotNull(Until.findObject(By.text("Delete collection")), waitingTime) } fun selectRenameCollection() { onView(allOf(ViewMatchers.withText("Rename collection"))).click() - mDevice.wait(Until.findObject(By.res("org.mozilla.fenix.debug:id/name_collection_edittext")), waitingTime) + mDevice.waitNotNull(Until.findObject(By.res("name_collection_edittext"))) } fun selectDeleteCollection() { onView(allOf(ViewMatchers.withText("Delete collection"))).click() - mDevice.wait(Until.findObject(By.res("message")), waitingTime) + mDevice.waitNotNull(Until.findObject(By.res("message")), waitingTime) } fun confirmDeleteCollection() { onView(allOf(ViewMatchers.withText("DELETE"))).click() - mDevice.wait(Until.findObject(By.res("org.mozilla.fenix.debug:id/collections_header")), waitingTime) + mDevice.waitNotNull(Until.findObject(By.res("collections_header")), waitingTime) } fun typeCollectionName(name: String) { - mDevice.wait(Until.findObject(By.res("org.mozilla.fenix.debug:id/name_collection_edittext")), waitingTime) - collectionNameTextField().check(matches(hasFocus())) + mDevice.wait(Until.findObject(By.res("name_collection_edittext")), waitingTime) + collectionNameTextField().perform(ViewActions.replaceText(name)) collectionNameTextField().perform(ViewActions.pressImeActionButton()) } @@ -120,6 +118,15 @@ class HomeScreenRobot { closeTabButton().click() } + fun togglePrivateBrowsingModeOnOff() { + onView(ViewMatchers.withResourceName("privateBrowsingButton")) + .perform(click()) + } + + fun swipeToBottom() = onView(ViewMatchers.withId(R.id.home_component)).perform(ViewActions.swipeUp()) + + fun swipeToTop() = onView(ViewMatchers.withId(R.id.home_component)).perform(ViewActions.swipeDown()) + class Transition { val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) @@ -361,4 +368,4 @@ private fun tabsListThreeDotButton() = onView(allOf(ViewMatchers.withId(R.id.tab private fun collectionThreeDotButton() = onView(allOf(ViewMatchers.withId(R.id.collection_overflow_button))) -private fun collectionNameTextField() = onView(allOf(ViewMatchers.withResourceName("name_collection_edittext"), hasFocus())) +private fun collectionNameTextField() = onView(allOf(ViewMatchers.withResourceName("name_collection_edittext"))) diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/SettingsRobot.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/SettingsRobot.kt index c60f7b93e..f10b44a4b 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/SettingsRobot.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/SettingsRobot.kt @@ -17,6 +17,7 @@ import androidx.test.espresso.matcher.ViewMatchers.Visibility import androidx.test.uiautomator.By import androidx.test.uiautomator.Until import org.hamcrest.CoreMatchers +import org.mozilla.fenix.R import org.mozilla.fenix.helpers.TestAssetHelper.waitingTime import org.mozilla.fenix.helpers.TestHelper import org.mozilla.fenix.helpers.click @@ -231,5 +232,6 @@ private fun assertAboutFirefoxPreview() { .check(matches(withEffectiveVisibility(Visibility.VISIBLE))) } -private fun goBackButton() = - onView(CoreMatchers.allOf(ViewMatchers.withContentDescription("Navigate up"))) +private fun goBackButton() = onView(CoreMatchers.allOf(ViewMatchers.withContentDescription("Navigate up"))) + +fun swipeToBottom() = onView(ViewMatchers.withId(R.id.recycler_view)).perform(ViewActions.swipeUp()) diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/ThreeDotMenuMainRobot.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/ThreeDotMenuMainRobot.kt index 2974d79f2..f11fd9586 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/ThreeDotMenuMainRobot.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/ThreeDotMenuMainRobot.kt @@ -78,7 +78,6 @@ class ThreeDotMenuMainRobot { private val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) fun openSettings(interact: SettingsRobot.() -> Unit): SettingsRobot.Transition { - mDevice.waitNotNull(Until.findObject(By.text("Settings")), waitingTime) settingsButton().click() SettingsRobot().interact() @@ -135,6 +134,22 @@ class ThreeDotMenuMainRobot { return BrowserRobot.Transition() } + fun close(interact: HomeScreenRobot.() -> Unit): HomeScreenRobot.Transition { + // Close three dot + mDevice.pressBack() + + HomeScreenRobot().interact() + return HomeScreenRobot.Transition() + } + + fun closeBrowserMenuToBrowser(interact: BrowserRobot.() -> Unit): BrowserRobot.Transition { + // Close three dot + mDevice.pressBack() + + BrowserRobot().interact() + return BrowserRobot.Transition() + } + fun refreshPage(interact: BrowserRobot.() -> Unit): BrowserRobot.Transition { mDevice.waitNotNull(Until.findObject(By.desc("Refresh")), waitingTime) refreshButton().click() diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/screenshots/DefaultHomeScreenTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/screenshots/DefaultHomeScreenTest.kt deleted file mode 100644 index 6879d1453..000000000 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/screenshots/DefaultHomeScreenTest.kt +++ /dev/null @@ -1,71 +0,0 @@ -// /* 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.ui.screenshots -// -// import androidx.test.rule.ActivityTestRule -// import org.junit.After -// import org.junit.Rule -// import org.junit.Test -// import org.mozilla.fenix.helpers.HomeActivityTestRule -// import org.mozilla.fenix.HomeActivity -// import org.mozilla.fenix.R -// import android.os.SystemClock -// import tools.fastlane.screengrab.Screengrab -// import tools.fastlane.screengrab.locale.LocaleTestRule -// import androidx.test.espresso.Espresso.onView -// import androidx.test.espresso.action.ViewActions.click -// import androidx.test.espresso.action.ViewActions.swipeUp -// import androidx.test.espresso.action.ViewActions.swipeDown -// import androidx.test.espresso.matcher.ViewMatchers.hasFocus -// import androidx.test.espresso.matcher.ViewMatchers.isDisplayed -// import androidx.test.espresso.matcher.ViewMatchers.withId -// import org.hamcrest.Matchers.allOf -// -// class DefaultHomeScreenTest : ScreenshotTest() { -// @Rule @JvmField -// val localeTestRule = LocaleTestRule() -// @get:Rule -// var mActivityTestRule: ActivityTestRule = HomeActivityTestRule() -// -// @After -// fun tearDown() { -// mActivityTestRule.getActivity().finishAndRemoveTask() -// } -// -// @Test -// fun showDefaultHomeScreen() { -// onView(allOf(withId(R.id.homeLayout), isDisplayed(), hasFocus())) -// onView(allOf(withId(R.id.toolbar), isDisplayed())) -// SystemClock.sleep(5000) -// Screengrab.screenshot("home-screen") -// -// onView(allOf(withId(R.id.privateBrowsingButton))).perform(click()) -// Screengrab.screenshot("private-browsing-menu") -// onView(allOf(withId(R.id.privateBrowsingButton))).perform(click()) -// } -// -// @Test -// fun scrollHomeScreen() { -// onView(withId(R.id.home_component)).perform(swipeUp()) -// Screengrab.screenshot("home-screen2") -// SystemClock.sleep(3000) -// -// onView(withId(R.id.home_component)).perform(swipeUp()) -// Screengrab.screenshot("home-screen3") -// SystemClock.sleep(3000) -// -// onView(withId(R.id.finish_button)).perform(click()) -// SystemClock.sleep(3000) -// -// Screengrab.screenshot("finish-button") -// SystemClock.sleep(3000) -// -// onView(withId(R.id.home_component)).perform(swipeDown()) -// SystemClock.sleep(3000) -// -// onView(withId(R.id.add_tab_button)).perform(click()) -// Screengrab.screenshot("add_tab_button") -// } -// } diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/screenshots/MenuScreenShotTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/screenshots/MenuScreenShotTest.kt deleted file mode 100644 index f9d9ea920..000000000 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/screenshots/MenuScreenShotTest.kt +++ /dev/null @@ -1,242 +0,0 @@ -// /* 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.ui.screenshots -// -// import android.os.SystemClock -// import android.widget.ImageView -// import androidx.test.espresso.Espresso -// import androidx.test.espresso.action.ViewActions.pressImeActionButton -// import androidx.test.espresso.action.ViewActions.replaceText -// import androidx.test.espresso.matcher.ViewMatchers -// import androidx.test.rule.ActivityTestRule -// import androidx.test.uiautomator.By -// import androidx.test.uiautomator.UiSelector -// import androidx.test.uiautomator.Until -// import br.com.concretesolutions.kappuccino.actions.ClickActions -// import br.com.concretesolutions.kappuccino.extensions.type -// import okhttp3.mockwebserver.MockWebServer -// import org.hamcrest.Matchers -// 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.ext.waitNotNull -// import org.mozilla.fenix.helpers.HomeActivityTestRule -// import org.mozilla.fenix.helpers.TestAssetHelper -// import org.mozilla.fenix.helpers.click -// import org.mozilla.fenix.ui.robots.homeScreen -// import org.mozilla.fenix.ui.robots.navigationToolbar -// import org.mozilla.fenix.ui.robots.swipeToBottom -// import tools.fastlane.screengrab.Screengrab -// import tools.fastlane.screengrab.locale.LocaleTestRule -// -// class MenuScreenShotTest : ScreenshotTest() { -// -// private lateinit var mockWebServer: MockWebServer -// @Rule @JvmField -// val localeTestRule = LocaleTestRule() -// -// @get:Rule -// var mActivityTestRule: ActivityTestRule = HomeActivityTestRule() -// -// @Before -// fun setUp() { -// mockWebServer = MockWebServer().apply { -// setDispatcher(AndroidAssetDispatcher()) -// start() -// } -// } -// -// @After -// fun tearDown() { -// mActivityTestRule.getActivity().finishAndRemoveTask() -// mockWebServer.shutdown() -// } -// -// @Test -// fun threeDotMenu() { -// homeScreen { -// }.openThreeDotMenu { } -// Screengrab.screenshot("three-dot-menu") -// } -// -// @Test -// fun settingsTest() { -// homeScreen { -// }.openThreeDotMenu { -// }.openSettings { } -// Screengrab.screenshot("settings") -// -// SystemClock.sleep(TestAssetHelper.waitingTimeShort) -// settingsAccount() -// Screengrab.screenshot("settings-sync") -// device.pressBack() -// -// settingsTheme() -// Screengrab.screenshot("settings-theme") -// device.pressBack() -// -// settingsSearch() -// Screengrab.screenshot("settings-search") -// device.pressBack() -// -// settingsAccessibility() -// Screengrab.screenshot("settings-accessibility") -// device.pressBack() -// -// settingsTp() -// Screengrab.screenshot("settings-tp") -// } -// -// @Test -// fun settingsAfterScrollMenusTest() { -// homeScreen { -// }.openThreeDotMenu { -// }.openSettings { -// swipeToBottom() -// } -// Screengrab.screenshot("settings-scroll-to-bottom") -// SystemClock.sleep(TestAssetHelper.waitingTimeShort) -// -// settingsRemoveData() -// Screengrab.screenshot("settings-delete-browsing-data") -// device.pressBack() -// SystemClock.sleep(TestAssetHelper.waitingTimeShort) -// -// settingsTelemetry() -// Screengrab.screenshot("settings-telemetry") -// } -// -// @Test -// fun libraryTest() { -// homeScreen { -// }.openThreeDotMenu { -// }.openLibrary { } -// Screengrab.screenshot("library") -// -// bookmarksButton() -// Screengrab.screenshot("library-bookmarks") -// device.pressBack() -// historyButton() -// Screengrab.screenshot("library-history") -// } -// -// @Test -// fun bookmarksManagementTest() { -// homeScreen { -// }.openThreeDotMenu { -// }.openLibrary { } -// bookmarksButton() -// addBookmarkFolderButton() -// Screengrab.screenshot("add-folder-view") -// -// confirmAddFolderButton() -// Screengrab.screenshot("error-empty-folder-name") -// -// // Enter folder name and save -// addFolderName() -// confirmAddFolderButton() -// SystemClock.sleep(TestAssetHelper.waitingTimeShort) -// -// // Open folder menu -// bookmarkFolderMenu() -// Screengrab.screenshot("folder-menu") -// -// // Edit folder menu -// editBookmarkFolder() -// device.pressBack() -// Screengrab.screenshot("edit-bookmark-folder-menu") -// -// // Delete folder -// bookmarkFolderMenu() -// deleteBookmarkFolder() -// Screengrab.screenshot("delete-bookmark-folder-menu") -// } -// -// @Test -// fun collectionMenuTest() { -// val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1) -// navigationToolbar { -// }.enterURLAndEnterToBrowser(defaultWebPage.url) { -// } -// device.findObject(UiSelector() -// .instance(1) -// .className(ImageView::class.java)).click() -// // Homescreen with visited tabs -// mDevice.waitNotNull(device.wait(Until.findObjects(By.text("Save to collection"))) -// openTabsMenu() -// Screengrab.screenshot("open-tabs-menu") -// device.pressBack() -// mDevice.waitNotNull(Until.findObjects(By.text("Save to collection"))) -// Screengrab.screenshot("save-collection-button") -// -// // Save a collection -// saveToCollectionButton() -// Screengrab.screenshot("save-collection-view") -// mDevice.waitNotNull(Until.findObject(By.res("org.mozilla.fenix.debug:id/name_collection_edittext"))) -// nameCollectionTextBox().perform(replaceText("CollectionName"), -// pressImeActionButton()) -// -// // Homescreen after saving one collection -// mDevice.waitNotNull(Until.findObject(By.res("org.mozilla.fenix.debug:id/collection_title"))) -// Screengrab.screenshot("saved-tab") -// -// // Open Collection menu -// collectionsButton() -// Screengrab.screenshot("saved-collections-menu") -// } -// -// @Test -// fun tabMenuTest() { -// val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1) -// navigationToolbar { -// }.enterURLAndEnterToBrowser(defaultWebPage.url) { -// } -// mDevice.waitNotNull(Until.findObjects(By.res("org.mozilla.fenix.debug:id/quick_action_sheet_handle"))) -// openQuickActionMenu() -// Screengrab.screenshot("browser-tab-share-bookmark") -// // Open Browser tab menu -// device.findObject(UiSelector() -// .instance(2) -// .className(ImageView::class.java)).click() -// Screengrab.screenshot("browser-tab-menu") -// // Close menu and go back to Homescreen and remove the tab -// device.pressBack() -// device.findObject(UiSelector() -// .instance(1) -// .className(ImageView::class.java)).click() -// mDevice.waitNotNull(Until.findObjects(By.res("org.mozilla.fenix.debug:id/close_tab_button"))) -// closeTabButton() -// Screengrab.screenshot("remove-tab") -// } -// } -// -// fun bookmarksButton() = ClickActions.click { text(R.string.library_bookmarks) } -// fun historyButton() = ClickActions.click { text(R.string.library_history) } -// fun settingsAccount() = ClickActions.click { text(R.string.preferences_sync) } -// -// fun settingsSearch() = ClickActions.click { text(R.string.preferences_search_engine) } -// fun settingsTheme() = ClickActions.click { text(R.string.preferences_theme) } -// fun settingsAccessibility() = ClickActions.click { text(R.string.preferences_accessibility) } -// fun settingsTp() = ClickActions.click { text(R.string.preferences_tracking_protection) } -// fun settingsRemoveData() = ClickActions.click { text(R.string.preferences_delete_browsing_data) } -// fun settingsTelemetry() = ClickActions.click { text(R.string.preferences_data_collection) } -// -// fun openTabsMenu() = Espresso.onView(Matchers.allOf(ViewMatchers.withId(R.id.tabs_overflow_button))).click() -// fun openQuickActionMenu() = Espresso.onView(Matchers.allOf(ViewMatchers.withId(R.id.quick_action_sheet_handle))).click() -// fun saveToCollectionButton() = Espresso.onView(Matchers.allOf(ViewMatchers.withId(R.id.save_tab_group_button))).click() -// fun collectionsButton() = Espresso.onView(Matchers.allOf(ViewMatchers.withId(R.id.collection_overflow_button))).click() -// fun addBookmarkFolderButton() = Espresso.onView(Matchers.allOf(ViewMatchers.withId(R.id.add_bookmark_folder))).click() -// fun confirmAddFolderButton() = Espresso.onView(Matchers.allOf(ViewMatchers.withId(R.id.confirm_add_folder_button))).click() -// fun addFolderName() = Espresso.onView(Matchers.allOf(ViewMatchers.withId(R.id.bookmarkAddFolderTitleEdit))) -// .type("folder") -// fun bookmarkFolderMenu() = Espresso.onView(Matchers.allOf(ViewMatchers.withId(R.id.overflow_menu))).click() -// fun editBookmarkFolder() = ClickActions.click { text(R.string.bookmark_menu_edit_button) } -// fun deleteBookmarkFolder() = ClickActions.click { text(R.string.bookmark_menu_delete_button) } -// fun nameCollectionTextBox() = Espresso.onView(Matchers.allOf(ViewMatchers.withId(R.id.name_collection_edittext))) -// fun closeTabButton() = Espresso.onView(Matchers.allOf(ViewMatchers.withId(R.id.close_tab_button))).click() diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/screenshots/ScreenshotTest.java b/app/src/androidTest/java/org/mozilla/fenix/ui/screenshots/ScreenshotTest.java deleted file mode 100644 index 5da318660..000000000 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/screenshots/ScreenshotTest.java +++ /dev/null @@ -1,75 +0,0 @@ -// /* 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.ui.screenshots; -// -// import android.Manifest; -// import android.app.Instrumentation; -// import android.content.Context; -// import androidx.annotation.StringRes; -// import androidx.test.platform.app.InstrumentationRegistry; -// import androidx.test.rule.GrantPermissionRule; -// import androidx.test.uiautomator.UiDevice; -// import android.text.format.DateUtils; -// -// import org.junit.Before; -// import org.junit.Rule; -// import org.junit.rules.TestRule; -// import org.junit.rules.TestWatcher; -// import org.junit.runner.Description; -// -// import tools.fastlane.screengrab.Screengrab; -// import tools.fastlane.screengrab.UiAutomatorScreenshotStrategy; -// -// /** -// * Base class for tests that take screenshots. -// */ -// public abstract class ScreenshotTest { -// final long waitingTime = DateUtils.SECOND_IN_MILLIS * 10; -// -// private Context targetContext; -// -// UiDevice device; -// -// @Rule -// public GrantPermissionRule permissionRule = GrantPermissionRule.grant(Manifest.permission.WRITE_EXTERNAL_STORAGE); -// -// @Rule -// public TestRule screenshotOnFailureRule = new TestWatcher() { -// @Override -// protected void failed(Throwable e, Description description) { -// // On error take a screenshot so that we can debug it easily -// Screengrab.screenshot("FAILURE-" + getScreenshotName(description)); -// } -// -// private String getScreenshotName(Description description) { -// return description.getClassName().replace(".", "-") -// + "_" -// + description.getMethodName().replace(".", "-"); -// } -// }; -// -// @Before -// public void setUpScreenshots() { -// Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation(); -// targetContext = instrumentation.getTargetContext(); -// device = UiDevice.getInstance(instrumentation); -// -// // Use this to switch between default strategy and HostScreencap strategy -// Screengrab.setDefaultScreenshotStrategy(new UiAutomatorScreenshotStrategy()); -// } -// -// String getString(@StringRes int resourceId) { -// return targetContext.getString(resourceId).trim(); -// } -// -// String getString(@StringRes int resourceId, Object... formatArgs) { -// return targetContext.getString(resourceId, formatArgs).trim(); -// } -// -// public void takeScreenshotsAfterWait(String filename, int waitingTime) throws InterruptedException { -// Thread.sleep(waitingTime); -// Screengrab.screenshot(filename); -// } -// }