From 153af588af28a4cdf8b4a232c84219dfdfa7553f Mon Sep 17 00:00:00 2001 From: Colin Lee Date: Fri, 23 Aug 2019 15:37:52 -0500 Subject: [PATCH] For #4885: D8 Build failure on attempt to execute UI test (#4903) * For #4885: D8 Build failure on attempt to execute UI test * Disabled screengrab tests until AndroidX fix is available --- app/build.gradle | 8 +- .../ui/screenshots/DefaultHomeScreenTest.kt | 142 +++--- .../ui/screenshots/MenuScreenShotTest.kt | 482 +++++++++--------- .../fenix/ui/screenshots/ScreenshotTest.java | 150 +++--- buildSrc/src/main/java/Dependencies.kt | 13 +- 5 files changed, 396 insertions(+), 399 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 3528113bb..af8a88096 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -405,12 +405,10 @@ dependencies { implementation Deps.google_ads_id // Required for the Google Advertising ID -// androidTestImplementation Deps.tools_test_runner -// androidTestImplementation Deps.tools_espresso_core - androidTestImplementation Deps.uiautomator - androidTestImplementation "tools.fastlane:screengrab:1.2.0" - androidTestImplementation "br.com.concretesolutions:kappuccino:1.2.1" +// Removed pending AndroidX fixes +// androidTestImplementation "tools.fastlane:screengrab:1.2.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/ui/screenshots/DefaultHomeScreenTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/screenshots/DefaultHomeScreenTest.kt index f22dba7d2..6879d1453 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/screenshots/DefaultHomeScreenTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/screenshots/DefaultHomeScreenTest.kt @@ -1,71 +1,71 @@ -/* 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") - } -} +// /* 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 index 839cf93c8..7abd74359 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/screenshots/MenuScreenShotTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/screenshots/MenuScreenShotTest.kt @@ -1,241 +1,241 @@ -/* 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.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 - device.wait(Until.findObjects(By.text("Save to collection")), TestAssetHelper.waitingTimeShort) - openTabsMenu() - Screengrab.screenshot("open-tabs-menu") - device.pressBack() - device.wait(Until.findObjects(By.text("Save to collection")), TestAssetHelper.waitingTimeShort) - Screengrab.screenshot("save-collection-button") - - // Save a collection - saveToCollectionButton() - Screengrab.screenshot("save-collection-view") - device.wait(Until.findObject(By.res("name_collection_edittext")), TestAssetHelper.waitingTimeShort) - nameCollectionTextBox().perform(replaceText("CollectionName"), - pressImeActionButton()) - - // Homescreen after saving one collection - device.wait(Until.findObject(By.res("collection_title")), TestAssetHelper.waitingTimeShort) - 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) { - } - device.wait(Until.findObjects(By.res("quick_action_sheet_handle")), TestAssetHelper.waitingTimeShort) - 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() - device.wait(Until.findObjects(By.res("close_tab_button")), TestAssetHelper.waitingTimeShort) - 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() +// /* 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.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 +// device.wait(Until.findObjects(By.text("Save to collection")), TestAssetHelper.waitingTimeShort) +// openTabsMenu() +// Screengrab.screenshot("open-tabs-menu") +// device.pressBack() +// device.wait(Until.findObjects(By.text("Save to collection")), TestAssetHelper.waitingTimeShort) +// Screengrab.screenshot("save-collection-button") +// +// // Save a collection +// saveToCollectionButton() +// Screengrab.screenshot("save-collection-view") +// device.wait(Until.findObject(By.res("name_collection_edittext")), TestAssetHelper.waitingTimeShort) +// nameCollectionTextBox().perform(replaceText("CollectionName"), +// pressImeActionButton()) +// +// // Homescreen after saving one collection +// device.wait(Until.findObject(By.res("collection_title")), TestAssetHelper.waitingTimeShort) +// 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) { +// } +// device.wait(Until.findObjects(By.res("quick_action_sheet_handle")), TestAssetHelper.waitingTimeShort) +// 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() +// device.wait(Until.findObjects(By.res("close_tab_button")), TestAssetHelper.waitingTimeShort) +// 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 index ba13340f6..5da318660 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/screenshots/ScreenshotTest.java +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/screenshots/ScreenshotTest.java @@ -1,75 +1,75 @@ -/* 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); - } -} +// /* 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); +// } +// } diff --git a/buildSrc/src/main/java/Dependencies.kt b/buildSrc/src/main/java/Dependencies.kt index 1b66d73ca..e1b60ae16 100644 --- a/buildSrc/src/main/java/Dependencies.kt +++ b/buildSrc/src/main/java/Dependencies.kt @@ -54,13 +54,12 @@ object Versions { const val flipper = "0.21.0" const val soLoader = "0.5.1" - const val espresso_core = "2.2.2" - const val espresso_version = "3.0.2" + const val espresso_version = "3.2.0" const val mockwebserver = "3.11.0" const val orchestrator = "1.3.0-alpha02" const val tools_test_rules = "1.3.0-alpha02" const val tools_test_runner = "1.3.0-alpha02" - const val uiautomator = "2.1.3" + const val uiautomator = "2.2.0" const val robolectric = "4.2" const val google_ads_id_version = "16.0.0" @@ -194,14 +193,14 @@ object Deps { const val flipper_noop = "com.facebook.flipper:flipper-noop:${Versions.flipper}" const val soLoader = "com.facebook.soloader:soloader:${Versions.soLoader}" - const val espresso_contrib = "com.android.support.test.espresso:espresso-contrib:${Versions.espresso_version}" - const val espresso_core = "com.android.support.test.espresso:espresso-core:${Versions.espresso_core}" - const val espresso_idling_resources = "com.android.support.test.espresso:espresso-idling-resource:${Versions.espresso_version}" + const val espresso_contrib = "androidx.test.espresso:espresso-contrib:${Versions.espresso_version}" + const val espresso_core = "androidx.test.espresso:espresso-core:${Versions.espresso_version}" + const val espresso_idling_resources = "androidx.test.espresso:espresso-idling-resource:${Versions.espresso_version}" const val mockwebserver = "com.squareup.okhttp3:mockwebserver:${Versions.mockwebserver}" const val orchestrator = "androidx.test:orchestrator:${Versions.orchestrator}" const val tools_test_rules = "androidx.test:rules:${Versions.tools_test_rules}" const val tools_test_runner = "androidx.test:runner:${Versions.tools_test_runner}" - const val uiautomator = "com.android.support.test.uiautomator:uiautomator-v18:${Versions.uiautomator}" + const val uiautomator = "androidx.test.uiautomator:uiautomator:${Versions.uiautomator}" const val robolectric = "org.robolectric:robolectric:${Versions.robolectric}" const val androidx_junit = "androidx.test.ext:junit:${Versions.androidx_test_ext}" const val androidx_test_core = "androidx.test:core:${Versions.androidx_testing}"