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

Side by Side Diff: chrome/test/functional/ntp.py

Issue 5255005: Add pyauto tests for the New Tab page. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: addressed comments Created 10 years, 1 month 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | chrome/test/functional/test_utils.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/python 1 #!/usr/bin/python
2 # Copyright (c) 2010 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2010 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 import os 6 import os
7 7
8 import pyauto_functional # Must be imported before pyauto 8 import pyauto_functional # Must be imported before pyauto
9 import pyauto 9 import pyauto
10 import test_utils
10 11
11 12
12 class NTPTest(pyauto.PyUITest): 13 class NTPTest(pyauto.PyUITest):
13 """Test of the NTP.""" 14 """Test of the NTP."""
14 15
15 def Debug(self): 16 def Debug(self):
16 """Test method for experimentation. 17 """Test method for experimentation.
17 18
18 This method is not run automatically. 19 This method is not run automatically.
19 """ 20 """
20 while True: 21 while True:
21 raw_input('Interact with the browser and hit <enter> to dump NTP info...') 22 raw_input('Interact with the browser and hit <enter> to dump NTP info...')
22 print '*' * 20 23 print '*' * 20
23 import pprint 24 import pprint
24 pp = pprint.PrettyPrinter(indent=2) 25 pp = pprint.PrettyPrinter(indent=2)
25 pp.pprint(self._GetNTPInfo()) 26 pp.pprint(self._GetNTPInfo())
26 27
27 def __init__(self, methodName='runTest'): 28 def __init__(self, methodName='runTest'):
28 super(NTPTest, self).__init__(methodName) 29 super(NTPTest, self).__init__(methodName)
29 30
30 # Create some dummy file urls we can use in the tests. 31 # Create some dummy file urls we can use in the tests.
31 filenames = ['title1.html', 'title2.html'] 32 filenames = ['title1.html', 'title2.html']
32 titles = [u'', u'Title Of Awesomeness'] 33 titles = [u'', u'Title Of Awesomeness']
33 urls = map(lambda name: self.GetFileURLForDataPath(name), filenames) 34 urls = map(lambda name: self.GetFileURLForDataPath(name), filenames)
34 self.PAGES = map(lambda url, title: {'url': url, 'title': title}, 35 self.PAGES = map(lambda url, title: {'url': url, 'title': title},
35 urls, titles) 36 urls, titles)
36 37
38 def _NTPContainsThumbnail(self, check_thumbnail):
39 """Returns whether the NTP's Most Visited section contains the given
40 thumbnail."""
41 for thumbnail in self.GetNTPThumbnails():
42 if check_thumbnail['url'] == thumbnail['url']:
43 return True
44 return False
45
37 def testFreshProfile(self): 46 def testFreshProfile(self):
38 """Tests that the NTP with a fresh profile is correct""" 47 """Tests that the NTP with a fresh profile is correct"""
39 thumbnails = self.GetNTPThumbnails() 48 thumbnails = self.GetNTPThumbnails()
40 default_sites = self.GetNTPDefaultSites() 49 default_sites = self.GetNTPDefaultSites()
41 self.assertEqual(len(default_sites), len(thumbnails)) 50 self.assertEqual(len(default_sites), len(thumbnails))
42 for thumbnail, default_site in zip(thumbnails, default_sites): 51 for thumbnail, default_site in zip(thumbnails, default_sites):
43 self.assertEqual(thumbnail['url'], default_site) 52 self.assertEqual(thumbnail['url'], default_site)
44 self.assertEqual(0, len(self.GetNTPRecentlyClosed())) 53 self.assertEqual(0, len(self.GetNTPRecentlyClosed()))
45 54
46 def testRemoveDefaultThumbnails(self): 55 def testRemoveDefaultThumbnails(self):
47 """Tests that the default thumbnails can be removed""" 56 """Tests that the default thumbnails can be removed"""
48 self.RemoveNTPDefaultThumbnails() 57 self.RemoveNTPDefaultThumbnails()
49 self.assertFalse(self.GetNTPThumbnails()) 58 self.assertFalse(self.GetNTPThumbnails())
50 self.RestoreAllNTPThumbnails() 59 self.RestoreAllNTPThumbnails()
51 self.assertEqual(len(self.GetNTPDefaultSites()), 60 self.assertEqual(len(self.GetNTPDefaultSites()),
52 len(self.GetNTPThumbnails())) 61 len(self.GetNTPThumbnails()))
53 self.RemoveNTPDefaultThumbnails() 62 self.RemoveNTPDefaultThumbnails()
54 self.assertFalse(self.GetNTPThumbnails()) 63 self.assertFalse(self.GetNTPThumbnails())
55 64
56 def testOneMostVisitedSite(self): 65 def testOneMostVisitedSite(self):
57 """Tests that a site is added to the most visited sites""" 66 """Tests that a site is added to the most visited sites"""
58 self.RemoveNTPDefaultThumbnails() 67 self.RemoveNTPDefaultThumbnails()
59 self.NavigateToURL(self.PAGES[1]['url']) 68 self.NavigateToURL(self.PAGES[1]['url'])
60 self.assertEqual(self.PAGES[1]['url'], self.GetNTPThumbnails()[0]['url']) 69 thumbnail = self.GetNTPThumbnails()[0]
61 self.assertEqual(self.PAGES[1]['title'], 70 self.assertEqual(self.PAGES[1]['url'], thumbnail['url'])
62 self.GetNTPThumbnails()[0]['title']) 71 self.assertEqual(self.PAGES[1]['title'], thumbnail['title'])
63 72 self.assertFalse(thumbnail['is_pinned'])
64 def testOneRecentlyClosedTab(self):
65 """Tests that closing a tab populates the recently closed tabs list"""
66 self.RemoveNTPDefaultThumbnails()
67 self.AppendTab(pyauto.GURL(self.PAGES[1]['url']))
68 self.GetBrowserWindow(0).GetTab(1).Close(True)
69 self.assertEqual(self.PAGES[1]['url'],
70 self.GetNTPRecentlyClosed()[0]['url'])
71 self.assertEqual(self.PAGES[1]['title'],
72 self.GetNTPRecentlyClosed()[0]['title'])
73 73
74 def testMoveThumbnailBasic(self): 74 def testMoveThumbnailBasic(self):
75 """Tests moving a thumbnail to a different index""" 75 """Tests moving a thumbnail to a different index"""
76 self.RemoveNTPDefaultThumbnails() 76 self.RemoveNTPDefaultThumbnails()
77 self.NavigateToURL(self.PAGES[0]['url']) 77 self.NavigateToURL(self.PAGES[0]['url'])
78 self.NavigateToURL(self.PAGES[1]['url']) 78 self.NavigateToURL(self.PAGES[1]['url'])
79 thumbnails = self.GetNTPThumbnails() 79 thumbnails = self.GetNTPThumbnails()
80 self.MoveNTPThumbnail(thumbnails[0], 1) 80 self.MoveNTPThumbnail(thumbnails[0], 1)
81 self.assertTrue(self.IsNTPThumbnailPinned(thumbnails[0])) 81 self.assertTrue(self.IsNTPThumbnailPinned(thumbnails[0]))
82 self.assertFalse(self.IsNTPThumbnailPinned(thumbnails[1])) 82 self.assertFalse(self.IsNTPThumbnailPinned(thumbnails[1]))
83 self.assertEqual(self.PAGES[0]['url'], self.GetNTPThumbnails()[1]['url']) 83 self.assertEqual(self.PAGES[0]['url'], self.GetNTPThumbnails()[1]['url'])
84 self.assertEqual(1, self.GetNTPThumbnailIndex(thumbnails[0])) 84 self.assertEqual(1, self.GetNTPThumbnailIndex(thumbnails[0]))
85 85
86 def testPinningThumbnailBasic(self): 86 def testPinningThumbnailBasic(self):
87 """Tests that we can pin/unpin a thumbnail""" 87 """Tests that we can pin/unpin a thumbnail"""
88 self.RemoveNTPDefaultThumbnails() 88 self.RemoveNTPDefaultThumbnails()
89 self.NavigateToURL(self.PAGES[0]['url']) 89 self.NavigateToURL(self.PAGES[0]['url'])
90 thumbnail1 = self.GetNTPThumbnails()[0] 90 thumbnail1 = self.GetNTPThumbnails()[0]
91 self.assertFalse(self.IsNTPThumbnailPinned(thumbnail1)) 91 self.assertFalse(self.IsNTPThumbnailPinned(thumbnail1))
92 self.PinNTPThumbnail(thumbnail1) 92 self.PinNTPThumbnail(thumbnail1)
93 self.assertTrue(self.IsNTPThumbnailPinned(thumbnail1)) 93 self.assertTrue(self.IsNTPThumbnailPinned(thumbnail1))
94 self.UnpinNTPThumbnail(thumbnail1) 94 self.UnpinNTPThumbnail(thumbnail1)
95 self.assertFalse(self.IsNTPThumbnailPinned(thumbnail1)) 95 self.assertFalse(self.IsNTPThumbnailPinned(thumbnail1))
96 96
97 def testRemoveThumbnail(self):
98 """Tests removing a thumbnail works"""
99 self.RemoveNTPDefaultThumbnails()
100 for page in self.PAGES:
101 self.AppendTab(pyauto.GURL(page['url']))
102
103 thumbnails = self.GetNTPThumbnails()
104 for thumbnail in thumbnails:
105 self.assertEquals(thumbnail, self.GetNTPThumbnails()[0])
106 self.RemoveNTPThumbnail(thumbnail)
107 self.assertFalse(self._NTPContainsThumbnail(thumbnail))
108 self.assertFalse(self.GetNTPThumbnails())
109
110 def testIncognitoNotAppearInMostVisited(self):
111 """Tests that visiting a page in incognito mode does cause it to appear in
112 the Most Visited section"""
113 self.RemoveNTPDefaultThumbnails()
114 self.RunCommand(pyauto.IDC_NEW_INCOGNITO_WINDOW)
115 self.NavigateToURL(self.PAGES[0]['url'], 1, 0)
116 self.assertFalse(self.GetNTPThumbnails())
117
118 def testRestoreOncePinnedThumbnail(self):
119 """Tests that after restoring a once pinned thumbnail, the thumbnail is
120 not pinned"""
121 self.RemoveNTPDefaultThumbnails()
122 self.NavigateToURL(self.PAGES[0]['url'])
123 thumbnail1 = self.GetNTPThumbnails()[0]
124 self.PinNTPThumbnail(thumbnail1)
125 self.RemoveNTPThumbnail(thumbnail1)
126 self.RestoreAllNTPThumbnails()
127 self.RemoveNTPDefaultThumbnails()
128 self.assertFalse(self.IsNTPThumbnailPinned(thumbnail1))
129
130 def testThumbnailPersistence(self):
131 """Tests that thumbnails persist across Chrome restarts"""
132 self.RemoveNTPDefaultThumbnails()
133 for page in self.PAGES:
134 self.AppendTab(pyauto.GURL(page['url']))
135 thumbnails = self.GetNTPThumbnails()
136 self.MoveNTPThumbnail(thumbnails[0], 1)
137 thumbnails = self.GetNTPThumbnails()
138
139 self.RestartBrowser(clear_profile=False)
140 self.assertEqual(thumbnails, self.GetNTPThumbnails())
141
142 def testRestoreAllRemovedThumbnails(self):
143 """Tests restoring all removed thumbnails"""
144 for page in self.PAGES:
145 self.AppendTab(pyauto.GURL(page['url']))
146
147 thumbnails = self.GetNTPThumbnails()
148 for thumbnail in thumbnails:
149 self.RemoveNTPThumbnail(thumbnail)
150
151 self.RestoreAllNTPThumbnails()
152 self.assertEquals(thumbnails, self.GetNTPThumbnails())
153
154 def testThumbnailRanking(self):
155 """Tests that the thumbnails are ordered according to visit count"""
156 self.RemoveNTPDefaultThumbnails()
157 for page in self.PAGES:
158 self.AppendTab(pyauto.GURL(page['url']))
159 thumbnails = self.GetNTPThumbnails()
160 self.assertEqual(self.PAGES[0]['url'], self.GetNTPThumbnails()[0]['url'])
161 self.AppendTab(pyauto.GURL(self.PAGES[1]['url']))
162 self.assertEqual(self.PAGES[1]['url'], self.GetNTPThumbnails()[0]['url'])
163 self.AppendTab(pyauto.GURL(self.PAGES[0]['url']))
164 self.AppendTab(pyauto.GURL(self.PAGES[0]['url']))
165 self.assertEqual(self.PAGES[0]['url'], self.GetNTPThumbnails()[0]['url'])
166
167 def testPinnedThumbnailNeverMoves(self):
168 """Tests that once a thumnail is pinned it never moves"""
169 self.RemoveNTPDefaultThumbnails()
170 for page in self.PAGES:
171 self.AppendTab(pyauto.GURL(page['url']))
172 self.PinNTPThumbnail(self.GetNTPThumbnails()[0])
173 thumbnails = self.GetNTPThumbnails()
174 self.AppendTab(pyauto.GURL(self.PAGES[1]['url']))
175 self.assertEqual(thumbnails, self.GetNTPThumbnails())
176
177 def testThumbnailTitleChangeAfterPageTitleChange(self):
178 """Tests that once a page title changes, the thumbnail title changes too"""
179 self.RemoveNTPDefaultThumbnails()
180 self.NavigateToURL(self.PAGES[0]['url'])
181 self.assertEqual(self.PAGES[0]['title'],
182 self.GetNTPThumbnails()[0]['title'])
183 self.ExecuteJavascript('window.domAutomationController.send(' +
184 'document.title = "new title")')
185 self.assertEqual('new title', self.GetNTPThumbnails()[0]['title'])
186
187 def testCloseOneTab(self):
188 """Tests that closing a tab populates the recently closed list"""
189 self.RemoveNTPDefaultThumbnails()
190 self.AppendTab(pyauto.GURL(self.PAGES[1]['url']))
191 self.GetBrowserWindow(0).GetTab(1).Close(True)
192 self.assertEqual(self.PAGES[1]['url'],
193 self.GetNTPRecentlyClosed()[0]['url'])
194 self.assertEqual(self.PAGES[1]['title'],
195 self.GetNTPRecentlyClosed()[0]['title'])
196
197 def testCloseOneWindow(self):
198 """Tests that closing a window populates the recently closed list"""
199 self.RemoveNTPDefaultThumbnails()
200 self.OpenNewBrowserWindow(True)
201 self.NavigateToURL(self.PAGES[0]['url'], 1, 0)
202 self.AppendTab(pyauto.GURL(self.PAGES[1]['url']), 1)
203 self.CloseBrowserWindow(1)
204 expected = [{ u'type': u'window',
205 u'tabs': [
206 { u'type': u'tab',
207 u'url': self.PAGES[0]['url'],
208 u'direction': u'ltr' },
209 { u'type': u'tab',
210 u'url': self.PAGES[1]['url']}]
211 }]
212 self.assertEquals(expected, test_utils.StripUnmatchedKeys(
213 self.GetNTPRecentlyClosed(), expected))
214
215 def testCloseMultipleTabs(self):
216 """Tests closing multiple tabs populates the Recently Closed section in
217 order"""
218 self.RemoveNTPDefaultThumbnails()
219 self.AppendTab(pyauto.GURL(self.PAGES[0]['url']))
220 self.AppendTab(pyauto.GURL(self.PAGES[1]['url']))
221 self.GetBrowserWindow(0).GetTab(2).Close(True)
222 self.GetBrowserWindow(0).GetTab(1).Close(True)
223 expected = [{ u'type': u'tab',
224 u'url': self.PAGES[0]['url']
225 },
226 { u'type': u'tab',
227 u'url': self.PAGES[1]['url']
228 }]
229 self.assertEquals(expected, test_utils.StripUnmatchedKeys(
230 self.GetNTPRecentlyClosed(), expected))
231
232 def testCloseWindowWithOneTab(self):
233 """Tests that closing a window with only one tab only shows up as a tab in
234 the Recently Closed section"""
235 self.RemoveNTPDefaultThumbnails()
236 self.OpenNewBrowserWindow(True)
237 self.NavigateToURL(self.PAGES[0]['url'], 1, 0)
238 self.CloseBrowserWindow(1)
239 expected = [{ u'type': u'tab',
240 u'url': self.PAGES[0]['url']
241 }]
242 self.assertEquals(expected, test_utils.StripUnmatchedKeys(
243 self.GetNTPRecentlyClosed(), expected))
244
245 def testCloseMultipleWindows(self):
246 """Tests closing multiple windows populates the Recently Closed list"""
247 self.RemoveNTPDefaultThumbnails()
248 self.OpenNewBrowserWindow(True)
249 self.NavigateToURL(self.PAGES[0]['url'], 1, 0)
250 self.AppendTab(pyauto.GURL(self.PAGES[1]['url']), 1)
251 self.OpenNewBrowserWindow(True)
252 self.NavigateToURL(self.PAGES[1]['url'], 2, 0)
253 self.AppendTab(pyauto.GURL(self.PAGES[0]['url']), 2)
254 self.CloseBrowserWindow(2)
255 self.CloseBrowserWindow(1)
256 expected = [{ u'type': u'window',
257 u'tabs': [
258 { u'type': u'tab',
259 u'url': self.PAGES[0]['url'],
260 u'direction': u'ltr' },
261 { u'type': u'tab',
262 u'url': self.PAGES[1]['url']}]
263 },
264 { u'type': u'window',
265 u'tabs': [
266 { u'type': u'tab',
267 u'url': self.PAGES[1]['url'],
268 u'direction': u'ltr' },
269 { u'type': u'tab',
270 u'url': self.PAGES[0]['url']}]
271 }]
272 self.assertEquals(expected, test_utils.StripUnmatchedKeys(
273 self.GetNTPRecentlyClosed(), expected))
274
275 def testRecentlyClosedShowsUniqueItems(self):
276 """Tests that the Recently Closed section does not show duplicate items"""
277 self.RemoveNTPDefaultThumbnails()
278 self.AppendTab(pyauto.GURL(self.PAGES[0]['url']))
279 self.AppendTab(pyauto.GURL(self.PAGES[0]['url']))
280 self.GetBrowserWindow(0).GetTab(1).Close(True)
281 self.GetBrowserWindow(0).GetTab(1).Close(True)
282 self.assertEquals(1, len(self.GetNTPRecentlyClosed()))
283
284 def testRecentlyClosedIncognito(self):
285 """Tests that we don't record closure of Incognito tabs or windows"""
286 self.RemoveNTPDefaultThumbnails()
287 self.RunCommand(pyauto.IDC_NEW_INCOGNITO_WINDOW)
288 self.NavigateToURL(self.PAGES[0]['url'], 1, 0)
289 self.AppendTab(pyauto.GURL(self.PAGES[0]['url']), 1)
290 self.AppendTab(pyauto.GURL(self.PAGES[1]['url']), 1)
291 self.GetBrowserWindow(1).GetTab(0).Close(True)
292 self.assertFalse(self.GetNTPRecentlyClosed())
293 self.CloseBrowserWindow(1)
294 self.assertFalse(self.GetNTPRecentlyClosed())
295
97 296
98 if __name__ == '__main__': 297 if __name__ == '__main__':
99 pyauto_functional.Main() 298 pyauto_functional.Main()
OLDNEW
« no previous file with comments | « no previous file | chrome/test/functional/test_utils.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698