Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(38)

Side by Side Diff: ios/chrome/browser/ui/webui/web_ui_egtest.mm

Issue 2798773002: Create ChromeEarlGrey waitForWebViewContainingText. (Closed)
Patch Set: review comments Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #import <XCTest/XCTest.h> 5 #import <XCTest/XCTest.h>
6 6
7 #include "base/mac/foundation_util.h" 7 #include "base/mac/foundation_util.h"
8 #include "base/metrics/field_trial.h" 8 #include "base/metrics/field_trial.h"
9 #include "base/strings/sys_string_conversions.h" 9 #include "base/strings/sys_string_conversions.h"
10 #include "components/strings/grit/components_strings.h" 10 #include "components/strings/grit/components_strings.h"
11 #include "components/version_info/version_info.h" 11 #include "components/version_info/version_info.h"
12 #include "ios/chrome/browser/chrome_url_constants.h" 12 #include "ios/chrome/browser/chrome_url_constants.h"
13 #include "ios/chrome/browser/experimental_flags.h" 13 #include "ios/chrome/browser/experimental_flags.h"
14 #import "ios/chrome/browser/ui/omnibox/omnibox_text_field_ios.h" 14 #import "ios/chrome/browser/ui/omnibox/omnibox_text_field_ios.h"
15 #include "ios/chrome/test/app/navigation_test_util.h" 15 #include "ios/chrome/test/app/navigation_test_util.h"
16 #include "ios/chrome/test/app/web_view_interaction_test_util.h" 16 #include "ios/chrome/test/app/web_view_interaction_test_util.h"
17 #import "ios/chrome/test/earl_grey/chrome_earl_grey.h" 17 #import "ios/chrome/test/earl_grey/chrome_earl_grey.h"
18 #import "ios/chrome/test/earl_grey/chrome_earl_grey_ui.h"
18 #import "ios/chrome/test/earl_grey/chrome_matchers.h" 19 #import "ios/chrome/test/earl_grey/chrome_matchers.h"
19 #import "ios/chrome/test/earl_grey/chrome_test_case.h" 20 #import "ios/chrome/test/earl_grey/chrome_test_case.h"
20 #import "ios/testing/wait_util.h" 21 #import "ios/testing/wait_util.h"
21 #import "ios/web/public/web_client.h" 22 #import "ios/web/public/web_client.h"
22 #include "ui/base/device_form_factor.h" 23 #include "ui/base/device_form_factor.h"
23 #include "ui/base/l10n/l10n_util.h" 24 #include "ui/base/l10n/l10n_util.h"
24 #include "url/scheme_host_port.h" 25 #include "url/scheme_host_port.h"
25 26
26 #if !defined(__has_feature) || !__has_feature(objc_arc) 27 #if !defined(__has_feature) || !__has_feature(objc_arc)
27 #error "This file requires ARC support." 28 #error "This file requires ARC support."
28 #endif 29 #endif
29 30
30 using chrome_test_util::BackButton; 31 using chrome_test_util::BackButton;
31 using chrome_test_util::ForwardButton; 32 using chrome_test_util::ForwardButton;
32 using chrome_test_util::TapWebViewElementWithId; 33 using chrome_test_util::TapWebViewElementWithId;
33 using chrome_test_util::WebViewContainingText;
34 34
35 namespace { 35 namespace {
36 36
37 // Loads WebUI page with given |host|. 37 // Loads WebUI page with given |host|.
38 void LoadWebUIUrl(const std::string& host) { 38 void LoadWebUIUrl(const std::string& host) {
39 GURL web_ui_url(url::SchemeHostPort(kChromeUIScheme, host, 0).Serialize()); 39 GURL web_ui_url(url::SchemeHostPort(kChromeUIScheme, host, 0).Serialize());
40 [ChromeEarlGrey loadURL:web_ui_url]; 40 [ChromeEarlGrey loadURL:web_ui_url];
41 } 41 }
42 42
43 // Adds wait for omnibox text matcher so that omnibox text can be updated. 43 // Adds wait for omnibox text matcher so that omnibox text can be updated.
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 79
80 @implementation WebUITestCase 80 @implementation WebUITestCase
81 81
82 // Tests that chrome://version renders and contains correct version number and 82 // Tests that chrome://version renders and contains correct version number and
83 // user agent string. 83 // user agent string.
84 - (void)testVersion { 84 - (void)testVersion {
85 LoadWebUIUrl(kChromeUIVersionHost); 85 LoadWebUIUrl(kChromeUIVersionHost);
86 86
87 // Verify that app version is present on the page. 87 // Verify that app version is present on the page.
88 const std::string version = version_info::GetVersionNumber(); 88 const std::string version = version_info::GetVersionNumber();
89 [[EarlGrey selectElementWithMatcher:WebViewContainingText(version)] 89 [ChromeEarlGrey waitForWebViewContainingText:version];
90 assertWithMatcher:grey_notNil()];
91 90
92 // Verify that mobile User Agent string is present on the page. 91 // Verify that mobile User Agent string is present on the page.
93 const std::string userAgent = 92 const std::string userAgent =
94 web::GetWebClient()->GetUserAgent(web::UserAgentType::MOBILE); 93 web::GetWebClient()->GetUserAgent(web::UserAgentType::MOBILE);
95 [[EarlGrey selectElementWithMatcher:WebViewContainingText(userAgent)] 94 [ChromeEarlGrey waitForWebViewContainingText:userAgent];
96 assertWithMatcher:grey_notNil()];
97 } 95 }
98 96
99 // Tests that chrome://physical-web renders and the page title is present. 97 // Tests that chrome://physical-web renders and the page title is present.
100 - (void)testPhysicalWeb { 98 - (void)testPhysicalWeb {
101 // Enable the Physical Web via Chrome variation. 99 // Enable the Physical Web via Chrome variation.
102 base::FieldTrialList::CreateFieldTrial("PhysicalWebEnabled", "Enabled"); 100 base::FieldTrialList::CreateFieldTrial("PhysicalWebEnabled", "Enabled");
103 101
104 LoadWebUIUrl(kChromeUIPhysicalWebHost); 102 LoadWebUIUrl(kChromeUIPhysicalWebHost);
105 103
106 // Verify that the title string is present on the page. 104 // Verify that the title string is present on the page.
107 std::string pageTitle = l10n_util::GetStringUTF8(IDS_PHYSICAL_WEB_UI_TITLE); 105 const std::string pageTitle =
108 [[EarlGrey selectElementWithMatcher:WebViewContainingText(pageTitle)] 106 l10n_util::GetStringUTF8(IDS_PHYSICAL_WEB_UI_TITLE);
109 assertWithMatcher:grey_notNil()]; 107 [ChromeEarlGrey waitForWebViewContainingText:pageTitle];
110 } 108 }
111 109
112 // Tests that clicking on a link for a native page from chrome://chrome-urls 110 // Tests that clicking on a link for a native page from chrome://chrome-urls
113 // navigates to that page. 111 // navigates to that page.
114 - (void)testChromeURLNavigateToNativePage { 112 - (void)testChromeURLNavigateToNativePage {
115 LoadWebUIUrl(kChromeUIChromeURLsHost); 113 LoadWebUIUrl(kChromeUIChromeURLsHost);
116 114
117 // Tap on chrome://terms link on the page. 115 // Tap on chrome://terms link on the page.
118 chrome_test_util::TapWebViewElementWithId(kChromeUITermsHost); 116 chrome_test_util::TapWebViewElementWithId(kChromeUITermsHost);
119 117
120 // Verify that the resulting page is chrome://terms. 118 // Verify that the resulting page is chrome://terms.
121 [[EarlGrey selectElementWithMatcher:WaitForOmniboxText("chrome://terms")] 119 [[EarlGrey selectElementWithMatcher:WaitForOmniboxText("chrome://terms")]
122 assertWithMatcher:grey_sufficientlyVisible()]; 120 assertWithMatcher:grey_sufficientlyVisible()];
123 const std::string kTermsText = "Google Chrome Terms of Service"; 121 const std::string kTermsText = "Google Chrome Terms of Service";
124 [[EarlGrey selectElementWithMatcher:WebViewContainingText(kTermsText)] 122 [ChromeEarlGrey waitForWebViewContainingText:kTermsText];
125 assertWithMatcher:grey_notNil()];
126 } 123 }
127 124
128 // Tests that back navigation functions properly after navigation via anchor 125 // Tests that back navigation functions properly after navigation via anchor
129 // click. 126 // click.
130 - (void)testChromeURLBackNavigationFromAnchorClick { 127 - (void)testChromeURLBackNavigationFromAnchorClick {
131 LoadWebUIUrl(kChromeUIChromeURLsHost); 128 LoadWebUIUrl(kChromeUIChromeURLsHost);
132 129
133 // Tap on chrome://version link on the page. 130 // Tap on chrome://version link on the page.
134 chrome_test_util::TapWebViewElementWithId(kChromeUIVersionHost); 131 chrome_test_util::TapWebViewElementWithId(kChromeUIVersionHost);
135 132
136 // Verify that the resulting page is chrome://version. 133 // Verify that the resulting page is chrome://version.
137 [[EarlGrey selectElementWithMatcher:WaitForOmniboxText("chrome://version")] 134 [[EarlGrey selectElementWithMatcher:WaitForOmniboxText("chrome://version")]
138 assertWithMatcher:grey_sufficientlyVisible()]; 135 assertWithMatcher:grey_sufficientlyVisible()];
139 const std::string kAuthorsText = "The Chromium Authors"; 136 [ChromeEarlGrey waitForWebViewContainingText:"The Chromium Authors"];
140 [[EarlGrey selectElementWithMatcher:WebViewContainingText(kAuthorsText)]
141 assertWithMatcher:grey_notNil()];
142 137
143 // Tap the back button in the toolbar and verify that the resulting page is 138 // Tap the back button in the toolbar and verify that the resulting page is
144 // the previously visited page chrome://chrome-urls. 139 // the previously visited page chrome://chrome-urls.
145 [[EarlGrey selectElementWithMatcher:BackButton()] performAction:grey_tap()]; 140 [[EarlGrey selectElementWithMatcher:BackButton()] performAction:grey_tap()];
146 [[EarlGrey 141 [[EarlGrey
147 selectElementWithMatcher:WaitForOmniboxText("chrome://chrome-urls")] 142 selectElementWithMatcher:WaitForOmniboxText("chrome://chrome-urls")]
148 assertWithMatcher:grey_sufficientlyVisible()]; 143 assertWithMatcher:grey_sufficientlyVisible()];
149 const std::string kChromeURLsText = "List of Chrome URLs"; 144 [ChromeEarlGrey waitForWebViewContainingText:"List of Chrome URLs"];
150 [[EarlGrey selectElementWithMatcher:WebViewContainingText(kChromeURLsText)]
151 assertWithMatcher:grey_notNil()];
152 } 145 }
153 146
154 // Tests that back and forward navigation between chrome URLs functions 147 // Tests that back and forward navigation between chrome URLs functions
155 // properly. 148 // properly.
156 - (void)testChromeURLBackAndForwardNavigation { 149 - (void)testChromeURLBackAndForwardNavigation {
157 // Navigate to the first URL chrome://version. 150 // Navigate to the first URL chrome://version.
158 LoadWebUIUrl(kChromeUIVersionHost); 151 LoadWebUIUrl(kChromeUIVersionHost);
159 152
160 // Navigate to the second URL chrome://flags. 153 // Navigate to the second URL chrome://flags.
161 LoadWebUIUrl(kChromeUIFlagsHost); 154 LoadWebUIUrl(kChromeUIFlagsHost);
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 [[EarlGrey selectElementWithMatcher:WaitForOmniboxText(kChromeInvalidURL)] 199 [[EarlGrey selectElementWithMatcher:WaitForOmniboxText(kChromeInvalidURL)]
207 assertWithMatcher:grey_sufficientlyVisible()]; 200 assertWithMatcher:grey_sufficientlyVisible()];
208 NSString* kError = 201 NSString* kError =
209 l10n_util::GetNSString(IDS_ERRORPAGES_HEADING_NOT_AVAILABLE); 202 l10n_util::GetNSString(IDS_ERRORPAGES_HEADING_NOT_AVAILABLE);
210 id<GREYMatcher> messageMatcher = [GREYMatchers matcherForText:kError]; 203 id<GREYMatcher> messageMatcher = [GREYMatchers matcherForText:kError];
211 [[EarlGrey selectElementWithMatcher:messageMatcher] 204 [[EarlGrey selectElementWithMatcher:messageMatcher]
212 assertWithMatcher:grey_notNil()]; 205 assertWithMatcher:grey_notNil()];
213 } 206 }
214 207
215 @end 208 @end
OLDNEW
« no previous file with comments | « ios/chrome/browser/ui/toolbar/toolbar_egtest.mm ('k') | ios/chrome/browser/web/browsing_egtest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698