| Index: ios/chrome/browser/ui/history/tab_history_popup_controller_egtest.mm
|
| diff --git a/ios/chrome/browser/ui/history/tab_history_popup_controller_egtest.mm b/ios/chrome/browser/ui/history/tab_history_popup_controller_egtest.mm
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..596b1ce81c349155be793b7ae590ae9534929ea4
|
| --- /dev/null
|
| +++ b/ios/chrome/browser/ui/history/tab_history_popup_controller_egtest.mm
|
| @@ -0,0 +1,93 @@
|
| +// 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 <XCTest/XCTest.h>
|
| +
|
| +#include "base/strings/sys_string_conversions.h"
|
| +#include "components/strings/grit/components_strings.h"
|
| +#import "ios/chrome/test/earl_grey/chrome_earl_grey.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"
|
| +
|
| +// Tests for tab history popup.
|
| +@interface TabHistoryPopupControllerTestCase : ChromeTestCase
|
| +@end
|
| +
|
| +@implementation TabHistoryPopupControllerTestCase
|
| +
|
| +// Test that the tab history back and forward menus contain the expected entries
|
| +// for a series of navigations, and that tapping entries performs the
|
| +// appropriate navigation.
|
| +- (void)testTabHistoryMenu {
|
| + const GURL URL1 = web::test::HttpServer::MakeUrl("http://page1");
|
| + const GURL URL2 = web::test::HttpServer::MakeUrl("http://page2");
|
| + const GURL URL3 = web::test::HttpServer::MakeUrl("http://page3");
|
| + const GURL URL4 = web::test::HttpServer::MakeUrl("http://page4");
|
| + NSString* entry0 = @"New Tab";
|
| + NSString* entry1 = base::SysUTF8ToNSString(URL1.spec());
|
| + NSString* entry2 = base::SysUTF8ToNSString(URL2.spec());
|
| + NSString* entry3 = base::SysUTF8ToNSString(URL3.spec());
|
| + NSString* entry4 = base::SysUTF8ToNSString(URL4.spec());
|
| +
|
| + // Create map of canned responses and set up the test HTML server.
|
| + std::map<GURL, std::string> responses;
|
| + responses[URL1] = "page1";
|
| + responses[URL2] = "page2";
|
| + responses[URL3] = "page3";
|
| + responses[URL4] = "page4";
|
| + web::test::SetUpSimpleHttpServer(responses);
|
| +
|
| + // Load 4 pages.
|
| + [ChromeEarlGrey loadURL:URL1];
|
| + [ChromeEarlGrey loadURL:URL2];
|
| + [ChromeEarlGrey loadURL:URL3];
|
| + [ChromeEarlGrey loadURL:URL4];
|
| +
|
| + // Long press on back button.
|
| + [[EarlGrey
|
| + selectElementWithMatcher:chrome_test_util::buttonWithAccessibilityLabelId(
|
| + IDS_ACCNAME_BACK)]
|
| + performAction:grey_longPress()];
|
| +
|
| + // Check that the first four entries are shown the back tab history menu.
|
| + [[EarlGrey selectElementWithMatcher:grey_text(entry0)]
|
| + assertWithMatcher:grey_notNil()];
|
| + [[EarlGrey selectElementWithMatcher:grey_text(entry1)]
|
| + assertWithMatcher:grey_notNil()];
|
| + [[EarlGrey selectElementWithMatcher:grey_text(entry2)]
|
| + assertWithMatcher:grey_notNil()];
|
| + [[EarlGrey selectElementWithMatcher:grey_text(entry3)]
|
| + assertWithMatcher:grey_notNil()];
|
| +
|
| + // Tap entry to go back 3 pages, and verify that entry 1 is loaded.
|
| + [[EarlGrey selectElementWithMatcher:grey_text(entry1)]
|
| + performAction:grey_tap()];
|
| + [[EarlGrey
|
| + selectElementWithMatcher:chrome_test_util::omniboxText(URL1.GetContent())]
|
| + assertWithMatcher:grey_notNil()];
|
| +
|
| + // Long press forward button.
|
| + [[EarlGrey
|
| + selectElementWithMatcher:chrome_test_util::buttonWithAccessibilityLabelId(
|
| + IDS_ACCNAME_FORWARD)]
|
| + performAction:grey_longPress()];
|
| +
|
| + // Check that entries 2, 3, and 4 are in the forward tab history menu.
|
| + [[EarlGrey selectElementWithMatcher:grey_text(entry2)]
|
| + assertWithMatcher:grey_notNil()];
|
| + [[EarlGrey selectElementWithMatcher:grey_text(entry3)]
|
| + assertWithMatcher:grey_notNil()];
|
| + [[EarlGrey selectElementWithMatcher:grey_text(entry4)]
|
| + assertWithMatcher:grey_notNil()];
|
| + // Tap entry to go forward 2 pages, and verify that entry 3 is loaded.
|
| + [[EarlGrey selectElementWithMatcher:grey_text(entry3)]
|
| + performAction:grey_tap()];
|
| + [[EarlGrey
|
| + selectElementWithMatcher:chrome_test_util::omniboxText(URL3.GetContent())]
|
| + assertWithMatcher:grey_notNil()];
|
| +}
|
| +
|
| +@end
|
|
|