Index: ios/chrome/browser/ui/print/print_controller_egtest.mm |
diff --git a/ios/chrome/browser/ui/print/print_controller_egtest.mm b/ios/chrome/browser/ui/print/print_controller_egtest.mm |
new file mode 100644 |
index 0000000000000000000000000000000000000000..59525e1dde5df6a9ef58a06ea9ac97022b1ccfba |
--- /dev/null |
+++ b/ios/chrome/browser/ui/print/print_controller_egtest.mm |
@@ -0,0 +1,87 @@ |
+// Copyright 2016 The Chromium 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 <UIKit/UIKit.h> |
+#import <XCTest/XCTest.h> |
+ |
+#import "ios/chrome/browser/ui/uikit_ui_util.h" |
+#include "ios/chrome/grit/ios_strings.h" |
+#include "ios/chrome/test/app/navigation_test_util.h" |
+#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/web/public/test/http_server.h" |
+#import "ios/web/public/test/http_server_util.h" |
+#include "ui/base/l10n/l10n_util_mac.h" |
+#include "url/gurl.h" |
+ |
+namespace { |
+// URL which leads to a PDF file. |
+const char kPDFURL[] = "http://ios/testing/data/http_server_files/testpage.pdf"; |
+ |
+// A test HTML URL. |
+const char kHTMLURL[] = "http://test"; |
+} // namespace |
+ |
+// Print test cases. These are Earl Grey integration tests. |
+// They test printing a normal page and a pdf. |
+@interface PrintControllerTestCase : ChromeTestCase |
+ |
+// Tests that it is possible to print the current page by opening the sharing |
+// menu, tapping on print and verifying it displays the print page. |
+- (void)printCurrentPage; |
+ |
+@end |
+ |
+@implementation PrintControllerTestCase |
+ |
+// Tests that the AirPrint menu successfully loads when a normal web page is |
+// loaded. |
+- (void)testPrintNormalPage { |
+ GURL url = web::test::HttpServer::MakeUrl(kHTMLURL); |
+ std::map<GURL, std::string> responses; |
+ std::string response = "Test"; |
+ responses[url] = response; |
+ web::test::SetUpSimpleHttpServer(responses); |
+ |
+ chrome_test_util::LoadUrl(url); |
+ id<GREYMatcher> response1Matcher = |
+ chrome_test_util::webViewContainingText(response); |
+ [[EarlGrey selectElementWithMatcher:response1Matcher] |
+ assertWithMatcher:grey_notNil()]; |
+ |
+ [self printCurrentPage]; |
+} |
+ |
+// Tests that the AirPrint menu successfully loads when a PDF is loaded. |
+- (void)testPrintPDF { |
+ web::test::SetUpFileBasedHttpServer(); |
+ GURL url = web::test::HttpServer::MakeUrl(kPDFURL); |
+ chrome_test_util::LoadUrl(url); |
+ |
+ [self printCurrentPage]; |
+} |
+ |
+- (void)printCurrentPage { |
+ if (IsCompact()) |
+ [ChromeEarlGreyUI openToolsMenu]; |
+ |
+ NSString* shareLabel = l10n_util::GetNSString(IDS_IOS_TOOLS_MENU_SHARE); |
+ [[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(shareLabel)] |
+ performAction:grey_tap()]; |
+ |
+ id<GREYMatcher> printButton = |
+ grey_allOf(grey_accessibilityLabel(@"Print"), |
+ grey_accessibilityTrait(UIAccessibilityTraitButton), nil); |
+ [[EarlGrey selectElementWithMatcher:printButton] performAction:grey_tap()]; |
+ |
+ id<GREYMatcher> printerOptionButton = grey_allOf( |
+ grey_accessibilityLabel(@"Printer Options"), |
+ grey_not(grey_accessibilityTrait(UIAccessibilityTraitHeader)), nil); |
+ [[EarlGrey selectElementWithMatcher:printerOptionButton] |
+ assertWithMatcher:grey_sufficientlyVisible()]; |
+} |
+ |
+@end |