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

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

Issue 222873002: Remove pyauto tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: sync Created 6 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « chrome/test/functional/ntp.py ('k') | chrome/test/functional/perf.cfg » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 #!/usr/bin/env python
2 # Copyright (c) 2011 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
5
6 import glob
7 import os
8 import re
9 import shutil
10 import tempfile
11 import urlparse
12
13 import pyauto_functional # Must be imported before pyauto
14 import pyauto
15 import test_utils
16
17
18 class OmniboxTest(pyauto.PyUITest):
19 """Test cases for the omnibox."""
20
21 def Debug(self):
22 """Test method for experimentation.
23
24 This method will not run automatically.
25 """
26 import time
27 while True:
28 self.pprint(self.GetOmniboxInfo().omniboxdict)
29 time.sleep(1)
30
31 def testFocusOnStartup(self):
32 """Verify that the omnibox has focus on startup."""
33 self.WaitUntilOmniboxReadyHack()
34 self.assertTrue(self.GetOmniboxInfo().Properties('has_focus'))
35
36 def testHistoryResult(self):
37 """Verify that the omnibox can fetch items from the history."""
38 url = self.GetFileURLForDataPath('title2.html')
39 title = 'Title Of Awesomeness'
40 self.AppendTab(pyauto.GURL(url))
41 def _VerifyHistoryResult(query_list, description, windex=0):
42 """Verify result matching given description for given list of queries."""
43 for query_text in query_list:
44 matches = test_utils.GetOmniboxMatchesFor(
45 self, query_text, windex=windex,
46 attr_dict={'description': description})
47 self.assertTrue(matches)
48 self.assertEqual(1, len(matches))
49 item = matches[0]
50 self.assertEqual(url, item['destination_url'])
51 # Query using URL & title.
52 _VerifyHistoryResult([url, title], title)
53 # Verify results in another tab.
54 self.AppendTab(pyauto.GURL())
55 _VerifyHistoryResult([url, title], title)
56 # Verify results in another window.
57 self.OpenNewBrowserWindow(True)
58 self.WaitUntilOmniboxReadyHack(windex=1)
59 _VerifyHistoryResult([url, title], title, windex=1)
60 # Verify results in an incognito window.
61 self.RunCommand(pyauto.IDC_NEW_INCOGNITO_WINDOW)
62 self.WaitUntilOmniboxReadyHack(windex=2)
63 _VerifyHistoryResult([url, title], title, windex=2)
64
65 def _VerifyOmniboxURLMatches(self, url, description, windex=0):
66 """Verify URL match results from the omnibox.
67
68 Args:
69 url: The URL to use.
70 description: The string description within the history page and Google
71 search to match against.
72 windex: The window index to work on. Defaults to 0 (first window).
73 """
74 matches_description = test_utils.GetOmniboxMatchesFor(
75 self, url, windex=windex, attr_dict={'description': description})
76 self.assertEqual(1, len(matches_description))
77 if description == 'Google Search':
78 self.assertTrue(re.match('http://www.google.com/search.+',
79 matches_description[0]['destination_url']))
80 else:
81 self.assertEqual(url, matches_description[0]['destination_url'])
82
83 def testFetchHistoryResultItems(self):
84 """Verify omnibox fetches history items in 2nd tab, window and incognito."""
85 url = self.GetFileURLForDataPath('title2.html')
86 title = 'Title Of Awesomeness'
87 desc = 'Google Search'
88 # Fetch history page item in the second tab.
89 self.AppendTab(pyauto.GURL(url))
90 self._VerifyOmniboxURLMatches(url, title)
91 # Fetch history page items in the second window.
92 self.OpenNewBrowserWindow(True)
93 self.NavigateToURL(url, 1, 0)
94 self._VerifyOmniboxURLMatches(url, title, windex=1)
95 # Fetch google search items in incognito window.
96 self.RunCommand(pyauto.IDC_NEW_INCOGNITO_WINDOW)
97 self.NavigateToURL(url, 2, 0)
98 self._VerifyOmniboxURLMatches(url, desc, windex=2)
99
100 def testSelect(self):
101 """Verify omnibox popup selection."""
102 url1 = self.GetFileURLForDataPath('title2.html')
103 url2 = self.GetFileURLForDataPath('title1.html')
104 title1 = 'Title Of Awesomeness'
105 self.NavigateToURL(url1)
106 self.NavigateToURL(url2)
107 matches = test_utils.GetOmniboxMatchesFor(self, 'file://')
108 self.assertTrue(matches)
109 # Find the index of match for |url1|.
110 index = None
111 for i, match in enumerate(matches):
112 if match['description'] == title1:
113 index = i
114 self.assertTrue(index is not None)
115 self.OmniboxMovePopupSelection(index) # Select |url1| line in popup.
116 self.assertEqual(url1, self.GetOmniboxInfo().Text())
117 self.OmniboxAcceptInput()
118 self.assertEqual(title1, self.GetActiveTabTitle())
119
120 def testInlineAutoComplete(self):
121 """Verify inline autocomplete for a pre-visited URL."""
122 self.NavigateToURL('http://www.google.com')
123 matches = test_utils.GetOmniboxMatchesFor(self, 'goog')
124 self.assertTrue(matches)
125 # Omnibox should suggest auto completed URL as the first item.
126 matches_description = matches[0]
127 self.assertTrue('www.google.com' in matches_description['contents'])
128 self.assertEqual('history-url', matches_description['type'])
129 # The URL should be inline-autocompleted in the omnibox.
130 self.assertTrue('google.com' in self.GetOmniboxInfo().Text())
131
132 def testCrazyFilenames(self):
133 """Test omnibox query with filenames containing special chars.
134
135 The files are created on the fly and cleaned after use.
136 """
137 filename = os.path.join(self.DataDir(), 'downloads', 'crazy_filenames.txt')
138 zip_names = self.EvalDataFrom(filename)
139 # We got .zip filenames. Change them to .html.
140 crazy_filenames = [x.replace('.zip', '.html') for x in zip_names]
141 title = 'given title'
142
143 def _CreateFile(name):
144 """Create the given html file."""
145 fp = open(name, 'w') # |name| could be unicode.
146 print >>fp, '<html><title>%s</title><body>' % title
147 print >>fp, 'This is a junk file named <h2>%s</h2>' % repr(name)
148 print >>fp, '</body></html>'
149 fp.close()
150
151 crazy_fileurls = []
152 # Temp dir for hosting crazy filenames.
153 temp_dir = tempfile.mkdtemp(prefix='omnibox')
154 # Windows has a dual nature dealing with unicode filenames.
155 # While the files are internally saved as unicode, there's a non-unicode
156 # aware API that returns a locale-dependent coding on the true unicode
157 # filenames. This messes up things.
158 # Filesystem-interfacing functions like os.listdir() need to
159 # be given unicode strings to "do the right thing" on win.
160 # Ref: http://boodebr.org/main/python/all-about-python-and-unicode
161 try:
162 for filename in crazy_filenames: # |filename| is unicode.
163 file_path = os.path.join(temp_dir, filename.encode('utf-8'))
164 _CreateFile(os.path.join(temp_dir, filename))
165 file_url = self.GetFileURLForPath(file_path)
166 crazy_fileurls.append(file_url)
167 self.NavigateToURL(file_url)
168
169 # Verify omnibox queries.
170 for file_url in crazy_fileurls:
171 matches = test_utils.GetOmniboxMatchesFor(self,
172 file_url, attr_dict={'type': 'url-what-you-typed',
173 'description': title})
174 self.assertTrue(matches)
175 self.assertEqual(1, len(matches))
176 self.assertTrue(os.path.basename(file_url) in
177 matches[0]['destination_url'])
178 finally:
179 shutil.rmtree(unicode(temp_dir)) # Unicode so that Win treats nicely.
180
181 def testSuggest(self):
182 """Verify suggested results in omnibox."""
183 matches = test_utils.GetOmniboxMatchesFor(self, 'apple')
184 self.assertTrue(matches)
185 self.assertTrue([x for x in matches if x['type'] == 'search-suggest'])
186
187 def testDifferentTypesOfResults(self):
188 """Verify different types of results from omnibox.
189
190 This includes history result, bookmark result, suggest results.
191 """
192 url = 'http://www.google.com/'
193 title = 'Google'
194 search_string = 'google'
195 self.AddBookmarkURL( # Add a bookmark.
196 self.GetBookmarkModel().BookmarkBar()['id'], 0, title, url)
197 self.NavigateToURL(url) # Build up history.
198 matches = test_utils.GetOmniboxMatchesFor(self, search_string)
199 self.assertTrue(matches)
200 # Verify starred result (indicating bookmarked url).
201 self.assertTrue([x for x in matches if x['starred'] == True])
202 for item_type in ('history-url', 'search-what-you-typed',
203 'search-suggest',):
204 self.assertTrue([x for x in matches if x['type'] == item_type])
205
206 def testSuggestPref(self):
207 """Verify no suggests for omnibox when suggested-services disabled."""
208 search_string = 'apple'
209 self.assertTrue(self.GetPrefsInfo().Prefs(pyauto.kSearchSuggestEnabled))
210 matches = test_utils.GetOmniboxMatchesFor(self, search_string)
211 self.assertTrue(matches)
212 self.assertTrue([x for x in matches if x['type'] == 'search-suggest'])
213 # Disable suggest-service.
214 self.SetPrefs(pyauto.kSearchSuggestEnabled, False)
215 self.assertFalse(self.GetPrefsInfo().Prefs(pyauto.kSearchSuggestEnabled))
216 matches = test_utils.GetOmniboxMatchesFor(self, search_string)
217 self.assertTrue(matches)
218 # Verify there are no suggest results.
219 self.assertFalse([x for x in matches if x['type'] == 'search-suggest'])
220
221 def testAutoCompleteForSearch(self):
222 """Verify omnibox autocomplete for search."""
223 search_string = 'youtu'
224 verify_string = 'youtube'
225 matches = test_utils.GetOmniboxMatchesFor(self, search_string)
226 # Retrieve last contents element.
227 matches_description = matches[-1]['contents'].split()
228 self.assertEqual(verify_string, matches_description[0])
229
230 def _GotContentHistory(self, search_text, url):
231 """Check if omnibox returns a previously-visited page for given search text.
232
233 Args:
234 search_text: The string search text.
235 url: The string URL to look for in the omnibox matches.
236
237 Returns:
238 True, if the omnibox returns the previously-visited page for the given
239 search text, or False otherwise.
240 """
241 # Omnibox doesn't change results if searching the same text repeatedly.
242 # So setting '' in omnibox before the next repeated search.
243 self.SetOmniboxText('')
244 matches = test_utils.GetOmniboxMatchesFor(self, search_text)
245 matches_description = [x for x in matches if x['destination_url'] == url]
246 return 1 == len(matches_description)
247
248 def testContentHistory(self):
249 """Verify omnibox results when entering page content.
250
251 Test verifies that visited page shows up in omnibox on entering page
252 content.
253 """
254 url = self.GetFileURLForPath(
255 os.path.join(self.DataDir(), 'find_in_page', 'largepage.html'))
256 self.NavigateToURL(url)
257 self.assertTrue(self.WaitUntil(
258 lambda: self._GotContentHistory('British throne', url)))
259
260 def testOmniboxSearchHistory(self):
261 """Verify page navigation/search from omnibox are added to the history."""
262 url = self.GetFileURLForDataPath('title2.html')
263 self.NavigateToURL(url)
264 self.AppendTab(pyauto.GURL('about:blank'))
265 self.SetOmniboxText('java')
266 self.WaitUntilOmniboxQueryDone()
267 self.OmniboxAcceptInput()
268 history = self.GetHistoryInfo().History()
269 self.assertEqual(2, len(history))
270 self.assertEqual(url, history[1]['url'])
271 self.assertEqual('java - Google Search', history[0]['title'])
272
273 def _VerifyHasBookmarkResult(self, matches):
274 """Verify that we have a bookmark result.
275
276 Args:
277 matches: A list of match items, as returned by
278 test_utils.GetOmniboxMatchesFor().
279 """
280 matches_starred = [result for result in matches if result['starred']]
281 self.assertTrue(matches_starred)
282 self.assertEqual(1, len(matches_starred))
283
284 def _CheckBookmarkResultForVariousInputs(self, url, title, windex=0):
285 """Check if we get the bookmark for complete and partial inputs.
286
287 Args:
288 url: A string URL.
289 title: A string title for the given URL.
290 windex: The window index to use. Defaults to 0 (first window).
291 """
292 # Check if the complete URL would get the bookmark.
293 url_matches = test_utils.GetOmniboxMatchesFor(self, url, windex=windex)
294 self._VerifyHasBookmarkResult(url_matches)
295 # Check if the complete title would get the bookmark.
296 title_matches = test_utils.GetOmniboxMatchesFor(self, title, windex=windex)
297 self._VerifyHasBookmarkResult(title_matches)
298 # Check if the partial URL would get the bookmark.
299 split_url = urlparse.urlsplit(url)
300 partial_url = test_utils.GetOmniboxMatchesFor(
301 self, split_url.scheme, windex=windex)
302 self._VerifyHasBookmarkResult(partial_url)
303 # Check if the partial title would get the bookmark.
304 split_title = title.split()
305 search_term = split_title[len(split_title) - 1]
306 partial_title = test_utils.GetOmniboxMatchesFor(
307 self, search_term, windex=windex)
308 self._VerifyHasBookmarkResult(partial_title)
309
310 def testBookmarkResultInNewTabAndWindow(self):
311 """Verify omnibox finds bookmarks in search options of new tabs/windows."""
312 url = self.GetFileURLForDataPath('title2.html')
313 self.NavigateToURL(url)
314 title = 'This is Awesomeness'
315 bookmarks = self.GetBookmarkModel()
316 bar_id = bookmarks.BookmarkBar()['id']
317 self.AddBookmarkURL(bar_id, 0, title, url)
318 bookmarks = self.GetBookmarkModel()
319 nodes = bookmarks.FindByTitle(title)
320 self.AppendTab(pyauto.GURL(url))
321 self._CheckBookmarkResultForVariousInputs(url, title)
322 self.OpenNewBrowserWindow(True)
323 self.assertEqual(2, self.GetBrowserWindowCount())
324 self.NavigateToURL(url, 1, 0)
325 self._CheckBookmarkResultForVariousInputs(url, title, windex=1)
326 self.RunCommand(pyauto.IDC_NEW_INCOGNITO_WINDOW)
327 self.assertEqual(3, self.GetBrowserWindowCount())
328 self.NavigateToURL(url, 2, 0)
329 self._CheckBookmarkResultForVariousInputs(url, title, windex=2)
330
331 def testAutoCompleteForNonAsciiSearch(self):
332 """Verify can search/autocomplete with non-ASCII incomplete keywords."""
333 search_string = u'\u767e'
334 verify_string = u'\u767e\u5ea6\u4e00\u4e0b'
335 matches = test_utils.GetOmniboxMatchesFor(self, search_string)
336 self.assertTrue(verify_string in matches[-1]['contents'])
337
338
339 class OmniboxLiveTest(pyauto.PyUITest):
340 """Test cases for the omnibox that hit live servers (such as Google)."""
341
342 def ExtraChromeFlags(self):
343 """Override default list of extra flags used in pyauto tests."""
344 # Force the suggest field trial group. This doesn't guarantee that there
345 # will be no experimental behaviour, but there's no other way to disable
346 # all suggest field trials at the moment. TODO(mpearson): Consider allowing
347 # the suggest_url to be overridden using a flag (so that we can omit the
348 # "sugexp=chrome,mod=<n>" CGI param), or provide some other way to turn off
349 # all suggest field trials.
350 return ['--force-fieldtrials=OmniboxSearchSuggest/10/']
351
352 def testGoogleSearch(self):
353 """Verify Google search item in omnibox results."""
354 search_text = 'hello world'
355 verify_str = 'Google Search'
356 url_re = 'http://www.google.com/search\?.*q=hello\+world.*'
357 matches_description = test_utils.GetOmniboxMatchesFor(
358 self, search_text, attr_dict={'description': verify_str})
359 self.assertTrue(matches_description)
360 # There should be a least one entry with the description Google. Suggest
361 # results may end up having 'Google Search' in them, so use >=.
362 self.assertTrue(len(matches_description) >= 1)
363 item = matches_description[0]
364 self.assertTrue(re.search(url_re, item['destination_url']))
365 self.assertEqual('search-what-you-typed', item['type'])
366
367
368 if __name__ == '__main__':
369 pyauto_functional.Main()
OLDNEW
« no previous file with comments | « chrome/test/functional/ntp.py ('k') | chrome/test/functional/perf.cfg » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698