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
// 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'

View File

@ -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<HomeActivity> = 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<HomeActivity> = 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")
// }
// }

View File

@ -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<HomeActivity> = 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<HomeActivity> = 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()

View File

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

View File

@ -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}"