| 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."); | 
|  |