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

Side by Side Diff: ios/chrome/browser/web/visible_url_egtest.mm

Issue 2798773002: Create ChromeEarlGrey waitForWebViewContainingText. (Closed)
Patch Set: more cleanup 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 6
7 #include "base/memory/ptr_util.h" 7 #include "base/memory/ptr_util.h"
8 #include "base/strings/stringprintf.h" 8 #include "base/strings/stringprintf.h"
9 #include "base/strings/sys_string_conversions.h" 9 #include "base/strings/sys_string_conversions.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
(...skipping 10 matching lines...) Expand all
21 #include "ios/web/public/test/http_server/html_response_provider.h" 21 #include "ios/web/public/test/http_server/html_response_provider.h"
22 #import "ios/web/public/test/http_server/http_server.h" 22 #import "ios/web/public/test/http_server/http_server.h"
23 #include "ios/web/public/test/http_server/http_server_util.h" 23 #include "ios/web/public/test/http_server/http_server_util.h"
24 #include "ios/web/public/test/url_test_util.h" 24 #include "ios/web/public/test/url_test_util.h"
25 #include "url/gurl.h" 25 #include "url/gurl.h"
26 26
27 #if !defined(__has_feature) || !__has_feature(objc_arc) 27 #if !defined(__has_feature) || !__has_feature(objc_arc)
28 #error "This file requires ARC support." 28 #error "This file requires ARC support."
29 #endif 29 #endif
30 30
31 using chrome_test_util::WebViewContainingText; 31 using base::SysUTF8ToNSString;
32 using chrome_test_util::OmniboxText; 32 using chrome_test_util::OmniboxText;
33 33
34 namespace { 34 namespace {
35 35
36 const char kTestPage1[] = "Test Page 1"; 36 const char kTestPage1[] = "Test Page 1";
37 const char kTestPage2[] = "Test Page 2"; 37 const char kTestPage2[] = "Test Page 2";
38 const char kTestPage3[] = "Test Page 3"; 38 const char kTestPage3[] = "Test Page 3";
39 const char kGoBackLink[] = "go-back"; 39 const char kGoBackLink[] = "go-back";
40 const char kGoForwardLink[] = "go-forward"; 40 const char kGoForwardLink[] = "go-forward";
41 const char kGoNegativeDeltaLink[] = "go-negative-delta"; 41 const char kGoNegativeDeltaLink[] = "go-negative-delta";
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 // displayed even though URL1 is a pending URL. 191 // displayed even though URL1 is a pending URL.
192 [[EarlGrey selectElementWithMatcher:chrome_test_util::BackButton()] 192 [[EarlGrey selectElementWithMatcher:chrome_test_util::BackButton()]
193 performAction:grey_tap()]; 193 performAction:grey_tap()];
194 GREYAssert([self waitForServerToReceiveRequestWithURL:_testURL1], 194 GREYAssert([self waitForServerToReceiveRequestWithURL:_testURL1],
195 @"Last request URL: %@", self.lastRequestURLSpec); 195 @"Last request URL: %@", self.lastRequestURLSpec);
196 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL2.GetContent())] 196 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL2.GetContent())]
197 assertWithMatcher:grey_notNil()]; 197 assertWithMatcher:grey_notNil()];
198 198
199 // Make server respond so URL1 becomes committed. 199 // Make server respond so URL1 becomes committed.
200 [self setServerPaused:NO]; 200 [self setServerPaused:NO];
201 [[EarlGrey selectElementWithMatcher:WebViewContainingText(kTestPage1)] 201 [ChromeEarlGrey waitForWebViewContainingText:kTestPage1];
202 assertWithMatcher:grey_notNil()];
203 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL1.GetContent())] 202 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL1.GetContent())]
204 assertWithMatcher:grey_notNil()]; 203 assertWithMatcher:grey_notNil()];
205 204
206 // Purge web view caches and pause the server to make sure that tests can 205 // Purge web view caches and pause the server to make sure that tests can
207 // verify omnibox state before server starts responding. 206 // verify omnibox state before server starts responding.
208 PurgeCachedWebViewPages(); 207 PurgeCachedWebViewPages();
209 [self setServerPaused:YES]; 208 [self setServerPaused:YES];
210 209
211 // Tap the forward button in the toolbar and verify that URL1 (committed URL) 210 // Tap the forward button in the toolbar and verify that URL1 (committed URL)
212 // is displayed even though URL2 is a pending URL. 211 // is displayed even though URL2 is a pending URL.
213 [[EarlGrey selectElementWithMatcher:chrome_test_util::ForwardButton()] 212 [[EarlGrey selectElementWithMatcher:chrome_test_util::ForwardButton()]
214 performAction:grey_tap()]; 213 performAction:grey_tap()];
215 GREYAssert([self waitForServerToReceiveRequestWithURL:_testURL2], 214 GREYAssert([self waitForServerToReceiveRequestWithURL:_testURL2],
216 @"Last request URL: %@", self.lastRequestURLSpec); 215 @"Last request URL: %@", self.lastRequestURLSpec);
217 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL1.GetContent())] 216 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL1.GetContent())]
218 assertWithMatcher:grey_notNil()]; 217 assertWithMatcher:grey_notNil()];
219 218
220 // Make server respond so URL2 becomes committed. 219 // Make server respond so URL2 becomes committed.
221 [self setServerPaused:NO]; 220 [self setServerPaused:NO];
222 [[EarlGrey selectElementWithMatcher:WebViewContainingText(kTestPage2)] 221 [ChromeEarlGrey waitForWebViewContainingText:kTestPage2];
223 assertWithMatcher:grey_notNil()];
224 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL2.GetContent())] 222 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL2.GetContent())]
225 assertWithMatcher:grey_notNil()]; 223 assertWithMatcher:grey_notNil()];
226 } 224 }
227 225
228 // Tests that visible URL is always the same as last committed URL during 226 // Tests that visible URL is always the same as last committed URL during
229 // pending navigations initialted from back history popover. 227 // pending navigations initialted from back history popover.
230 - (void)testHistoryNavigation { 228 - (void)testHistoryNavigation {
231 // Purge web view caches and pause the server to make sure that tests can 229 // Purge web view caches and pause the server to make sure that tests can
232 // verify omnibox state before server starts responding. 230 // verify omnibox state before server starts responding.
233 PurgeCachedWebViewPages(); 231 PurgeCachedWebViewPages();
234 [self setServerPaused:YES]; 232 [self setServerPaused:YES];
235 233
236 // Go back in history and verify that URL2 (committed URL) is displayed even 234 // Go back in history and verify that URL2 (committed URL) is displayed even
237 // though URL1 is a pending URL. 235 // though URL1 is a pending URL.
238 [[EarlGrey selectElementWithMatcher:chrome_test_util::BackButton()] 236 [[EarlGrey selectElementWithMatcher:chrome_test_util::BackButton()]
239 performAction:grey_longPress()]; 237 performAction:grey_longPress()];
240 NSString* URL1Title = 238 NSString* URL1Title =
241 base::SysUTF16ToNSString(web::GetDisplayTitleForUrl(_testURL1)); 239 base::SysUTF16ToNSString(web::GetDisplayTitleForUrl(_testURL1));
242 [[EarlGrey selectElementWithMatcher:grey_text(URL1Title)] 240 [[EarlGrey selectElementWithMatcher:grey_text(URL1Title)]
243 performAction:grey_tap()]; 241 performAction:grey_tap()];
244 GREYAssert([self waitForServerToReceiveRequestWithURL:_testURL1], 242 GREYAssert([self waitForServerToReceiveRequestWithURL:_testURL1],
245 @"Last request URL: %@", self.lastRequestURLSpec); 243 @"Last request URL: %@", self.lastRequestURLSpec);
246 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL2.GetContent())] 244 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL2.GetContent())]
247 assertWithMatcher:grey_notNil()]; 245 assertWithMatcher:grey_notNil()];
248 246
249 // Make server respond so URL1 becomes committed. 247 // Make server respond so URL1 becomes committed.
250 [self setServerPaused:NO]; 248 [self setServerPaused:NO];
251 [[EarlGrey selectElementWithMatcher:WebViewContainingText(kTestPage1)] 249 [ChromeEarlGrey waitForWebViewContainingText:kTestPage1];
252 assertWithMatcher:grey_notNil()];
253 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL1.GetContent())] 250 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL1.GetContent())]
254 assertWithMatcher:grey_notNil()]; 251 assertWithMatcher:grey_notNil()];
255 } 252 }
256 253
257 // Tests that stopping a pending Back navigation and reloading reloads committed 254 // Tests that stopping a pending Back navigation and reloading reloads committed
258 // URL, not pending URL. 255 // URL, not pending URL.
259 - (void)testStoppingPendingBackNavigationAndReload { 256 - (void)testStoppingPendingBackNavigationAndReload {
260 // Purge web view caches and pause the server to make sure that tests can 257 // Purge web view caches and pause the server to make sure that tests can
261 // verify omnibox state before server starts responding. 258 // verify omnibox state before server starts responding.
262 PurgeCachedWebViewPages(); 259 PurgeCachedWebViewPages();
(...skipping 11 matching lines...) Expand all
274 setValue:@YES 271 setValue:@YES
275 forConfigKey:kGREYConfigKeySynchronizationEnabled]; 272 forConfigKey:kGREYConfigKeySynchronizationEnabled];
276 [ChromeEarlGreyUI openToolsMenu]; 273 [ChromeEarlGreyUI openToolsMenu];
277 } 274 }
278 [[EarlGrey selectElementWithMatcher:chrome_test_util::StopButton()] 275 [[EarlGrey selectElementWithMatcher:chrome_test_util::StopButton()]
279 performAction:grey_tap()]; 276 performAction:grey_tap()];
280 [ChromeEarlGreyUI reload]; 277 [ChromeEarlGreyUI reload];
281 278
282 // Make server respond and verify that page2 was reloaded, not page1. 279 // Make server respond and verify that page2 was reloaded, not page1.
283 [self setServerPaused:NO]; 280 [self setServerPaused:NO];
284 [[EarlGrey selectElementWithMatcher:WebViewContainingText(kTestPage2)] 281 [ChromeEarlGrey waitForWebViewContainingText:kTestPage2];
285 assertWithMatcher:grey_notNil()];
286 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL2.GetContent())] 282 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL2.GetContent())]
287 assertWithMatcher:grey_notNil()]; 283 assertWithMatcher:grey_notNil()];
288 } 284 }
289 285
290 // Tests that visible URL is always the same as last committed URL during 286 // Tests that visible URL is always the same as last committed URL during
291 // back forward navigations initiated with JS. 287 // back forward navigations initiated with JS.
292 - (void)testJSBackForwardNavigation { 288 - (void)testJSBackForwardNavigation {
293 // Purge web view caches and pause the server to make sure that tests can 289 // Purge web view caches and pause the server to make sure that tests can
294 // verify omnibox state before server starts responding. 290 // verify omnibox state before server starts responding.
295 PurgeCachedWebViewPages(); 291 PurgeCachedWebViewPages();
296 [self setServerPaused:YES]; 292 [self setServerPaused:YES];
297 293
298 // Tap the back button on the page and verify that URL2 (committed URL) is 294 // Tap the back button on the page and verify that URL2 (committed URL) is
299 // displayed even though URL1 is a pending URL. 295 // displayed even though URL1 is a pending URL.
300 [ChromeEarlGrey tapWebViewElementWithID:base::SysUTF8ToNSString(kGoBackLink)]; 296 [ChromeEarlGrey tapWebViewElementWithID:SysUTF8ToNSString(kGoBackLink)];
Eugene But (OOO till 7-30) 2017/06/12 03:47:11 nit: Is this really necessary? Same question for o
baxley 2017/06/12 16:41:17 Done.
301 GREYAssert([self waitForServerToReceiveRequestWithURL:_testURL1], 297 GREYAssert([self waitForServerToReceiveRequestWithURL:_testURL1],
302 @"Last request URL: %@", self.lastRequestURLSpec); 298 @"Last request URL: %@", self.lastRequestURLSpec);
303 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL2.GetContent())] 299 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL2.GetContent())]
304 assertWithMatcher:grey_notNil()]; 300 assertWithMatcher:grey_notNil()];
305 301
306 // Make server respond so URL1 becomes committed. 302 // Make server respond so URL1 becomes committed.
307 [self setServerPaused:NO]; 303 [self setServerPaused:NO];
308 [[EarlGrey selectElementWithMatcher:WebViewContainingText(kTestPage1)] 304 [ChromeEarlGrey waitForWebViewContainingText:kTestPage1];
309 assertWithMatcher:grey_notNil()];
310 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL1.GetContent())] 305 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL1.GetContent())]
311 assertWithMatcher:grey_notNil()]; 306 assertWithMatcher:grey_notNil()];
312 307
313 // Purge web view caches and pause the server to make sure that tests can 308 // Purge web view caches and pause the server to make sure that tests can
314 // verify omnibox state before server starts responding. 309 // verify omnibox state before server starts responding.
315 PurgeCachedWebViewPages(); 310 PurgeCachedWebViewPages();
316 [self setServerPaused:YES]; 311 [self setServerPaused:YES];
317 312
318 // Tap the forward button on the page and verify that URL1 (committed URL) 313 // Tap the forward button on the page and verify that URL1 (committed URL)
319 // is displayed even though URL2 is a pending URL. 314 // is displayed even though URL2 is a pending URL.
320 [ChromeEarlGrey 315 [ChromeEarlGrey tapWebViewElementWithID:SysUTF8ToNSString(kGoForwardLink)];
321 tapWebViewElementWithID:base::SysUTF8ToNSString(kGoForwardLink)];
322 GREYAssert([self waitForServerToReceiveRequestWithURL:_testURL2], 316 GREYAssert([self waitForServerToReceiveRequestWithURL:_testURL2],
323 @"Last request URL: %@", self.lastRequestURLSpec); 317 @"Last request URL: %@", self.lastRequestURLSpec);
324 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL1.GetContent())] 318 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL1.GetContent())]
325 assertWithMatcher:grey_notNil()]; 319 assertWithMatcher:grey_notNil()];
326 320
327 // Make server respond so URL2 becomes committed. 321 // Make server respond so URL2 becomes committed.
328 [self setServerPaused:NO]; 322 [self setServerPaused:NO];
329 [[EarlGrey selectElementWithMatcher:WebViewContainingText(kTestPage2)] 323 [ChromeEarlGrey waitForWebViewContainingText:kTestPage2];
330 assertWithMatcher:grey_notNil()];
331 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL2.GetContent())] 324 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL2.GetContent())]
332 assertWithMatcher:grey_notNil()]; 325 assertWithMatcher:grey_notNil()];
333 } 326 }
334 327
335 // Tests that visible URL is always the same as last committed URL during go 328 // Tests that visible URL is always the same as last committed URL during go
336 // navigations initiated with JS. 329 // navigations initiated with JS.
337 - (void)testJSGoNavigation { 330 - (void)testJSGoNavigation {
338 // Purge web view caches and pause the server to make sure that tests can 331 // Purge web view caches and pause the server to make sure that tests can
339 // verify omnibox state before server starts responding. 332 // verify omnibox state before server starts responding.
340 PurgeCachedWebViewPages(); 333 PurgeCachedWebViewPages();
341 [self setServerPaused:YES]; 334 [self setServerPaused:YES];
342 335
343 // Tap the go negative delta button on the page and verify that URL2 336 // Tap the go negative delta button on the page and verify that URL2
344 // (committed URL) is displayed even though URL1 is a pending URL. 337 // (committed URL) is displayed even though URL1 is a pending URL.
345 [ChromeEarlGrey 338 [ChromeEarlGrey
346 tapWebViewElementWithID:base::SysUTF8ToNSString(kGoNegativeDeltaLink)]; 339 tapWebViewElementWithID:SysUTF8ToNSString(kGoNegativeDeltaLink)];
347 GREYAssert([self waitForServerToReceiveRequestWithURL:_testURL1], 340 GREYAssert([self waitForServerToReceiveRequestWithURL:_testURL1],
348 @"Last request URL: %@", self.lastRequestURLSpec); 341 @"Last request URL: %@", self.lastRequestURLSpec);
349 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL2.GetContent())] 342 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL2.GetContent())]
350 assertWithMatcher:grey_notNil()]; 343 assertWithMatcher:grey_notNil()];
351 344
352 // Make server respond so URL1 becomes committed. 345 // Make server respond so URL1 becomes committed.
353 [self setServerPaused:NO]; 346 [self setServerPaused:NO];
354 [[EarlGrey selectElementWithMatcher:WebViewContainingText(kTestPage1)] 347 [ChromeEarlGrey waitForWebViewContainingText:kTestPage1];
355 assertWithMatcher:grey_notNil()];
356 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL1.GetContent())] 348 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL1.GetContent())]
357 assertWithMatcher:grey_notNil()]; 349 assertWithMatcher:grey_notNil()];
358 350
359 // Purge web view caches and pause the server to make sure that tests can 351 // Purge web view caches and pause the server to make sure that tests can
360 // verify omnibox state before server starts responding. 352 // verify omnibox state before server starts responding.
361 PurgeCachedWebViewPages(); 353 PurgeCachedWebViewPages();
362 [self setServerPaused:YES]; 354 [self setServerPaused:YES];
363 355
364 // Tap go positive delta button on the page and verify that URL1 (committed 356 // Tap go positive delta button on the page and verify that URL1 (committed
365 // URL) is displayed even though URL2 is a pending URL. 357 // URL) is displayed even though URL2 is a pending URL.
366 [ChromeEarlGrey 358 [ChromeEarlGrey
367 tapWebViewElementWithID:base::SysUTF8ToNSString(kGoPositiveDeltaLink)]; 359 tapWebViewElementWithID:SysUTF8ToNSString(kGoPositiveDeltaLink)];
368 GREYAssert([self waitForServerToReceiveRequestWithURL:_testURL2], 360 GREYAssert([self waitForServerToReceiveRequestWithURL:_testURL2],
369 @"Last request URL: %@", self.lastRequestURLSpec); 361 @"Last request URL: %@", self.lastRequestURLSpec);
370 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL1.GetContent())] 362 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL1.GetContent())]
371 assertWithMatcher:grey_notNil()]; 363 assertWithMatcher:grey_notNil()];
372 364
373 // Make server respond so URL2 becomes committed. 365 // Make server respond so URL2 becomes committed.
374 [self setServerPaused:NO]; 366 [self setServerPaused:NO];
375 [[EarlGrey selectElementWithMatcher:WebViewContainingText(kTestPage2)] 367 [ChromeEarlGrey waitForWebViewContainingText:kTestPage2];
376 assertWithMatcher:grey_notNil()];
377 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL2.GetContent())] 368 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL2.GetContent())]
378 assertWithMatcher:grey_notNil()]; 369 assertWithMatcher:grey_notNil()];
379 } 370 }
380 371
381 // Tests that visible URL is always the same as last committed URL during go 372 // Tests that visible URL is always the same as last committed URL during go
382 // back navigation started with pending reload in progress. 373 // back navigation started with pending reload in progress.
383 - (void)testBackNavigationWithPendingReload { 374 - (void)testBackNavigationWithPendingReload {
384 // Purge web view caches and pause the server to make sure that tests can 375 // Purge web view caches and pause the server to make sure that tests can
385 // verify omnibox state before server starts responding. 376 // verify omnibox state before server starts responding.
386 PurgeCachedWebViewPages(); 377 PurgeCachedWebViewPages();
(...skipping 15 matching lines...) Expand all
402 // pending URL. 393 // pending URL.
403 [[EarlGrey selectElementWithMatcher:chrome_test_util::BackButton()] 394 [[EarlGrey selectElementWithMatcher:chrome_test_util::BackButton()]
404 performAction:grey_tap()]; 395 performAction:grey_tap()];
405 // TODO(crbug.com/724560): Re-evaluate if necessary to check receiving URL1 396 // TODO(crbug.com/724560): Re-evaluate if necessary to check receiving URL1
406 // request here. 397 // request here.
407 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL2.GetContent())] 398 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL2.GetContent())]
408 assertWithMatcher:grey_notNil()]; 399 assertWithMatcher:grey_notNil()];
409 400
410 // Make server respond so URL1 becomes committed. 401 // Make server respond so URL1 becomes committed.
411 [self setServerPaused:NO]; 402 [self setServerPaused:NO];
412 [[EarlGrey selectElementWithMatcher:WebViewContainingText(kTestPage1)] 403 [ChromeEarlGrey waitForWebViewContainingText:kTestPage1];
413 assertWithMatcher:grey_notNil()];
414 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL1.GetContent())] 404 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL1.GetContent())]
415 assertWithMatcher:grey_notNil()]; 405 assertWithMatcher:grey_notNil()];
416 } 406 }
417 407
418 // Tests that visible URL is always the same as last committed URL during go 408 // Tests that visible URL is always the same as last committed URL during go
419 // back navigation initiated with pending renderer-initiated navigation in 409 // back navigation initiated with pending renderer-initiated navigation in
420 // progress. 410 // progress.
421 - (void)testBackNavigationWithPendingRendererInitiatedNavigation { 411 - (void)testBackNavigationWithPendingRendererInitiatedNavigation {
422 // Purge web view caches and pause the server to make sure that tests can 412 // Purge web view caches and pause the server to make sure that tests can
423 // verify omnibox state before server starts responding. 413 // verify omnibox state before server starts responding.
424 PurgeCachedWebViewPages(); 414 PurgeCachedWebViewPages();
425 [self setServerPaused:YES]; 415 [self setServerPaused:YES];
426 416
427 // Start renderer initiated navigation. 417 // Start renderer initiated navigation.
428 [ChromeEarlGrey tapWebViewElementWithID:base::SysUTF8ToNSString(kPage3Link)]; 418 [ChromeEarlGrey tapWebViewElementWithID:SysUTF8ToNSString(kPage3Link)];
429 419
430 // Do not wait until renderer-initiated navigation is finished, tap the back 420 // Do not wait until renderer-initiated navigation is finished, tap the back
431 // button in the toolbar and verify that URL2 (committed URL) is displayed 421 // button in the toolbar and verify that URL2 (committed URL) is displayed
432 // even though URL1 is a pending URL. 422 // even though URL1 is a pending URL.
433 [[EarlGrey selectElementWithMatcher:chrome_test_util::BackButton()] 423 [[EarlGrey selectElementWithMatcher:chrome_test_util::BackButton()]
434 performAction:grey_tap()]; 424 performAction:grey_tap()];
435 // TODO(crbug.com/724560): Re-evaluate if necessary to check receiving URL1 425 // TODO(crbug.com/724560): Re-evaluate if necessary to check receiving URL1
436 // request here. 426 // request here.
437 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL2.GetContent())] 427 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL2.GetContent())]
438 assertWithMatcher:grey_notNil()]; 428 assertWithMatcher:grey_notNil()];
439 429
440 // Make server respond so URL1 becomes committed. 430 // Make server respond so URL1 becomes committed.
441 [self setServerPaused:NO]; 431 [self setServerPaused:NO];
442 [[EarlGrey selectElementWithMatcher:WebViewContainingText(kTestPage1)] 432 [ChromeEarlGrey waitForWebViewContainingText:kTestPage1];
443 assertWithMatcher:grey_notNil()];
444 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL1.GetContent())] 433 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL1.GetContent())]
445 assertWithMatcher:grey_notNil()]; 434 assertWithMatcher:grey_notNil()];
446 } 435 }
447 436
448 // Tests that visible URL is always the same as last committed URL during 437 // Tests that visible URL is always the same as last committed URL during
449 // renderer-initiated navigation started with pending back navigation in 438 // renderer-initiated navigation started with pending back navigation in
450 // progress. 439 // progress.
451 - (void)testRendererInitiatedNavigationWithPendingBackNavigation { 440 - (void)testRendererInitiatedNavigationWithPendingBackNavigation {
452 // Purge web view caches and pause the server to make sure that tests can 441 // Purge web view caches and pause the server to make sure that tests can
453 // verify omnibox state before server starts responding. 442 // verify omnibox state before server starts responding.
454 PurgeCachedWebViewPages(); 443 PurgeCachedWebViewPages();
455 [self setServerPaused:YES]; 444 [self setServerPaused:YES];
456 445
457 // Tap the back button in the toolbar and verify that URL2 (committed URL) is 446 // Tap the back button in the toolbar and verify that URL2 (committed URL) is
458 // displayed even though URL1 is a pending URL. 447 // displayed even though URL1 is a pending URL.
459 [[EarlGrey selectElementWithMatcher:chrome_test_util::BackButton()] 448 [[EarlGrey selectElementWithMatcher:chrome_test_util::BackButton()]
460 performAction:grey_tap()]; 449 performAction:grey_tap()];
461 GREYAssert([self waitForServerToReceiveRequestWithURL:_testURL1], 450 GREYAssert([self waitForServerToReceiveRequestWithURL:_testURL1],
462 @"Last request URL: %@", self.lastRequestURLSpec); 451 @"Last request URL: %@", self.lastRequestURLSpec);
463 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL2.GetContent())] 452 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL2.GetContent())]
464 assertWithMatcher:grey_notNil()]; 453 assertWithMatcher:grey_notNil()];
465 454
466 // Interrupt back navigation with renderer initiated navigation. 455 // Interrupt back navigation with renderer initiated navigation.
467 [ChromeEarlGrey tapWebViewElementWithID:base::SysUTF8ToNSString(kPage3Link)]; 456 [ChromeEarlGrey tapWebViewElementWithID:SysUTF8ToNSString(kPage3Link)];
468 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL2.GetContent())] 457 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL2.GetContent())]
469 assertWithMatcher:grey_notNil()]; 458 assertWithMatcher:grey_notNil()];
470 459
471 // Make server respond so URL1 becomes committed. 460 // Make server respond so URL1 becomes committed.
472 [self setServerPaused:NO]; 461 [self setServerPaused:NO];
473 [[EarlGrey selectElementWithMatcher:WebViewContainingText(kTestPage3)] 462 [ChromeEarlGrey waitForWebViewContainingText:kTestPage3];
474 assertWithMatcher:grey_notNil()];
475 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL3.GetContent())] 463 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL3.GetContent())]
476 assertWithMatcher:grey_notNil()]; 464 assertWithMatcher:grey_notNil()];
477 } 465 }
478 466
479 // Tests that visible URL is always the same as last committed URL if user 467 // Tests that visible URL is always the same as last committed URL if user
480 // issues 2 go back commands. 468 // issues 2 go back commands.
481 - (void)testDoubleBackNavigation { 469 - (void)testDoubleBackNavigation {
482 // Create 3rd entry in the history, to be able to go back twice. 470 // Create 3rd entry in the history, to be able to go back twice.
483 [ChromeEarlGrey loadURL:_testURL3]; 471 [ChromeEarlGrey loadURL:_testURL3];
484 472
485 // Purge web view caches and pause the server to make sure that tests can 473 // Purge web view caches and pause the server to make sure that tests can
486 // verify omnibox state before server starts responding. 474 // verify omnibox state before server starts responding.
487 PurgeCachedWebViewPages(); 475 PurgeCachedWebViewPages();
488 [self setServerPaused:YES]; 476 [self setServerPaused:YES];
489 477
490 // Tap the back button twice in the toolbar and verify that URL3 (committed 478 // Tap the back button twice in the toolbar and verify that URL3 (committed
491 // URL) is displayed even though URL1 is a pending URL. 479 // URL) is displayed even though URL1 is a pending URL.
492 [[EarlGrey selectElementWithMatcher:chrome_test_util::BackButton()] 480 [[EarlGrey selectElementWithMatcher:chrome_test_util::BackButton()]
493 performAction:grey_tap()]; 481 performAction:grey_tap()];
494 [[EarlGrey selectElementWithMatcher:chrome_test_util::BackButton()] 482 [[EarlGrey selectElementWithMatcher:chrome_test_util::BackButton()]
495 performAction:grey_tap()]; 483 performAction:grey_tap()];
496 // Server will receive only one request either for |_testURL2| or for 484 // Server will receive only one request either for |_testURL2| or for
497 // |_testURL1| depending on load timing and then will pause. So there is no 485 // |_testURL1| depending on load timing and then will pause. So there is no
498 // need to wait for particular request. 486 // need to wait for particular request.
499 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL3.GetContent())] 487 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL3.GetContent())]
500 assertWithMatcher:grey_notNil()]; 488 assertWithMatcher:grey_notNil()];
501 489
502 // Make server respond so URL1 becomes committed. 490 // Make server respond so URL1 becomes committed.
503 [self setServerPaused:NO]; 491 [self setServerPaused:NO];
504 [[EarlGrey selectElementWithMatcher:WebViewContainingText(kTestPage1)] 492 [ChromeEarlGrey waitForWebViewContainingText:kTestPage1];
505 assertWithMatcher:grey_notNil()];
506 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL1.GetContent())] 493 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL1.GetContent())]
507 assertWithMatcher:grey_notNil()]; 494 assertWithMatcher:grey_notNil()];
508 } 495 }
509 496
510 // Tests that visible URL is always the same as last committed URL if user 497 // Tests that visible URL is always the same as last committed URL if user
511 // issues 2 go forward commands to WebUI page (crbug.com/711465). 498 // issues 2 go forward commands to WebUI page (crbug.com/711465).
512 - (void)testDoubleForwardNavigationToWebUIPage { 499 - (void)testDoubleForwardNavigationToWebUIPage {
513 // Create 3rd entry in the history, to be able to go back twice. 500 // Create 3rd entry in the history, to be able to go back twice.
514 GURL URL(kChromeUIVersionURL); 501 GURL URL(kChromeUIVersionURL);
515 [ChromeEarlGrey loadURL:GURL(kChromeUIVersionURL)]; 502 [ChromeEarlGrey loadURL:GURL(kChromeUIVersionURL)];
516 503
517 // Tap the back button twice in the toolbar and wait for URL 1 to load. 504 // Tap the back button twice in the toolbar and wait for URL 1 to load.
518 [[EarlGrey selectElementWithMatcher:chrome_test_util::BackButton()] 505 [[EarlGrey selectElementWithMatcher:chrome_test_util::BackButton()]
519 performAction:grey_tap()]; 506 performAction:grey_tap()];
520 [[EarlGrey selectElementWithMatcher:chrome_test_util::BackButton()] 507 [[EarlGrey selectElementWithMatcher:chrome_test_util::BackButton()]
521 performAction:grey_tap()]; 508 performAction:grey_tap()];
522 [[EarlGrey selectElementWithMatcher:WebViewContainingText(kTestPage1)] 509 [ChromeEarlGrey waitForWebViewContainingText:kTestPage1];
523 assertWithMatcher:grey_notNil()];
524 510
525 // Quickly (using chrome command) navigate forward twice and wait for 511 // Quickly (using chrome command) navigate forward twice and wait for
526 // kChromeUIVersionURL to load. 512 // kChromeUIVersionURL to load.
527 GenericChromeCommand* forwardCommand = 513 GenericChromeCommand* forwardCommand =
528 [[GenericChromeCommand alloc] initWithTag:IDC_FORWARD]; 514 [[GenericChromeCommand alloc] initWithTag:IDC_FORWARD];
529 chrome_test_util::RunCommandWithActiveViewController(forwardCommand); 515 chrome_test_util::RunCommandWithActiveViewController(forwardCommand);
530 chrome_test_util::RunCommandWithActiveViewController(forwardCommand); 516 chrome_test_util::RunCommandWithActiveViewController(forwardCommand);
531 517
532 const std::string version = version_info::GetVersionNumber(); 518 const std::string version = version_info::GetVersionNumber();
533 [[EarlGrey selectElementWithMatcher:WebViewContainingText(version)] 519 [ChromeEarlGrey waitForWebViewContainingText:version];
534 assertWithMatcher:grey_notNil()];
535 520
536 // Make sure that kChromeUIVersionURL URL is displayed in the omnibox. 521 // Make sure that kChromeUIVersionURL URL is displayed in the omnibox.
537 std::string expectedText = base::UTF16ToUTF8(web::GetDisplayTitleForUrl(URL)); 522 std::string expectedText = base::UTF16ToUTF8(web::GetDisplayTitleForUrl(URL));
538 [[EarlGrey selectElementWithMatcher:OmniboxText(expectedText)] 523 [[EarlGrey selectElementWithMatcher:OmniboxText(expectedText)]
539 assertWithMatcher:grey_notNil()]; 524 assertWithMatcher:grey_notNil()];
540 } 525 }
541 526
542 // Tests that visible URL is always the same as last committed URL if page calls 527 // Tests that visible URL is always the same as last committed URL if page calls
543 // window.history.back() twice. 528 // window.history.back() twice.
544 - (void)testDoubleBackJSNavigation { 529 - (void)testDoubleBackJSNavigation {
545 // Create 3rd entry in the history, to be able to go back twice. 530 // Create 3rd entry in the history, to be able to go back twice.
546 [ChromeEarlGrey loadURL:_testURL3]; 531 [ChromeEarlGrey loadURL:_testURL3];
547 532
548 // Purge web view caches and pause the server to make sure that tests can 533 // Purge web view caches and pause the server to make sure that tests can
549 // verify omnibox state before server starts responding. 534 // verify omnibox state before server starts responding.
550 PurgeCachedWebViewPages(); 535 PurgeCachedWebViewPages();
551 [self setServerPaused:YES]; 536 [self setServerPaused:YES];
552 537
553 // Tap the back button twice on the page and verify that URL3 (committed URL) 538 // Tap the back button twice on the page and verify that URL3 (committed URL)
554 // is displayed even though URL1 is a pending URL. 539 // is displayed even though URL1 is a pending URL.
555 [ChromeEarlGrey tapWebViewElementWithID:base::SysUTF8ToNSString(kGoBackLink)]; 540 [ChromeEarlGrey tapWebViewElementWithID:SysUTF8ToNSString(kGoBackLink)];
556 [ChromeEarlGrey tapWebViewElementWithID:base::SysUTF8ToNSString(kGoBackLink)]; 541 [ChromeEarlGrey tapWebViewElementWithID:SysUTF8ToNSString(kGoBackLink)];
557 // Server will receive only one request either for |_testURL2| or for 542 // Server will receive only one request either for |_testURL2| or for
558 // |_testURL1| depending on load timing and then will pause. So there is no 543 // |_testURL1| depending on load timing and then will pause. So there is no
559 // need to wait for particular request. 544 // need to wait for particular request.
560 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL3.GetContent())] 545 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL3.GetContent())]
561 assertWithMatcher:grey_notNil()]; 546 assertWithMatcher:grey_notNil()];
562 547
563 // Make server respond so URL1 becomes committed. 548 // Make server respond so URL1 becomes committed.
564 [self setServerPaused:NO]; 549 [self setServerPaused:NO];
565 [[EarlGrey selectElementWithMatcher:WebViewContainingText(kTestPage1)] 550 [ChromeEarlGrey waitForWebViewContainingText:kTestPage1];
566 assertWithMatcher:grey_notNil()];
567 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL1.GetContent())] 551 [[EarlGrey selectElementWithMatcher:OmniboxText(_testURL1.GetContent())]
568 assertWithMatcher:grey_notNil()]; 552 assertWithMatcher:grey_notNil()];
569 } 553 }
570 554
571 #pragma mark - 555 #pragma mark -
572 #pragma mark Private 556 #pragma mark Private
573 557
574 - (NSString*)lastRequestURLSpec { 558 - (NSString*)lastRequestURLSpec {
575 return base::SysUTF8ToNSString(_responseProvider->last_request_url().spec()); 559 return SysUTF8ToNSString(_responseProvider->last_request_url().spec());
576 } 560 }
577 561
578 - (void)setServerPaused:(BOOL)paused { 562 - (void)setServerPaused:(BOOL)paused {
579 // Disable EG synchronization if server is paused so the framework does not 563 // Disable EG synchronization if server is paused so the framework does not
580 // wait until the tab loading spinner or progress bar indicator becomes idle 564 // wait until the tab loading spinner or progress bar indicator becomes idle
581 // (which will not happen until server responds and the navigation is 565 // (which will not happen until server responds and the navigation is
582 // finished). 566 // finished).
583 [[GREYConfiguration sharedInstance] 567 [[GREYConfiguration sharedInstance]
584 setValue:@(!paused) 568 setValue:@(!paused)
585 forConfigKey:kGREYConfigKeySynchronizationEnabled]; 569 forConfigKey:kGREYConfigKeySynchronizationEnabled];
586 570
587 _responseProvider->set_paused(paused); 571 _responseProvider->set_paused(paused);
588 } 572 }
589 573
590 - (BOOL)waitForServerToReceiveRequestWithURL:(GURL)URL { 574 - (BOOL)waitForServerToReceiveRequestWithURL:(GURL)URL {
591 return [[GREYCondition 575 return [[GREYCondition
592 conditionWithName:@"Wait for received request" 576 conditionWithName:@"Wait for received request"
593 block:^{ 577 block:^{
594 return _responseProvider->last_request_url() == URL ? YES 578 return _responseProvider->last_request_url() == URL ? YES
595 : NO; 579 : NO;
596 }] waitWithTimeout:10]; 580 }] waitWithTimeout:10];
597 } 581 }
598 582
599 @end 583 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698