| 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..ea01d1bf09f07bea88ffb22718e0d04af4ce9e07 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,7 +51,30 @@
|
| return ViewMatchingView([chrome_test_util::GetStackViewController() view]);
|
| }
|
|
|
| -// Waits for the Stack View to be visible/hidden.
|
| +// Waits for the Stack View to be active/inactive.
|
| +void WaitForStackViewActive(bool active) {
|
| + NSString* activeStatusString = active ? @"active" : @"inactive";
|
| + NSString* activeTabSwitcherDescription =
|
| + [NSString stringWithFormat:@"Waiting for tab switcher to be %@.",
|
| + activeStatusString];
|
| + BOOL (^activeTabSwitcherBlock)
|
| + () = ^BOOL {
|
| + BOOL isActive = chrome_test_util::GetStackViewController() &&
|
| + chrome_test_util::IsTabSwitcherActive();
|
| + return active ? isActive : !isActive;
|
| + };
|
| + GREYCondition* activeTabSwitcherCondition =
|
| + [GREYCondition conditionWithName:activeTabSwitcherDescription
|
| + block:activeTabSwitcherBlock];
|
| + NSString* assertDescription = [NSString
|
| + stringWithFormat:@"Tab switcher did not become %@.", activeStatusString];
|
| +
|
| + GREYAssert([activeTabSwitcherCondition
|
| + waitWithTimeout:testing::kWaitForUIElementTimeout],
|
| + assertDescription);
|
| +}
|
| +
|
| +// Verify the visibility of the stack view.
|
| void CheckForStackViewVisibility(bool visible) {
|
| id<GREYMatcher> visibilityMatcher =
|
| grey_allOf(visible ? grey_sufficientlyVisible() : grey_notVisible(),
|
| @@ -70,6 +94,7 @@ void OpenStackView() {
|
| [[EarlGrey selectElementWithMatcher:stackButtonMatcher]
|
| performAction:grey_tap()];
|
| // Verify that a StackViewController was presented.
|
| + WaitForStackViewActive(true);
|
| CheckForStackViewVisibility(true);
|
| }
|
|
|
| @@ -105,6 +130,7 @@ void OpenNewTabUsingStackView() {
|
| ShowDeckWithType(DeckType::NORMAL);
|
| [[EarlGrey selectElementWithMatcher:grey_accessibilityID(@"New Tab")]
|
| performAction:grey_tap()];
|
| + WaitForStackViewActive(false);
|
| CheckForStackViewVisibility(false);
|
| }
|
|
|
| @@ -121,6 +147,7 @@ void OpenNewIncognitoTabUsingStackView() {
|
| NSString* newIncognitoTabID = kToolsMenuNewIncognitoTabId;
|
| [[EarlGrey selectElementWithMatcher:grey_accessibilityID(newIncognitoTabID)]
|
| performAction:grey_tap()];
|
| + WaitForStackViewActive(false);
|
| CheckForStackViewVisibility(false);
|
| }
|
|
|
| @@ -137,6 +164,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 +215,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.");
|
|
|