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

Side by Side Diff: ios/chrome/browser/ui/fullscreen_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 <EarlGrey/EarlGrey.h> 5 #import <EarlGrey/EarlGrey.h>
6 #import <UIKit/UIKit.h> 6 #import <UIKit/UIKit.h>
7 #import <XCTest/XCTest.h> 7 #import <XCTest/XCTest.h>
8 8
9 #include "base/ios/ios_util.h" 9 #include "base/ios/ios_util.h"
10 #include "base/mac/bind_objc_block.h" 10 #include "base/mac/bind_objc_block.h"
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 NSError* error = nil; 70 NSError* error = nil;
71 [[EarlGrey selectElementWithMatcher:chrome_test_util::OmniboxText( 71 [[EarlGrey selectElementWithMatcher:chrome_test_util::OmniboxText(
72 expectedURL.GetContent())] 72 expectedURL.GetContent())]
73 assertWithMatcher:grey_notNil() 73 assertWithMatcher:grey_notNil()
74 error:&error]; 74 error:&error];
75 return (error == nil); 75 return (error == nil);
76 }; 76 };
77 GREYAssert(testing::WaitUntilConditionOrTimeout(1.0, condition), description); 77 GREYAssert(testing::WaitUntilConditionOrTimeout(1.0, condition), description);
78 } 78 }
79 79
80 // Asserts that the current web view containers contains |text|.
81 void AssertStringIsPresentOnPage(const std::string& text) {
82 id<GREYMatcher> response_matcher =
83 chrome_test_util::WebViewContainingText(text);
84 [[EarlGrey selectElementWithMatcher:response_matcher]
85 assertWithMatcher:grey_notNil()];
86 }
87
88 } // namespace 80 } // namespace
89 81
90 #pragma mark - Tests 82 #pragma mark - Tests
91 83
92 // Fullscreens tests for Chrome. 84 // Fullscreens tests for Chrome.
93 @interface FullscreenTestCase : ChromeTestCase 85 @interface FullscreenTestCase : ChromeTestCase
94 86
95 @end 87 @end
96 88
97 @implementation FullscreenTestCase 89 @implementation FullscreenTestCase
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
163 // Test that the toolbar is hidden after a user swipes up. 155 // Test that the toolbar is hidden after a user swipes up.
164 HideToolbarUsingUI(); 156 HideToolbarUsingUI();
165 [ChromeEarlGreyUI waitForToolbarVisible:NO]; 157 [ChromeEarlGreyUI waitForToolbarVisible:NO];
166 } 158 }
167 159
168 // Tests that link clicks from a chrome:// to chrome:// link result in the 160 // Tests that link clicks from a chrome:// to chrome:// link result in the
169 // header being shown even if was not previously shown. 161 // header being shown even if was not previously shown.
170 - (void)testChromeToChromeURLKeepsHeaderOnScreen { 162 - (void)testChromeToChromeURLKeepsHeaderOnScreen {
171 const GURL kChromeAboutURL("chrome://chrome-urls"); 163 const GURL kChromeAboutURL("chrome://chrome-urls");
172 [ChromeEarlGrey loadURL:kChromeAboutURL]; 164 [ChromeEarlGrey loadURL:kChromeAboutURL];
173 165 [ChromeEarlGrey waitForWebViewContainingText:"chrome://version"];
174 AssertStringIsPresentOnPage("chrome://version");
175 166
176 // Hide the toolbar. The page is not long enough to dismiss the toolbar using 167 // Hide the toolbar. The page is not long enough to dismiss the toolbar using
177 // the UI so we have to zoom in. 168 // the UI so we have to zoom in.
178 const char script[] = 169 const char script[] =
179 "(function(){" 170 "(function(){"
180 "var metas = document.getElementsByTagName('meta');" 171 "var metas = document.getElementsByTagName('meta');"
181 "for (var i=0; i<metas.length; i++) {" 172 "for (var i=0; i<metas.length; i++) {"
182 " if (metas[i].getAttribute('name') == 'viewport') {" 173 " if (metas[i].getAttribute('name') == 'viewport') {"
183 " metas[i].setAttribute('content', 'width=10');" 174 " metas[i].setAttribute('content', 'width=10');"
184 " return;" 175 " return;"
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 std::map<GURL, std::string> responses; 234 std::map<GURL, std::string> responses;
244 const GURL URL = web::test::HttpServer::MakeUrl("http://origin"); 235 const GURL URL = web::test::HttpServer::MakeUrl("http://origin");
245 // This is a tall page -- necessary to make sure scrolling can hide away the 236 // This is a tall page -- necessary to make sure scrolling can hide away the
246 // toolbar safely-- and with a link to reload itself. 237 // toolbar safely-- and with a link to reload itself.
247 responses[URL] = 238 responses[URL] =
248 "<p style='height:200em'>Tall page</p>" 239 "<p style='height:200em'>Tall page</p>"
249 "<a onclick='window.location.reload();' id='link'>link</a>"; 240 "<a onclick='window.location.reload();' id='link'>link</a>";
250 web::test::SetUpSimpleHttpServer(responses); 241 web::test::SetUpSimpleHttpServer(responses);
251 242
252 [ChromeEarlGrey loadURL:URL]; 243 [ChromeEarlGrey loadURL:URL];
253 AssertStringIsPresentOnPage("Tall page"); 244 [ChromeEarlGrey waitForWebViewContainingText:"Tall page"];
254 245
255 // Hide the toolbar. 246 // Hide the toolbar.
256 HideToolbarUsingUI(); 247 HideToolbarUsingUI();
257 [ChromeEarlGreyUI waitForToolbarVisible:NO]; 248 [ChromeEarlGreyUI waitForToolbarVisible:NO];
258 249
259 chrome_test_util::TapWebViewElementWithId("link"); 250 chrome_test_util::TapWebViewElementWithId("link");
260 251
261 // Main test is here: Make sure the header is still visible! 252 // Main test is here: Make sure the header is still visible!
262 [ChromeEarlGreyUI waitForToolbarVisible:YES]; 253 [ChromeEarlGreyUI waitForToolbarVisible:YES];
263 } 254 }
(...skipping 19 matching lines...) Expand all
283 javaScript = "window.close()"; 274 javaScript = "window.close()";
284 responses[destinationURL] = base::StringPrintf( 275 responses[destinationURL] = base::StringPrintf(
285 "<p style='height:200em'>whatever</p><a onclick='%s' " 276 "<p style='height:200em'>whatever</p><a onclick='%s' "
286 "id='link2'>link2</a>", 277 "id='link2'>link2</a>",
287 javaScript.c_str()); 278 javaScript.c_str());
288 279
289 web::test::SetUpSimpleHttpServer(responses); 280 web::test::SetUpSimpleHttpServer(responses);
290 chrome_test_util::SetContentSettingsBlockPopups(CONTENT_SETTING_ALLOW); 281 chrome_test_util::SetContentSettingsBlockPopups(CONTENT_SETTING_ALLOW);
291 282
292 [ChromeEarlGrey loadURL:URL]; 283 [ChromeEarlGrey loadURL:URL];
293 AssertStringIsPresentOnPage("link1"); 284 [ChromeEarlGrey waitForWebViewContainingText:"link1"];
294 chrome_test_util::AssertMainTabCount(1); 285 chrome_test_util::AssertMainTabCount(1);
295 286
296 // Hide the toolbar. 287 // Hide the toolbar.
297 HideToolbarUsingUI(); 288 HideToolbarUsingUI();
298 [ChromeEarlGreyUI waitForToolbarVisible:NO]; 289 [ChromeEarlGreyUI waitForToolbarVisible:NO];
299 290
300 // Open new window. 291 // Open new window.
301 chrome_test_util::TapWebViewElementWithId("link1"); 292 chrome_test_util::TapWebViewElementWithId("link1");
302 293
303 // Check that a new Tab was created. 294 // Check that a new Tab was created.
304 AssertStringIsPresentOnPage("link2"); 295 [ChromeEarlGrey waitForWebViewContainingText:"link2"];
305 chrome_test_util::AssertMainTabCount(2); 296 chrome_test_util::AssertMainTabCount(2);
306 297
307 AssertURLIs(destinationURL); 298 AssertURLIs(destinationURL);
308 299
309 // Hide the toolbar. 300 // Hide the toolbar.
310 HideToolbarUsingUI(); 301 HideToolbarUsingUI();
311 [ChromeEarlGreyUI waitForToolbarVisible:NO]; 302 [ChromeEarlGreyUI waitForToolbarVisible:NO];
312 303
313 // Close the tab. 304 // Close the tab.
314 chrome_test_util::TapWebViewElementWithId("link2"); 305 chrome_test_util::TapWebViewElementWithId("link2");
315 AssertStringIsPresentOnPage("link1"); 306 [ChromeEarlGrey waitForWebViewContainingText:"link1"];
316 307
317 // Make sure the toolbar is on the screen. 308 // Make sure the toolbar is on the screen.
318 chrome_test_util::AssertMainTabCount(1); 309 chrome_test_util::AssertMainTabCount(1);
319 [ChromeEarlGreyUI waitForToolbarVisible:YES]; 310 [ChromeEarlGreyUI waitForToolbarVisible:YES];
320 } 311 }
321 312
322 // Tests that the header is shown when a regular page (non-native page) is 313 // Tests that the header is shown when a regular page (non-native page) is
323 // loaded from a page where the header was not see before. 314 // loaded from a page where the header was not see before.
324 // Also tests that auto-hide works correctly on new page loads. 315 // Also tests that auto-hide works correctly on new page loads.
325 - (void)testShowHeaderOnRegularPageLoad { 316 - (void)testShowHeaderOnRegularPageLoad {
(...skipping 10 matching lines...) Expand all
336 "' id='link1'>link1</a>"; 327 "' id='link1'>link1</a>";
337 // A long page representing many lines and a link to go back. 328 // A long page representing many lines and a link to go back.
338 responses[destinationURL] = manyLines + 329 responses[destinationURL] = manyLines +
339 "<a href='javascript:void(0)' " 330 "<a href='javascript:void(0)' "
340 "onclick='window.history.back()' " 331 "onclick='window.history.back()' "
341 "id='link2'>link2</a>"; 332 "id='link2'>link2</a>";
342 web::test::SetUpSimpleHttpServer(responses); 333 web::test::SetUpSimpleHttpServer(responses);
343 334
344 [ChromeEarlGrey loadURL:originURL]; 335 [ChromeEarlGrey loadURL:originURL];
345 336
346 AssertStringIsPresentOnPage("link1"); 337 [ChromeEarlGrey waitForWebViewContainingText:"link1"];
347 // Dismiss the toolbar. 338 // Dismiss the toolbar.
348 HideToolbarUsingUI(); 339 HideToolbarUsingUI();
349 [ChromeEarlGreyUI waitForToolbarVisible:NO]; 340 [ChromeEarlGreyUI waitForToolbarVisible:NO];
350 341
351 // Navigate to the other page. 342 // Navigate to the other page.
352 chrome_test_util::TapWebViewElementWithId("link1"); 343 chrome_test_util::TapWebViewElementWithId("link1");
353 AssertStringIsPresentOnPage("link2"); 344 [ChromeEarlGrey waitForWebViewContainingText:"link2"];
354 345
355 // Make sure toolbar is shown since a new load has started. 346 // Make sure toolbar is shown since a new load has started.
356 [ChromeEarlGreyUI waitForToolbarVisible:YES]; 347 [ChromeEarlGreyUI waitForToolbarVisible:YES];
357 348
358 // Dismiss the toolbar. 349 // Dismiss the toolbar.
359 HideToolbarUsingUI(); 350 HideToolbarUsingUI();
360 [ChromeEarlGreyUI waitForToolbarVisible:NO]; 351 [ChromeEarlGreyUI waitForToolbarVisible:NO];
361 352
362 // Go back. 353 // Go back.
363 chrome_test_util::TapWebViewElementWithId("link2"); 354 chrome_test_util::TapWebViewElementWithId("link2");
364 355
365 // Make sure the toolbar has loaded now that a new page has loaded. 356 // Make sure the toolbar has loaded now that a new page has loaded.
366 [ChromeEarlGreyUI waitForToolbarVisible:YES]; 357 [ChromeEarlGreyUI waitForToolbarVisible:YES];
367 } 358 }
368 359
369 // Tests that the header is shown when a native page is loaded from a page where 360 // Tests that the header is shown when a native page is loaded from a page where
370 // the header was not seen before. 361 // the header was not seen before.
371 - (void)testShowHeaderOnNativePageLoad { 362 - (void)testShowHeaderOnNativePageLoad {
372 std::map<GURL, std::string> responses; 363 std::map<GURL, std::string> responses;
373 const GURL URL = web::test::HttpServer::MakeUrl("http://origin"); 364 const GURL URL = web::test::HttpServer::MakeUrl("http://origin");
374 365
375 // A long page representing many lines and a link to go back. 366 // A long page representing many lines and a link to go back.
376 std::string manyLines = 367 std::string manyLines =
377 "<p style='height:100em'>a</p>" 368 "<p style='height:100em'>a</p>"
378 "<a onclick='window.history.back()' id='link'>link</a>"; 369 "<a onclick='window.history.back()' id='link'>link</a>";
379 responses[URL] = manyLines; 370 responses[URL] = manyLines;
380 web::test::SetUpSimpleHttpServer(responses); 371 web::test::SetUpSimpleHttpServer(responses);
381 372
382 [ChromeEarlGrey loadURL:URL]; 373 [ChromeEarlGrey loadURL:URL];
383 AssertStringIsPresentOnPage("link"); 374 [ChromeEarlGrey waitForWebViewContainingText:"link"];
384 375
385 // Dismiss the toolbar. 376 // Dismiss the toolbar.
386 HideToolbarUsingUI(); 377 HideToolbarUsingUI();
387 [ChromeEarlGreyUI waitForToolbarVisible:NO]; 378 [ChromeEarlGreyUI waitForToolbarVisible:NO];
388 379
389 // Go back to NTP, which is a native view. 380 // Go back to NTP, which is a native view.
390 chrome_test_util::TapWebViewElementWithId("link"); 381 chrome_test_util::TapWebViewElementWithId("link");
391 382
392 // Make sure the toolbar is visible now that a new page has loaded. 383 // Make sure the toolbar is visible now that a new page has loaded.
393 [ChromeEarlGreyUI waitForToolbarVisible:YES]; 384 [ChromeEarlGreyUI waitForToolbarVisible:YES];
(...skipping 17 matching lines...) Expand all
411 [ChromeEarlGrey loadURL:URL]; 402 [ChromeEarlGrey loadURL:URL];
412 HideToolbarUsingUI(); 403 HideToolbarUsingUI();
413 [ChromeEarlGreyUI waitForToolbarVisible:NO]; 404 [ChromeEarlGreyUI waitForToolbarVisible:NO];
414 405
415 chrome_test_util::TapWebViewElementWithId("link"); 406 chrome_test_util::TapWebViewElementWithId("link");
416 AssertURLIs(ErrorPageResponseProvider::GetDnsFailureUrl()); 407 AssertURLIs(ErrorPageResponseProvider::GetDnsFailureUrl());
417 [ChromeEarlGreyUI waitForToolbarVisible:YES]; 408 [ChromeEarlGreyUI waitForToolbarVisible:YES];
418 } 409 }
419 410
420 @end 411 @end
OLDNEW
« no previous file with comments | « ios/chrome/browser/ui/find_bar/find_in_page_egtest.mm ('k') | ios/chrome/browser/ui/history/history_ui_egtest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698