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); -// } -// }