Chromium Code Reviews| Index: ios/chrome/browser/ui/stack_view/stack_view_egtest.mm |
| diff --git a/ios/chrome/browser/ui/stack_view/stack_view_egtest.mm b/ios/chrome/browser/ui/stack_view/stack_view_egtest.mm |
| index 6d2f88fcccce4ea72a79d2f603bd590b1b6bd6a0..ad9486b7450ea51e30c7522dfdd6c90a96d2c2eb 100644 |
| --- a/ios/chrome/browser/ui/stack_view/stack_view_egtest.mm |
| +++ b/ios/chrome/browser/ui/stack_view/stack_view_egtest.mm |
| @@ -24,6 +24,7 @@ |
| #import "ios/chrome/test/earl_grey/chrome_matchers.h" |
| #import "ios/chrome/test/earl_grey/chrome_test_case.h" |
| #include "ios/testing/earl_grey/disabled_test_macros.h" |
| +#import "ios/testing/wait_util.h" |
| #if !defined(__has_feature) || !__has_feature(objc_arc) |
| #error "This file requires ARC support." |
| @@ -50,8 +51,28 @@ |
| return ViewMatchingView([chrome_test_util::GetStackViewController() view]); |
| } |
| +// Waits for the Stack View to be active/inactive. |
| +void WaitForStackViewActive(bool active) { |
|
Eugene But (OOO till 7-30)
2017/03/07 16:08:15
Do you want to return bool from this method and as
kkhorimoto
2017/03/07 19:05:03
The condition we're checking below is dependent on
Eugene But (OOO till 7-30)
2017/03/07 19:21:12
I did a search for WaitFor methods in EG tests and
kkhorimoto
2017/03/07 21:19:50
Fixed
|
| + // Wait for the tab switcher to be active or inactive. |
| + NSString* activeTabSwitcherDescription = |
| + [NSString stringWithFormat:@"Waiting for tab switcher to be %@.", |
| + active ? @"active" : @"inactive"]; |
| + BOOL (^activeTabSwitcherBlock) |
| + () = ^BOOL { |
| + BOOL isActive = chrome_test_util::GetStackViewController() && |
| + chrome_test_util::IsTabSwitcherActive(); |
| + return active ? isActive : !isActive; |
| + }; |
| + GREYCondition* activeTabSwitcherCondition = |
| + [GREYCondition conditionWithName:activeTabSwitcherDescription |
| + block:activeTabSwitcherBlock]; |
| + [activeTabSwitcherCondition |
| + waitWithTimeout:testing::kWaitForUIElementTimeout]; |
| +} |
| + |
| // Waits for the Stack View to be visible/hidden. |
| void CheckForStackViewVisibility(bool visible) { |
| + // Verify the visibility of the stack view. |
|
Eugene But (OOO till 7-30)
2017/03/07 16:08:15
Could you please promote this comment to a functio
kkhorimoto
2017/03/07 19:05:03
Done.
|
| id<GREYMatcher> visibilityMatcher = |
| grey_allOf(visible ? grey_sufficientlyVisible() : grey_notVisible(), |
| visible ? grey_notNil() : grey_nil(), nil); |
| @@ -70,6 +91,7 @@ void OpenStackView() { |
| [[EarlGrey selectElementWithMatcher:stackButtonMatcher] |
| performAction:grey_tap()]; |
| // Verify that a StackViewController was presented. |
| + WaitForStackViewActive(true); |
| CheckForStackViewVisibility(true); |
| } |
| @@ -105,6 +127,7 @@ void OpenNewTabUsingStackView() { |
| ShowDeckWithType(DeckType::NORMAL); |
| [[EarlGrey selectElementWithMatcher:grey_accessibilityID(@"New Tab")] |
| performAction:grey_tap()]; |
| + WaitForStackViewActive(false); |
| CheckForStackViewVisibility(false); |
| } |
| @@ -121,6 +144,7 @@ void OpenNewIncognitoTabUsingStackView() { |
| NSString* newIncognitoTabID = kToolsMenuNewIncognitoTabId; |
| [[EarlGrey selectElementWithMatcher:grey_accessibilityID(newIncognitoTabID)] |
| performAction:grey_tap()]; |
| + WaitForStackViewActive(false); |
| CheckForStackViewVisibility(false); |
| } |
| @@ -137,6 +161,7 @@ void SelectTabUsingStackView(Tab* tab) { |
| [[EarlGrey selectElementWithMatcher:ViewMatchingView(card_title_label)] |
| performAction:grey_tap()]; |
| // Wait for the StackViewController to be dismissed. |
| + WaitForStackViewActive(false); |
| CheckForStackViewVisibility(false); |
| // Checks that the next Tab has been selected. |
| GREYAssertEqual(tab, chrome_test_util::GetCurrentTab(), |
| @@ -187,13 +212,7 @@ - (void)testCloseTab { |
| } |
| // Tests closing all Tabs in the stack view. |
| -// TODO(crbug.com/693517): Re-enable this test on simulator. |
| -#if TARGET_IPHONE_SIMULATOR |
| -#define MAYBE_testCloseAllTabs FLAKY_testCloseAllTabs |
| -#else |
| -#define MAYBE_testCloseAllTabs testCloseAllTabs |
| -#endif |
| -- (void)MAYBE_testCloseAllTabs { |
| +- (void)testCloseAllTabs { |
| // The StackViewController is only used on iPhones. |
| if (IsIPadIdiom()) |
| EARL_GREY_TEST_SKIPPED(@"Stack view is not used on iPads."); |