1
0
Fork 0

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
master
Colin Lee 2019-08-23 15:37:52 -05:00 committed by Richard Pappalardo
parent 66e14959ba
commit 153af588af
5 changed files with 396 additions and 399 deletions

View File

@ -405,12 +405,10 @@ dependencies {
implementation Deps.google_ads_id // Required for the Google Advertising ID 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 Deps.uiautomator
androidTestImplementation "tools.fastlane:screengrab:1.2.0" // Removed pending AndroidX fixes
androidTestImplementation "br.com.concretesolutions:kappuccino:1.2.1" // androidTestImplementation "tools.fastlane:screengrab:1.2.0"
// androidTestImplementation "br.com.concretesolutions:kappuccino:1.2.1"
androidTestImplementation Deps.espresso_core, { androidTestImplementation Deps.espresso_core, {
exclude group: 'com.android.support', module: 'support-annotations' exclude group: 'com.android.support', module: 'support-annotations'

View File

@ -1,71 +1,71 @@
/* This Source Code Form is subject to the terms of the Mozilla Public // /* 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 // * 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/. */ // * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
//
package org.mozilla.fenix.ui.screenshots // package org.mozilla.fenix.ui.screenshots
//
import androidx.test.rule.ActivityTestRule // import androidx.test.rule.ActivityTestRule
import org.junit.After // import org.junit.After
import org.junit.Rule // import org.junit.Rule
import org.junit.Test // import org.junit.Test
import org.mozilla.fenix.helpers.HomeActivityTestRule // import org.mozilla.fenix.helpers.HomeActivityTestRule
import org.mozilla.fenix.HomeActivity // import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R // import org.mozilla.fenix.R
import android.os.SystemClock // import android.os.SystemClock
import tools.fastlane.screengrab.Screengrab // import tools.fastlane.screengrab.Screengrab
import tools.fastlane.screengrab.locale.LocaleTestRule // import tools.fastlane.screengrab.locale.LocaleTestRule
import androidx.test.espresso.Espresso.onView // import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.action.ViewActions.click // import androidx.test.espresso.action.ViewActions.click
import androidx.test.espresso.action.ViewActions.swipeUp // import androidx.test.espresso.action.ViewActions.swipeUp
import androidx.test.espresso.action.ViewActions.swipeDown // import androidx.test.espresso.action.ViewActions.swipeDown
import androidx.test.espresso.matcher.ViewMatchers.hasFocus // import androidx.test.espresso.matcher.ViewMatchers.hasFocus
import androidx.test.espresso.matcher.ViewMatchers.isDisplayed // import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
import androidx.test.espresso.matcher.ViewMatchers.withId // import androidx.test.espresso.matcher.ViewMatchers.withId
import org.hamcrest.Matchers.allOf // import org.hamcrest.Matchers.allOf
//
class DefaultHomeScreenTest : ScreenshotTest() { // class DefaultHomeScreenTest : ScreenshotTest() {
@Rule @JvmField // @Rule @JvmField
val localeTestRule = LocaleTestRule() // val localeTestRule = LocaleTestRule()
@get:Rule // @get:Rule
var mActivityTestRule: ActivityTestRule<HomeActivity> = HomeActivityTestRule() // var mActivityTestRule: ActivityTestRule<HomeActivity> = HomeActivityTestRule()
//
@After // @After
fun tearDown() { // fun tearDown() {
mActivityTestRule.getActivity().finishAndRemoveTask() // mActivityTestRule.getActivity().finishAndRemoveTask()
} // }
//
@Test // @Test
fun showDefaultHomeScreen() { // fun showDefaultHomeScreen() {
onView(allOf(withId(R.id.homeLayout), isDisplayed(), hasFocus())) // onView(allOf(withId(R.id.homeLayout), isDisplayed(), hasFocus()))
onView(allOf(withId(R.id.toolbar), isDisplayed())) // onView(allOf(withId(R.id.toolbar), isDisplayed()))
SystemClock.sleep(5000) // SystemClock.sleep(5000)
Screengrab.screenshot("home-screen") // Screengrab.screenshot("home-screen")
//
onView(allOf(withId(R.id.privateBrowsingButton))).perform(click()) // onView(allOf(withId(R.id.privateBrowsingButton))).perform(click())
Screengrab.screenshot("private-browsing-menu") // Screengrab.screenshot("private-browsing-menu")
onView(allOf(withId(R.id.privateBrowsingButton))).perform(click()) // onView(allOf(withId(R.id.privateBrowsingButton))).perform(click())
} // }
//
@Test // @Test
fun scrollHomeScreen() { // fun scrollHomeScreen() {
onView(withId(R.id.home_component)).perform(swipeUp()) // onView(withId(R.id.home_component)).perform(swipeUp())
Screengrab.screenshot("home-screen2") // Screengrab.screenshot("home-screen2")
SystemClock.sleep(3000) // SystemClock.sleep(3000)
//
onView(withId(R.id.home_component)).perform(swipeUp()) // onView(withId(R.id.home_component)).perform(swipeUp())
Screengrab.screenshot("home-screen3") // Screengrab.screenshot("home-screen3")
SystemClock.sleep(3000) // SystemClock.sleep(3000)
//
onView(withId(R.id.finish_button)).perform(click()) // onView(withId(R.id.finish_button)).perform(click())
SystemClock.sleep(3000) // SystemClock.sleep(3000)
//
Screengrab.screenshot("finish-button") // Screengrab.screenshot("finish-button")
SystemClock.sleep(3000) // SystemClock.sleep(3000)
//
onView(withId(R.id.home_component)).perform(swipeDown()) // onView(withId(R.id.home_component)).perform(swipeDown())
SystemClock.sleep(3000) // SystemClock.sleep(3000)
//
onView(withId(R.id.add_tab_button)).perform(click()) // onView(withId(R.id.add_tab_button)).perform(click())
Screengrab.screenshot("add_tab_button") // Screengrab.screenshot("add_tab_button")
} // }
} // }

View File

@ -1,241 +1,241 @@
/* This Source Code Form is subject to the terms of the Mozilla Public // /* 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 // * 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/. */ // * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
//
package org.mozilla.fenix.ui.screenshots // package org.mozilla.fenix.ui.screenshots
//
import android.os.SystemClock // import android.os.SystemClock
import android.widget.ImageView // import android.widget.ImageView
import androidx.test.espresso.Espresso // import androidx.test.espresso.Espresso
import androidx.test.espresso.action.ViewActions.pressImeActionButton // import androidx.test.espresso.action.ViewActions.pressImeActionButton
import androidx.test.espresso.action.ViewActions.replaceText // import androidx.test.espresso.action.ViewActions.replaceText
import androidx.test.espresso.matcher.ViewMatchers // import androidx.test.espresso.matcher.ViewMatchers
import androidx.test.rule.ActivityTestRule // import androidx.test.rule.ActivityTestRule
import androidx.test.uiautomator.By // import androidx.test.uiautomator.By
import androidx.test.uiautomator.UiSelector // import androidx.test.uiautomator.UiSelector
import androidx.test.uiautomator.Until // import androidx.test.uiautomator.Until
import br.com.concretesolutions.kappuccino.actions.ClickActions // import br.com.concretesolutions.kappuccino.actions.ClickActions
import br.com.concretesolutions.kappuccino.extensions.type // import br.com.concretesolutions.kappuccino.extensions.type
import okhttp3.mockwebserver.MockWebServer // import okhttp3.mockwebserver.MockWebServer
import org.hamcrest.Matchers // import org.hamcrest.Matchers
import org.junit.After // import org.junit.After
import org.junit.Before // import org.junit.Before
import org.junit.Rule // import org.junit.Rule
import org.junit.Test // import org.junit.Test
import org.mozilla.fenix.HomeActivity // import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R // import org.mozilla.fenix.R
import org.mozilla.fenix.helpers.AndroidAssetDispatcher // import org.mozilla.fenix.helpers.AndroidAssetDispatcher
import org.mozilla.fenix.helpers.HomeActivityTestRule // import org.mozilla.fenix.helpers.HomeActivityTestRule
import org.mozilla.fenix.helpers.TestAssetHelper // import org.mozilla.fenix.helpers.TestAssetHelper
import org.mozilla.fenix.helpers.click // import org.mozilla.fenix.helpers.click
import org.mozilla.fenix.ui.robots.homeScreen // import org.mozilla.fenix.ui.robots.homeScreen
import org.mozilla.fenix.ui.robots.navigationToolbar // import org.mozilla.fenix.ui.robots.navigationToolbar
import org.mozilla.fenix.ui.robots.swipeToBottom // import org.mozilla.fenix.ui.robots.swipeToBottom
import tools.fastlane.screengrab.Screengrab // import tools.fastlane.screengrab.Screengrab
import tools.fastlane.screengrab.locale.LocaleTestRule // import tools.fastlane.screengrab.locale.LocaleTestRule
//
class MenuScreenShotTest : ScreenshotTest() { // class MenuScreenShotTest : ScreenshotTest() {
//
private lateinit var mockWebServer: MockWebServer // private lateinit var mockWebServer: MockWebServer
@Rule @JvmField // @Rule @JvmField
val localeTestRule = LocaleTestRule() // val localeTestRule = LocaleTestRule()
//
@get:Rule // @get:Rule
var mActivityTestRule: ActivityTestRule<HomeActivity> = HomeActivityTestRule() // var mActivityTestRule: ActivityTestRule<HomeActivity> = HomeActivityTestRule()
//
@Before // @Before
fun setUp() { // fun setUp() {
mockWebServer = MockWebServer().apply { // mockWebServer = MockWebServer().apply {
setDispatcher(AndroidAssetDispatcher()) // setDispatcher(AndroidAssetDispatcher())
start() // start()
} // }
} // }
//
@After // @After
fun tearDown() { // fun tearDown() {
mActivityTestRule.getActivity().finishAndRemoveTask() // mActivityTestRule.getActivity().finishAndRemoveTask()
mockWebServer.shutdown() // mockWebServer.shutdown()
} // }
//
@Test // @Test
fun threeDotMenu() { // fun threeDotMenu() {
homeScreen { // homeScreen {
}.openThreeDotMenu { } // }.openThreeDotMenu { }
Screengrab.screenshot("three-dot-menu") // Screengrab.screenshot("three-dot-menu")
} // }
//
@Test // @Test
fun settingsTest() { // fun settingsTest() {
homeScreen { // homeScreen {
}.openThreeDotMenu { // }.openThreeDotMenu {
}.openSettings { } // }.openSettings { }
Screengrab.screenshot("settings") // Screengrab.screenshot("settings")
//
SystemClock.sleep(TestAssetHelper.waitingTimeShort) // SystemClock.sleep(TestAssetHelper.waitingTimeShort)
settingsAccount() // settingsAccount()
Screengrab.screenshot("settings-sync") // Screengrab.screenshot("settings-sync")
device.pressBack() // device.pressBack()
//
settingsTheme() // settingsTheme()
Screengrab.screenshot("settings-theme") // Screengrab.screenshot("settings-theme")
device.pressBack() // device.pressBack()
//
settingsSearch() // settingsSearch()
Screengrab.screenshot("settings-search") // Screengrab.screenshot("settings-search")
device.pressBack() // device.pressBack()
//
settingsAccessibility() // settingsAccessibility()
Screengrab.screenshot("settings-accessibility") // Screengrab.screenshot("settings-accessibility")
device.pressBack() // device.pressBack()
//
settingsTp() // settingsTp()
Screengrab.screenshot("settings-tp") // Screengrab.screenshot("settings-tp")
} // }
//
@Test // @Test
fun settingsAfterScrollMenusTest() { // fun settingsAfterScrollMenusTest() {
homeScreen { // homeScreen {
}.openThreeDotMenu { // }.openThreeDotMenu {
}.openSettings { // }.openSettings {
swipeToBottom() // swipeToBottom()
} // }
Screengrab.screenshot("settings-scroll-to-bottom") // Screengrab.screenshot("settings-scroll-to-bottom")
SystemClock.sleep(TestAssetHelper.waitingTimeShort) // SystemClock.sleep(TestAssetHelper.waitingTimeShort)
//
settingsRemoveData() // settingsRemoveData()
Screengrab.screenshot("settings-delete-browsing-data") // Screengrab.screenshot("settings-delete-browsing-data")
device.pressBack() // device.pressBack()
SystemClock.sleep(TestAssetHelper.waitingTimeShort) // SystemClock.sleep(TestAssetHelper.waitingTimeShort)
//
settingsTelemetry() // settingsTelemetry()
Screengrab.screenshot("settings-telemetry") // Screengrab.screenshot("settings-telemetry")
} // }
//
@Test // @Test
fun libraryTest() { // fun libraryTest() {
homeScreen { // homeScreen {
}.openThreeDotMenu { // }.openThreeDotMenu {
}.openLibrary { } // }.openLibrary { }
Screengrab.screenshot("library") // Screengrab.screenshot("library")
//
bookmarksButton() // bookmarksButton()
Screengrab.screenshot("library-bookmarks") // Screengrab.screenshot("library-bookmarks")
device.pressBack() // device.pressBack()
historyButton() // historyButton()
Screengrab.screenshot("library-history") // Screengrab.screenshot("library-history")
} // }
//
@Test // @Test
fun bookmarksManagementTest() { // fun bookmarksManagementTest() {
homeScreen { // homeScreen {
}.openThreeDotMenu { // }.openThreeDotMenu {
}.openLibrary { } // }.openLibrary { }
bookmarksButton() // bookmarksButton()
addBookmarkFolderButton() // addBookmarkFolderButton()
Screengrab.screenshot("add-folder-view") // Screengrab.screenshot("add-folder-view")
//
confirmAddFolderButton() // confirmAddFolderButton()
Screengrab.screenshot("error-empty-folder-name") // Screengrab.screenshot("error-empty-folder-name")
//
// Enter folder name and save // // Enter folder name and save
addFolderName() // addFolderName()
confirmAddFolderButton() // confirmAddFolderButton()
SystemClock.sleep(TestAssetHelper.waitingTimeShort) // SystemClock.sleep(TestAssetHelper.waitingTimeShort)
//
// Open folder menu // // Open folder menu
bookmarkFolderMenu() // bookmarkFolderMenu()
Screengrab.screenshot("folder-menu") // Screengrab.screenshot("folder-menu")
//
// Edit folder menu // // Edit folder menu
editBookmarkFolder() // editBookmarkFolder()
device.pressBack() // device.pressBack()
Screengrab.screenshot("edit-bookmark-folder-menu") // Screengrab.screenshot("edit-bookmark-folder-menu")
//
// Delete folder // // Delete folder
bookmarkFolderMenu() // bookmarkFolderMenu()
deleteBookmarkFolder() // deleteBookmarkFolder()
Screengrab.screenshot("delete-bookmark-folder-menu") // Screengrab.screenshot("delete-bookmark-folder-menu")
} // }
//
@Test // @Test
fun collectionMenuTest() { // fun collectionMenuTest() {
val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1) // val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
navigationToolbar { // navigationToolbar {
}.enterURLAndEnterToBrowser(defaultWebPage.url) { // }.enterURLAndEnterToBrowser(defaultWebPage.url) {
} // }
device.findObject(UiSelector() // device.findObject(UiSelector()
.instance(1) // .instance(1)
.className(ImageView::class.java)).click() // .className(ImageView::class.java)).click()
// Homescreen with visited tabs // // Homescreen with visited tabs
device.wait(Until.findObjects(By.text("Save to collection")), TestAssetHelper.waitingTimeShort) // device.wait(Until.findObjects(By.text("Save to collection")), TestAssetHelper.waitingTimeShort)
openTabsMenu() // openTabsMenu()
Screengrab.screenshot("open-tabs-menu") // Screengrab.screenshot("open-tabs-menu")
device.pressBack() // device.pressBack()
device.wait(Until.findObjects(By.text("Save to collection")), TestAssetHelper.waitingTimeShort) // device.wait(Until.findObjects(By.text("Save to collection")), TestAssetHelper.waitingTimeShort)
Screengrab.screenshot("save-collection-button") // Screengrab.screenshot("save-collection-button")
//
// Save a collection // // Save a collection
saveToCollectionButton() // saveToCollectionButton()
Screengrab.screenshot("save-collection-view") // Screengrab.screenshot("save-collection-view")
device.wait(Until.findObject(By.res("name_collection_edittext")), TestAssetHelper.waitingTimeShort) // device.wait(Until.findObject(By.res("name_collection_edittext")), TestAssetHelper.waitingTimeShort)
nameCollectionTextBox().perform(replaceText("CollectionName"), // nameCollectionTextBox().perform(replaceText("CollectionName"),
pressImeActionButton()) // pressImeActionButton())
//
// Homescreen after saving one collection // // Homescreen after saving one collection
device.wait(Until.findObject(By.res("collection_title")), TestAssetHelper.waitingTimeShort) // device.wait(Until.findObject(By.res("collection_title")), TestAssetHelper.waitingTimeShort)
Screengrab.screenshot("saved-tab") // Screengrab.screenshot("saved-tab")
//
// Open Collection menu // // Open Collection menu
collectionsButton() // collectionsButton()
Screengrab.screenshot("saved-collections-menu") // Screengrab.screenshot("saved-collections-menu")
} // }
//
@Test // @Test
fun tabMenuTest() { // fun tabMenuTest() {
val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1) // val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
navigationToolbar { // navigationToolbar {
}.enterURLAndEnterToBrowser(defaultWebPage.url) { // }.enterURLAndEnterToBrowser(defaultWebPage.url) {
} // }
device.wait(Until.findObjects(By.res("quick_action_sheet_handle")), TestAssetHelper.waitingTimeShort) // device.wait(Until.findObjects(By.res("quick_action_sheet_handle")), TestAssetHelper.waitingTimeShort)
openQuickActionMenu() // openQuickActionMenu()
Screengrab.screenshot("browser-tab-share-bookmark") // Screengrab.screenshot("browser-tab-share-bookmark")
// Open Browser tab menu // // Open Browser tab menu
device.findObject(UiSelector() // device.findObject(UiSelector()
.instance(2) // .instance(2)
.className(ImageView::class.java)).click() // .className(ImageView::class.java)).click()
Screengrab.screenshot("browser-tab-menu") // Screengrab.screenshot("browser-tab-menu")
// Close menu and go back to Homescreen and remove the tab // // Close menu and go back to Homescreen and remove the tab
device.pressBack() // device.pressBack()
device.findObject(UiSelector() // device.findObject(UiSelector()
.instance(1) // .instance(1)
.className(ImageView::class.java)).click() // .className(ImageView::class.java)).click()
device.wait(Until.findObjects(By.res("close_tab_button")), TestAssetHelper.waitingTimeShort) // device.wait(Until.findObjects(By.res("close_tab_button")), TestAssetHelper.waitingTimeShort)
closeTabButton() // closeTabButton()
Screengrab.screenshot("remove-tab") // Screengrab.screenshot("remove-tab")
} // }
} // }
//
fun bookmarksButton() = ClickActions.click { text(R.string.library_bookmarks) } // fun bookmarksButton() = ClickActions.click { text(R.string.library_bookmarks) }
fun historyButton() = ClickActions.click { text(R.string.library_history) } // fun historyButton() = ClickActions.click { text(R.string.library_history) }
fun settingsAccount() = ClickActions.click { text(R.string.preferences_sync) } // fun settingsAccount() = ClickActions.click { text(R.string.preferences_sync) }
//
fun settingsSearch() = ClickActions.click { text(R.string.preferences_search_engine) } // fun settingsSearch() = ClickActions.click { text(R.string.preferences_search_engine) }
fun settingsTheme() = ClickActions.click { text(R.string.preferences_theme) } // fun settingsTheme() = ClickActions.click { text(R.string.preferences_theme) }
fun settingsAccessibility() = ClickActions.click { text(R.string.preferences_accessibility) } // fun settingsAccessibility() = ClickActions.click { text(R.string.preferences_accessibility) }
fun settingsTp() = ClickActions.click { text(R.string.preferences_tracking_protection) } // fun settingsTp() = ClickActions.click { text(R.string.preferences_tracking_protection) }
fun settingsRemoveData() = ClickActions.click { text(R.string.preferences_delete_browsing_data) } // fun settingsRemoveData() = ClickActions.click { text(R.string.preferences_delete_browsing_data) }
fun settingsTelemetry() = ClickActions.click { text(R.string.preferences_data_collection) } // 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 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 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 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 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 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 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))) // fun addFolderName() = Espresso.onView(Matchers.allOf(ViewMatchers.withId(R.id.bookmarkAddFolderTitleEdit)))
.type("folder") // .type("folder")
fun bookmarkFolderMenu() = Espresso.onView(Matchers.allOf(ViewMatchers.withId(R.id.overflow_menu))).click() // 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 editBookmarkFolder() = ClickActions.click { text(R.string.bookmark_menu_edit_button) }
fun deleteBookmarkFolder() = ClickActions.click { text(R.string.bookmark_menu_delete_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 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() // fun closeTabButton() = Espresso.onView(Matchers.allOf(ViewMatchers.withId(R.id.close_tab_button))).click()

View File

@ -1,75 +1,75 @@
/* This Source Code Form is subject to the terms of the Mozilla Public // /* 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 // * 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/. */ // * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
//
package org.mozilla.fenix.ui.screenshots; // package org.mozilla.fenix.ui.screenshots;
//
import android.Manifest; // import android.Manifest;
import android.app.Instrumentation; // import android.app.Instrumentation;
import android.content.Context; // import android.content.Context;
import androidx.annotation.StringRes; // import androidx.annotation.StringRes;
import androidx.test.platform.app.InstrumentationRegistry; // import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.rule.GrantPermissionRule; // import androidx.test.rule.GrantPermissionRule;
import androidx.test.uiautomator.UiDevice; // import androidx.test.uiautomator.UiDevice;
import android.text.format.DateUtils; // import android.text.format.DateUtils;
//
import org.junit.Before; // import org.junit.Before;
import org.junit.Rule; // import org.junit.Rule;
import org.junit.rules.TestRule; // import org.junit.rules.TestRule;
import org.junit.rules.TestWatcher; // import org.junit.rules.TestWatcher;
import org.junit.runner.Description; // import org.junit.runner.Description;
//
import tools.fastlane.screengrab.Screengrab; // import tools.fastlane.screengrab.Screengrab;
import tools.fastlane.screengrab.UiAutomatorScreenshotStrategy; // import tools.fastlane.screengrab.UiAutomatorScreenshotStrategy;
//
/** // /**
* Base class for tests that take screenshots. // * Base class for tests that take screenshots.
*/ // */
public abstract class ScreenshotTest { // public abstract class ScreenshotTest {
final long waitingTime = DateUtils.SECOND_IN_MILLIS * 10; // final long waitingTime = DateUtils.SECOND_IN_MILLIS * 10;
//
private Context targetContext; // private Context targetContext;
//
UiDevice device; // UiDevice device;
//
@Rule // @Rule
public GrantPermissionRule permissionRule = GrantPermissionRule.grant(Manifest.permission.WRITE_EXTERNAL_STORAGE); // public GrantPermissionRule permissionRule = GrantPermissionRule.grant(Manifest.permission.WRITE_EXTERNAL_STORAGE);
//
@Rule // @Rule
public TestRule screenshotOnFailureRule = new TestWatcher() { // public TestRule screenshotOnFailureRule = new TestWatcher() {
@Override // @Override
protected void failed(Throwable e, Description description) { // protected void failed(Throwable e, Description description) {
// On error take a screenshot so that we can debug it easily // // On error take a screenshot so that we can debug it easily
Screengrab.screenshot("FAILURE-" + getScreenshotName(description)); // Screengrab.screenshot("FAILURE-" + getScreenshotName(description));
} // }
//
private String getScreenshotName(Description description) { // private String getScreenshotName(Description description) {
return description.getClassName().replace(".", "-") // return description.getClassName().replace(".", "-")
+ "_" // + "_"
+ description.getMethodName().replace(".", "-"); // + description.getMethodName().replace(".", "-");
} // }
}; // };
//
@Before // @Before
public void setUpScreenshots() { // public void setUpScreenshots() {
Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation(); // Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
targetContext = instrumentation.getTargetContext(); // targetContext = instrumentation.getTargetContext();
device = UiDevice.getInstance(instrumentation); // device = UiDevice.getInstance(instrumentation);
//
// Use this to switch between default strategy and HostScreencap strategy // // Use this to switch between default strategy and HostScreencap strategy
Screengrab.setDefaultScreenshotStrategy(new UiAutomatorScreenshotStrategy()); // Screengrab.setDefaultScreenshotStrategy(new UiAutomatorScreenshotStrategy());
} // }
//
String getString(@StringRes int resourceId) { // String getString(@StringRes int resourceId) {
return targetContext.getString(resourceId).trim(); // return targetContext.getString(resourceId).trim();
} // }
//
String getString(@StringRes int resourceId, Object... formatArgs) { // String getString(@StringRes int resourceId, Object... formatArgs) {
return targetContext.getString(resourceId, formatArgs).trim(); // return targetContext.getString(resourceId, formatArgs).trim();
} // }
//
public void takeScreenshotsAfterWait(String filename, int waitingTime) throws InterruptedException { // public void takeScreenshotsAfterWait(String filename, int waitingTime) throws InterruptedException {
Thread.sleep(waitingTime); // Thread.sleep(waitingTime);
Screengrab.screenshot(filename); // Screengrab.screenshot(filename);
} // }
} // }

View File

@ -54,13 +54,12 @@ object Versions {
const val flipper = "0.21.0" const val flipper = "0.21.0"
const val soLoader = "0.5.1" const val soLoader = "0.5.1"
const val espresso_core = "2.2.2" const val espresso_version = "3.2.0"
const val espresso_version = "3.0.2"
const val mockwebserver = "3.11.0" const val mockwebserver = "3.11.0"
const val orchestrator = "1.3.0-alpha02" const val orchestrator = "1.3.0-alpha02"
const val tools_test_rules = "1.3.0-alpha02" const val tools_test_rules = "1.3.0-alpha02"
const val tools_test_runner = "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 robolectric = "4.2"
const val google_ads_id_version = "16.0.0" 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 flipper_noop = "com.facebook.flipper:flipper-noop:${Versions.flipper}"
const val soLoader = "com.facebook.soloader:soloader:${Versions.soLoader}" 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_contrib = "androidx.test.espresso:espresso-contrib:${Versions.espresso_version}"
const val espresso_core = "com.android.support.test.espresso:espresso-core:${Versions.espresso_core}" const val espresso_core = "androidx.test.espresso:espresso-core:${Versions.espresso_version}"
const val espresso_idling_resources = "com.android.support.test.espresso:espresso-idling-resource:${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 mockwebserver = "com.squareup.okhttp3:mockwebserver:${Versions.mockwebserver}"
const val orchestrator = "androidx.test:orchestrator:${Versions.orchestrator}" const val orchestrator = "androidx.test:orchestrator:${Versions.orchestrator}"
const val tools_test_rules = "androidx.test:rules:${Versions.tools_test_rules}" 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 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 robolectric = "org.robolectric:robolectric:${Versions.robolectric}"
const val androidx_junit = "androidx.test.ext:junit:${Versions.androidx_test_ext}" const val androidx_junit = "androidx.test.ext:junit:${Versions.androidx_test_ext}"
const val androidx_test_core = "androidx.test:core:${Versions.androidx_testing}" const val androidx_test_core = "androidx.test:core:${Versions.androidx_testing}"