Index: chrome/test/functional/ntp.py |
diff --git a/chrome/test/functional/ntp.py b/chrome/test/functional/ntp.py |
index 2be4960d0faba33cd2499a409b0c72a3ce1534ce..8c352711e48e276456eacf72cbeb87f8441bc5fe 100644 |
--- a/chrome/test/functional/ntp.py |
+++ b/chrome/test/functional/ntp.py |
@@ -7,6 +7,7 @@ import os |
import pyauto_functional # Must be imported before pyauto |
import pyauto |
+import test_utils |
class NTPTest(pyauto.PyUITest): |
@@ -34,6 +35,14 @@ class NTPTest(pyauto.PyUITest): |
self.PAGES = map(lambda url, title: {'url': url, 'title': title}, |
urls, titles) |
+ def _NTPContainsThumbnail(self, check_thumbnail): |
+ """Returns whether the NTP's Most Visited section contains the given |
+ thumbnail.""" |
+ for thumbnail in self.GetNTPThumbnails(): |
+ if check_thumbnail['url'] == thumbnail['url']: |
+ return True |
+ return False |
+ |
def testFreshProfile(self): |
"""Tests that the NTP with a fresh profile is correct""" |
thumbnails = self.GetNTPThumbnails() |
@@ -57,19 +66,10 @@ class NTPTest(pyauto.PyUITest): |
"""Tests that a site is added to the most visited sites""" |
self.RemoveNTPDefaultThumbnails() |
self.NavigateToURL(self.PAGES[1]['url']) |
- self.assertEqual(self.PAGES[1]['url'], self.GetNTPThumbnails()[0]['url']) |
- self.assertEqual(self.PAGES[1]['title'], |
- self.GetNTPThumbnails()[0]['title']) |
- |
- def testOneRecentlyClosedTab(self): |
- """Tests that closing a tab populates the recently closed tabs list""" |
- self.RemoveNTPDefaultThumbnails() |
- self.AppendTab(pyauto.GURL(self.PAGES[1]['url'])) |
- self.GetBrowserWindow(0).GetTab(1).Close(True) |
- self.assertEqual(self.PAGES[1]['url'], |
- self.GetNTPRecentlyClosed()[0]['url']) |
- self.assertEqual(self.PAGES[1]['title'], |
- self.GetNTPRecentlyClosed()[0]['title']) |
+ thumbnail = self.GetNTPThumbnails()[0] |
+ self.assertEqual(self.PAGES[1]['url'], thumbnail['url']) |
+ self.assertEqual(self.PAGES[1]['title'], thumbnail['title']) |
+ self.assertFalse(thumbnail['is_pinned']) |
def testMoveThumbnailBasic(self): |
"""Tests moving a thumbnail to a different index""" |
@@ -94,6 +94,205 @@ class NTPTest(pyauto.PyUITest): |
self.UnpinNTPThumbnail(thumbnail1) |
self.assertFalse(self.IsNTPThumbnailPinned(thumbnail1)) |
+ def testRemoveThumbnail(self): |
+ """Tests removing a thumbnail works""" |
+ self.RemoveNTPDefaultThumbnails() |
+ for page in self.PAGES: |
+ self.AppendTab(pyauto.GURL(page['url'])) |
+ |
+ thumbnails = self.GetNTPThumbnails() |
+ for thumbnail in thumbnails: |
+ self.assertEquals(thumbnail, self.GetNTPThumbnails()[0]) |
+ self.RemoveNTPThumbnail(thumbnail) |
+ self.assertFalse(self._NTPContainsThumbnail(thumbnail)) |
+ self.assertFalse(self.GetNTPThumbnails()) |
+ |
+ def testIncognitoNotAppearInMostVisited(self): |
+ """Tests that visiting a page in incognito mode does cause it to appear in |
+ the Most Visited section""" |
+ self.RemoveNTPDefaultThumbnails() |
+ self.RunCommand(pyauto.IDC_NEW_INCOGNITO_WINDOW) |
+ self.NavigateToURL(self.PAGES[0]['url'], 1, 0) |
+ self.assertFalse(self.GetNTPThumbnails()) |
+ |
+ def testRestoreOncePinnedThumbnail(self): |
+ """Tests that after restoring a once pinned thumbnail, the thumbnail is |
+ not pinned""" |
+ self.RemoveNTPDefaultThumbnails() |
+ self.NavigateToURL(self.PAGES[0]['url']) |
+ thumbnail1 = self.GetNTPThumbnails()[0] |
+ self.PinNTPThumbnail(thumbnail1) |
+ self.RemoveNTPThumbnail(thumbnail1) |
+ self.RestoreAllNTPThumbnails() |
+ self.RemoveNTPDefaultThumbnails() |
+ self.assertFalse(self.IsNTPThumbnailPinned(thumbnail1)) |
+ |
+ def testThumbnailPersistence(self): |
+ """Tests that thumbnails persist across Chrome restarts""" |
+ self.RemoveNTPDefaultThumbnails() |
+ for page in self.PAGES: |
+ self.AppendTab(pyauto.GURL(page['url'])) |
+ thumbnails = self.GetNTPThumbnails() |
+ self.MoveNTPThumbnail(thumbnails[0], 1) |
+ thumbnails = self.GetNTPThumbnails() |
+ |
+ self.RestartBrowser(clear_profile=False) |
+ self.assertEqual(thumbnails, self.GetNTPThumbnails()) |
+ |
+ def testRestoreAllRemovedThumbnails(self): |
+ """Tests restoring all removed thumbnails""" |
+ for page in self.PAGES: |
+ self.AppendTab(pyauto.GURL(page['url'])) |
+ |
+ thumbnails = self.GetNTPThumbnails() |
+ for thumbnail in thumbnails: |
+ self.RemoveNTPThumbnail(thumbnail) |
+ |
+ self.RestoreAllNTPThumbnails() |
+ self.assertEquals(thumbnails, self.GetNTPThumbnails()) |
+ |
+ def testThumbnailRanking(self): |
+ """Tests that the thumbnails are ordered according to visit count""" |
+ self.RemoveNTPDefaultThumbnails() |
+ for page in self.PAGES: |
+ self.AppendTab(pyauto.GURL(page['url'])) |
+ thumbnails = self.GetNTPThumbnails() |
+ self.assertEqual(self.PAGES[0]['url'], self.GetNTPThumbnails()[0]['url']) |
+ self.AppendTab(pyauto.GURL(self.PAGES[1]['url'])) |
+ self.assertEqual(self.PAGES[1]['url'], self.GetNTPThumbnails()[0]['url']) |
+ self.AppendTab(pyauto.GURL(self.PAGES[0]['url'])) |
+ self.AppendTab(pyauto.GURL(self.PAGES[0]['url'])) |
+ self.assertEqual(self.PAGES[0]['url'], self.GetNTPThumbnails()[0]['url']) |
+ |
+ def testPinnedThumbnailNeverMoves(self): |
+ """Tests that once a thumnail is pinned it never moves""" |
+ self.RemoveNTPDefaultThumbnails() |
+ for page in self.PAGES: |
+ self.AppendTab(pyauto.GURL(page['url'])) |
+ self.PinNTPThumbnail(self.GetNTPThumbnails()[0]) |
+ thumbnails = self.GetNTPThumbnails() |
+ self.AppendTab(pyauto.GURL(self.PAGES[1]['url'])) |
+ self.assertEqual(thumbnails, self.GetNTPThumbnails()) |
+ |
+ def testThumbnailTitleChangeAfterPageTitleChange(self): |
+ """Tests that once a page title changes, the thumbnail title changes too""" |
+ self.RemoveNTPDefaultThumbnails() |
+ self.NavigateToURL(self.PAGES[0]['url']) |
+ self.assertEqual(self.PAGES[0]['title'], |
+ self.GetNTPThumbnails()[0]['title']) |
+ self.ExecuteJavascript('window.domAutomationController.send(' + |
+ 'document.title = "new title")') |
+ self.assertEqual('new title', self.GetNTPThumbnails()[0]['title']) |
+ |
+ def testCloseOneTab(self): |
+ """Tests that closing a tab populates the recently closed list""" |
+ self.RemoveNTPDefaultThumbnails() |
+ self.AppendTab(pyauto.GURL(self.PAGES[1]['url'])) |
+ self.GetBrowserWindow(0).GetTab(1).Close(True) |
+ self.assertEqual(self.PAGES[1]['url'], |
+ self.GetNTPRecentlyClosed()[0]['url']) |
+ self.assertEqual(self.PAGES[1]['title'], |
+ self.GetNTPRecentlyClosed()[0]['title']) |
+ |
+ def testCloseOneWindow(self): |
+ """Tests that closing a window populates the recently closed list""" |
+ self.RemoveNTPDefaultThumbnails() |
+ self.OpenNewBrowserWindow(True) |
+ self.NavigateToURL(self.PAGES[0]['url'], 1, 0) |
+ self.AppendTab(pyauto.GURL(self.PAGES[1]['url']), 1) |
+ self.CloseBrowserWindow(1) |
+ expected = [{ u'type': u'window', |
+ u'tabs': [ |
+ { u'type': u'tab', |
+ u'url': self.PAGES[0]['url'], |
+ u'direction': u'ltr' }, |
+ { u'type': u'tab', |
+ u'url': self.PAGES[1]['url']}] |
+ }] |
+ self.assertEquals(expected, test_utils.StripUnmatchedKeys( |
+ self.GetNTPRecentlyClosed(), expected)) |
+ |
+ def testCloseMultipleTabs(self): |
+ """Tests closing multiple tabs populates the Recently Closed section in |
+ order""" |
+ self.RemoveNTPDefaultThumbnails() |
+ self.AppendTab(pyauto.GURL(self.PAGES[0]['url'])) |
+ self.AppendTab(pyauto.GURL(self.PAGES[1]['url'])) |
+ self.GetBrowserWindow(0).GetTab(2).Close(True) |
+ self.GetBrowserWindow(0).GetTab(1).Close(True) |
+ expected = [{ u'type': u'tab', |
+ u'url': self.PAGES[0]['url'] |
+ }, |
+ { u'type': u'tab', |
+ u'url': self.PAGES[1]['url'] |
+ }] |
+ self.assertEquals(expected, test_utils.StripUnmatchedKeys( |
+ self.GetNTPRecentlyClosed(), expected)) |
+ |
+ def testCloseWindowWithOneTab(self): |
+ """Tests that closing a window with only one tab only shows up as a tab in |
+ the Recently Closed section""" |
+ self.RemoveNTPDefaultThumbnails() |
+ self.OpenNewBrowserWindow(True) |
+ self.NavigateToURL(self.PAGES[0]['url'], 1, 0) |
+ self.CloseBrowserWindow(1) |
+ expected = [{ u'type': u'tab', |
+ u'url': self.PAGES[0]['url'] |
+ }] |
+ self.assertEquals(expected, test_utils.StripUnmatchedKeys( |
+ self.GetNTPRecentlyClosed(), expected)) |
+ |
+ def testCloseMultipleWindows(self): |
+ """Tests closing multiple windows populates the Recently Closed list""" |
+ self.RemoveNTPDefaultThumbnails() |
+ self.OpenNewBrowserWindow(True) |
+ self.NavigateToURL(self.PAGES[0]['url'], 1, 0) |
+ self.AppendTab(pyauto.GURL(self.PAGES[1]['url']), 1) |
+ self.OpenNewBrowserWindow(True) |
+ self.NavigateToURL(self.PAGES[1]['url'], 2, 0) |
+ self.AppendTab(pyauto.GURL(self.PAGES[0]['url']), 2) |
+ self.CloseBrowserWindow(2) |
+ self.CloseBrowserWindow(1) |
+ expected = [{ u'type': u'window', |
+ u'tabs': [ |
+ { u'type': u'tab', |
+ u'url': self.PAGES[0]['url'], |
+ u'direction': u'ltr' }, |
+ { u'type': u'tab', |
+ u'url': self.PAGES[1]['url']}] |
+ }, |
+ { u'type': u'window', |
+ u'tabs': [ |
+ { u'type': u'tab', |
+ u'url': self.PAGES[1]['url'], |
+ u'direction': u'ltr' }, |
+ { u'type': u'tab', |
+ u'url': self.PAGES[0]['url']}] |
+ }] |
+ self.assertEquals(expected, test_utils.StripUnmatchedKeys( |
+ self.GetNTPRecentlyClosed(), expected)) |
+ |
+ def testRecentlyClosedShowsUniqueItems(self): |
+ """Tests that the Recently Closed section does not show duplicate items""" |
+ self.RemoveNTPDefaultThumbnails() |
+ self.AppendTab(pyauto.GURL(self.PAGES[0]['url'])) |
+ self.AppendTab(pyauto.GURL(self.PAGES[0]['url'])) |
+ self.GetBrowserWindow(0).GetTab(1).Close(True) |
+ self.GetBrowserWindow(0).GetTab(1).Close(True) |
+ self.assertEquals(1, len(self.GetNTPRecentlyClosed())) |
+ |
+ def testRecentlyClosedIncognito(self): |
+ """Tests that we don't record closure of Incognito tabs or windows""" |
+ self.RemoveNTPDefaultThumbnails() |
+ self.RunCommand(pyauto.IDC_NEW_INCOGNITO_WINDOW) |
+ self.NavigateToURL(self.PAGES[0]['url'], 1, 0) |
+ self.AppendTab(pyauto.GURL(self.PAGES[0]['url']), 1) |
+ self.AppendTab(pyauto.GURL(self.PAGES[1]['url']), 1) |
+ self.GetBrowserWindow(1).GetTab(0).Close(True) |
+ self.assertFalse(self.GetNTPRecentlyClosed()) |
+ self.CloseBrowserWindow(1) |
+ self.assertFalse(self.GetNTPRecentlyClosed()) |
+ |
if __name__ == '__main__': |
pyauto_functional.Main() |