Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(96)

Unified Diff: ios/chrome/browser/ui/settings/passwords_settings_egtest.mm

Issue 2860453004: Fix PasswordsSettingsTestCase.testCopyPasswordToast (Closed)
Patch Set: Add scrolling Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ios/chrome/browser/ui/settings/password_details_collection_view_controller.mm ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ios/chrome/browser/ui/settings/passwords_settings_egtest.mm
diff --git a/ios/chrome/browser/ui/settings/passwords_settings_egtest.mm b/ios/chrome/browser/ui/settings/passwords_settings_egtest.mm
index d3ec529a471b19997416d43f6bbb14c64a625438..b60fbb03a279548e6b86688e91e22d9d58433a35 100644
--- a/ios/chrome/browser/ui/settings/passwords_settings_egtest.mm
+++ b/ios/chrome/browser/ui/settings/passwords_settings_egtest.mm
@@ -26,6 +26,7 @@
#import "ios/chrome/test/earl_grey/chrome_earl_grey_ui.h"
#import "ios/chrome/test/earl_grey/chrome_matchers.h"
#import "ios/chrome/test/earl_grey/chrome_test_case.h"
+#import "ios/third_party/material_components_ios/src/components/Snackbar/src/MaterialSnackbar.h"
#include "ui/base/l10n/l10n_util.h"
#include "url/gurl.h"
@@ -48,6 +49,11 @@ using chrome_test_util::NavigationBarDoneButton;
namespace {
+// How many points to scroll at a time when searching for an element. Setting it
+// too low means searching takes too long and the test might time out. Setting
+// it too high could result in scrolling way past the searched element.
+constexpr int kScrollAmount = 150;
lpromero 2017/05/04 15:55:41 No action needed: I didn't know about constexpr.
vabr (Chromium) 2017/05/04 16:38:20 I'm also getting used to it. It is part of C++11,
+
// Matcher for the Settings button in the tools menu.
id<GREYMatcher> SettingsButton() {
return grey_accessibilityID(kToolsMenuSettingsId);
@@ -121,6 +127,7 @@ GREYLayoutConstraint* Below() {
// Matcher for the Copy site button in Password Details view.
id<GREYMatcher> CopySiteButton() {
return grey_allOf(
+ grey_interactable(),
ButtonWithAccessibilityLabel(
[NSString stringWithFormat:@"%@: %@",
l10n_util::GetNSString(
@@ -135,6 +142,7 @@ id<GREYMatcher> CopySiteButton() {
// Matcher for the Copy username button in Password Details view.
id<GREYMatcher> CopyUsernameButton() {
return grey_allOf(
+ grey_interactable(),
ButtonWithAccessibilityLabel([NSString
stringWithFormat:@"%@: %@",
l10n_util::GetNSString(
@@ -149,6 +157,7 @@ id<GREYMatcher> CopyUsernameButton() {
// Matcher for the Copy password button in Password Details view.
id<GREYMatcher> CopyPasswordButton() {
return grey_allOf(
+ grey_interactable(),
ButtonWithAccessibilityLabel([NSString
stringWithFormat:@"%@: %@",
l10n_util::GetNSString(
@@ -190,6 +199,15 @@ id<GREYMatcher> CopyPasswordButton() {
@implementation PasswordsSettingsTestCase
+- (void)tearDown {
+ // Snackbars triggered by tests stay up for a limited time even if the
+ // settings get closed. Ensure that they are closed to avoid interference with
+ // other tests.
+ [MDCSnackbarManager
+ dismissAndCallCompletionBlocksWithCategory:@"PasswordsSnackbarCategory"];
+ [super tearDown];
+}
+
// Return pref for saving passwords back to the passed value and restores the
// experimental flag for viewing passwords.
- (void)passwordsTearDown:(BOOL)defaultPasswordManagementSetting
@@ -339,8 +357,7 @@ id<GREYMatcher> CopyPasswordButton() {
// Checks that attempts to copy a password provide appropriate feedback,
// both when reauthentication succeeds and when it fails.
-// TODO(crbug.com/718043): Re-enable test.
-- (void)DISABLED_testCopyPasswordToast {
+- (void)testCopyPasswordToast {
[self scopedEnablePasswordManagementAndViewingUI];
// Saving a form is needed for using the "password details" view.
@@ -368,23 +385,37 @@ id<GREYMatcher> CopyPasswordButton() {
// Check the snackbar in case of successful reauthentication.
mock_reauthentication_module.shouldSucceed = YES;
- [[EarlGrey selectElementWithMatcher:CopyPasswordButton()]
+ [[[EarlGrey selectElementWithMatcher:CopyPasswordButton()]
+ usingSearchAction:grey_scrollInDirection(kGREYDirectionDown,
+ kScrollAmount)
+ onElementWithMatcher:grey_accessibilityID(
+ @"PasswordDetailsCollectionViewController")]
performAction:grey_tap()];
[[GREYUIThreadExecutor sharedInstance] drainUntilIdle];
NSString* snackbarLabel =
l10n_util::GetNSString(IDS_IOS_SETTINGS_PASSWORD_WAS_COPIED_MESSAGE);
+ // The tap checks the existence of the snackbar and also closes it.
[[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(snackbarLabel)]
- assertWithMatcher:grey_notNil()];
+ performAction:grey_tap()];
+ // Wait until the fade-out animation completes.
+ [[GREYUIThreadExecutor sharedInstance] drainUntilIdle];
// Check the snackbar in case of failed reauthentication.
mock_reauthentication_module.shouldSucceed = NO;
- [[EarlGrey selectElementWithMatcher:CopyPasswordButton()]
+ [[[EarlGrey selectElementWithMatcher:CopyPasswordButton()]
+ usingSearchAction:grey_scrollInDirection(kGREYDirectionDown,
+ kScrollAmount)
+ onElementWithMatcher:grey_accessibilityID(
+ @"PasswordDetailsCollectionViewController")]
performAction:grey_tap()];
[[GREYUIThreadExecutor sharedInstance] drainUntilIdle];
snackbarLabel =
l10n_util::GetNSString(IDS_IOS_SETTINGS_PASSWORD_WAS_NOT_COPIED_MESSAGE);
+ // The tap checks the existence of the snackbar and also closes it.
[[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(snackbarLabel)]
- assertWithMatcher:grey_notNil()];
+ performAction:grey_tap()];
+ // Wait until the fade-out animation completes.
+ [[GREYUIThreadExecutor sharedInstance] drainUntilIdle];
[self tapBackArrow];
[self tapBackArrow];
@@ -405,13 +436,20 @@ id<GREYMatcher> CopyPasswordButton() {
performAction:grey_tap()];
// Check the snackbar.
- [[EarlGrey selectElementWithMatcher:CopyUsernameButton()]
+ [[[EarlGrey selectElementWithMatcher:CopyUsernameButton()]
+ usingSearchAction:grey_scrollInDirection(kGREYDirectionDown,
+ kScrollAmount)
+ onElementWithMatcher:grey_accessibilityID(
+ @"PasswordDetailsCollectionViewController")]
performAction:grey_tap()];
[[GREYUIThreadExecutor sharedInstance] drainUntilIdle];
NSString* snackbarLabel =
l10n_util::GetNSString(IDS_IOS_SETTINGS_USERNAME_WAS_COPIED_MESSAGE);
+ // The tap checks the existence of the snackbar and also closes it.
[[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(snackbarLabel)]
- assertWithMatcher:grey_notNil()];
+ performAction:grey_tap()];
+ // Wait until the fade-out animation completes.
+ [[GREYUIThreadExecutor sharedInstance] drainUntilIdle];
[self tapBackArrow];
[self tapBackArrow];
@@ -432,13 +470,20 @@ id<GREYMatcher> CopyPasswordButton() {
performAction:grey_tap()];
// Check the snackbar.
- [[EarlGrey selectElementWithMatcher:CopySiteButton()]
+ [[[EarlGrey selectElementWithMatcher:CopySiteButton()]
+ usingSearchAction:grey_scrollInDirection(kGREYDirectionDown,
+ kScrollAmount)
+ onElementWithMatcher:grey_accessibilityID(
+ @"PasswordDetailsCollectionViewController")]
performAction:grey_tap()];
[[GREYUIThreadExecutor sharedInstance] drainUntilIdle];
NSString* snackbarLabel =
l10n_util::GetNSString(IDS_IOS_SETTINGS_SITE_WAS_COPIED_MESSAGE);
+ // The tap checks the existence of the snackbar and also closes it.
[[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(snackbarLabel)]
- assertWithMatcher:grey_notNil()];
+ performAction:grey_tap()];
+ // Wait until the fade-out animation completes.
+ [[GREYUIThreadExecutor sharedInstance] drainUntilIdle];
[self tapBackArrow];
[self tapBackArrow];
« no previous file with comments | « ios/chrome/browser/ui/settings/password_details_collection_view_controller.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698