// Copyright 2014 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #import <EarlGrey/EarlGrey.h> #import <XCTest/XCTest.h> #import "AppDelegate.h" #import "FullScreenViewController.h" @interface FlutterTests : XCTestCase @end @implementation FlutterTests - (void)expectSemanticsNotification:(UIViewController*)viewController engine:(FlutterEngine*)engine { // Flutter app will only send semantics update if test passes in main.dart. [self expectationForNotification:FlutterSemanticsUpdateNotification object:viewController handler:nil]; [self waitForExpectationsWithTimeout:30.0 handler:nil]; } - (void)checkAppConnection { FlutterEngine *engine = [((AppDelegate *)[[UIApplication sharedApplication] delegate]) engine]; UINavigationController *navController = (UINavigationController *)((AppDelegate *) [[UIApplication sharedApplication] delegate]) .window.rootViewController; __weak UIViewController *weakViewController = navController.visibleViewController; [self expectSemanticsNotification:weakViewController engine:engine]; GREYAssertNotNil(weakViewController, @"Expected non-nil FullScreenViewController."); } - (void)testFullScreenCanPop { [[EarlGrey selectElementWithMatcher:grey_keyWindow()] assertWithMatcher:grey_sufficientlyVisible()]; [[EarlGrey selectElementWithMatcher:grey_buttonTitle(@"Full Screen (Cold)")] performAction:grey_tap()]; [self checkAppConnection]; } @end