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

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

Issue 3111030: New pyauto translate tests. (Closed)
Patch Set: Initial Created 10 years, 4 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
« no previous file with comments | « no previous file | no next file » | 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 glob 6 import glob
7 import logging 7 import logging
8 import os 8 import os
9 import shutil 9 import shutil
10 import tempfile 10 import tempfile
(...skipping 23 matching lines...) Expand all
34 """Return the file URL for the given file in the data directory.""" 34 """Return the file URL for the given file in the data directory."""
35 return self.GetFileURLForPath(os.path.join(self.DataDir(), filename)) 35 return self.GetFileURLForPath(os.path.join(self.DataDir(), filename))
36 36
37 def _GetDefaultSpanishURL(self): 37 def _GetDefaultSpanishURL(self):
38 return self._GetURLForDataDirFile( 38 return self._GetURLForDataDirFile(
39 os.path.join('translate', self.spanish, 'google.html')) 39 os.path.join('translate', self.spanish, 'google.html'))
40 40
41 def _GetDefaultEnglishURL(self): 41 def _GetDefaultEnglishURL(self):
42 return self._GetURLForDataDirFile('title1.html') 42 return self._GetURLForDataDirFile('title1.html')
43 43
44 def _NavigateAndWaitForBar(self, url): 44 def _NavigateAndWaitForBar(self, url, window_index=0, tab_index=0):
45 self.NavigateToURL(url) 45 self.NavigateToURL(url, window_index, tab_index)
46 self.WaitForInfobarCount(1) 46 self.WaitForInfobarCount(1, windex=window_index, tab_index=tab_index)
47 47
48 def _ClickTranslateUntilSuccess(self, window_index=0, tab_index=0): 48 def _ClickTranslateUntilSuccess(self, window_index=0, tab_index=0):
49 """Since the translate can fail due to server error, continue trying until 49 """Since the translate can fail due to server error, continue trying until
50 it is successful or until it has tried too many times.""" 50 it is successful or until it has tried too many times."""
51 max_tries = 10 51 max_tries = 10
52 curr_try = 0 52 curr_try = 0
53 while (curr_try < max_tries and 53 while (curr_try < max_tries and
54 not self.ClickTranslateBarTranslate(window_index=window_index, 54 not self.ClickTranslateBarTranslate(window_index=window_index,
55 tab_index=tab_index)): 55 tab_index=tab_index)):
56 curr_try = curr_try + 1 56 curr_try = curr_try + 1
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 self.assertFalse('translate_bar' in translate_info) 189 self.assertFalse('translate_bar' in translate_info)
190 190
191 def testTranslateDiffURLs(self): 191 def testTranslateDiffURLs(self):
192 """Test that HTTP, HTTPS, and file urls all get translated.""" 192 """Test that HTTP, HTTPS, and file urls all get translated."""
193 http_url = 'http://www.google.com/webhp?hl=es' 193 http_url = 'http://www.google.com/webhp?hl=es'
194 https_url = 'https://www.google.com/webhp?hl=es' 194 https_url = 'https://www.google.com/webhp?hl=es'
195 file_url = self._GetDefaultSpanishURL() 195 file_url = self._GetDefaultSpanishURL()
196 for url in (http_url, https_url, file_url): 196 for url in (http_url, https_url, file_url):
197 self._AssertTranslateWorks(url, self.spanish) 197 self._AssertTranslateWorks(url, self.spanish)
198 198
199 def testNeverTranslateLanguage(self):
Alyssa 2010/08/23 22:42:54 A test with the same name and almost duplicate cod
200 """Verify no translate bar for blacklisted language."""
201 self._NavigateAndWaitForBar(self._GetDefaultSpanishURL())
202 self.SelectTranslateOption('never_translate_language')
203 self.assertFalse(self.GetBrowserInfo()['windows'][0]['tabs'][0]['infobars'])
204 # Navigate to a page that will show the translate bar, then navigate away.
205 self._NavigateAndWaitForBar(
206 self._GetURLForDataDirFile('french_page.html'))
207 self.NavigateToURL('http://es.wikipedia.org/wiki/Wikipedia:Portada')
208 self.WaitForInfobarCount(0)
209 translate_info = self.GetTranslateInfo()
210 self.assertFalse('translate_bar' in translate_info)
211 self.assertFalse(translate_info['page_translated'])
212 self.assertFalse(translate_info['can_translate_page'])
213
214 def testNotranslateMetaTag(self): 199 def testNotranslateMetaTag(self):
215 """Test "notranslate" meta tag.""" 200 """Test "notranslate" meta tag."""
216 self._NavigateAndWaitForBar(self._GetDefaultSpanishURL()) 201 self._NavigateAndWaitForBar(self._GetDefaultSpanishURL())
217 self.NavigateToURL(self._GetURLForDataDirFile( 202 self.NavigateToURL(self._GetURLForDataDirFile(
218 os.path.join('translate', 'notranslate_meta_tag.html'))) 203 os.path.join('translate', 'notranslate_meta_tag.html')))
219 self.WaitForInfobarCount(0) 204 self.WaitForInfobarCount(0)
220 translate_info = self.GetTranslateInfo() 205 translate_info = self.GetTranslateInfo()
221 self.assertFalse('translate_bar' in translate_info) 206 self.assertFalse('translate_bar' in translate_info)
222 207
223 def testToggleTranslateOption(self): 208 def testToggleTranslateOption(self):
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
330 self.assertFalse(self.GetPrefsInfo().Prefs(pyauto.kEnableTranslate)) 315 self.assertFalse(self.GetPrefsInfo().Prefs(pyauto.kEnableTranslate))
331 self.NavigateToURL(self._GetDefaultSpanishURL()) 316 self.NavigateToURL(self._GetDefaultSpanishURL())
332 self.assertFalse('translate_bar' in self.GetTranslateInfo()) 317 self.assertFalse('translate_bar' in self.GetTranslateInfo())
333 318
334 def testAlwaysTranslateLanguageButton(self): 319 def testAlwaysTranslateLanguageButton(self):
335 """Test the always translate language button.""" 320 """Test the always translate language button."""
336 spanish_url = self._GetDefaultSpanishURL() 321 spanish_url = self._GetDefaultSpanishURL()
337 self._NavigateAndWaitForBar(spanish_url) 322 self._NavigateAndWaitForBar(spanish_url)
338 323
339 # The 'Always Translate' button doesn't show up until the user has clicked 324 # The 'Always Translate' button doesn't show up until the user has clicked
340 # 'Translate' for a language several times. 325 # 'Translate' for a language 3 times.
341 max_tries = 10 326 for i in range(3):
Nirnimesh 2010/08/24 01:23:19 replace i with '_' or 'unused' to avoid pychecker
342 curr_try = 0
343 while (curr_try < max_tries and
344 not self.GetTranslateInfo()['translate_bar']\
345 ['always_translate_lang_button_showing']):
346 self._ClickTranslateUntilSuccess() 327 self._ClickTranslateUntilSuccess()
347 self._NavigateAndWaitForBar(spanish_url) 328 self.GetBrowserWindow(0).GetTab(0).Reload()
348 curr_try = curr_try + 1
349 if curr_try == max_tries:
350 self.fail('Clicked translate %d times and always translate button never '\
351 'showed up.' % max_tries)
352 329
Nirnimesh 2010/08/24 01:23:19 Shouldn't you check that the button shows up?
353 # Click the 'Always Translate' button. 330 # Click the 'Always Translate' button.
354 self.SelectTranslateOption('click_always_translate_lang_button') 331 self.SelectTranslateOption('click_always_translate_lang_button')
355 # Navigate to another Spanish page and verify it was translated. 332 # Navigate to another Spanish page and verify it was translated.
356 self._NavigateAndWaitForBar('http://www.google.com/webhp?hl=es') 333 self._NavigateAndWaitForBar('http://www.google.com/webhp?hl=es')
357 self.WaitUntilTranslateComplete() 334 self.WaitUntilTranslateComplete()
358 # Assert that a translation was attempted. We don't care if it was error 335 # Assert that a translation was attempted. We don't care if it was error
359 # or success. 336 # or success.
360 self.assertNotEqual(self.before_translate, 337 self.assertNotEqual(self.before_translate,
361 self.GetTranslateInfo()['translate_bar']['bar_state']) 338 self.GetTranslateInfo()['translate_bar']['bar_state'])
362 339
340 def testNeverTranslateLanguageButton(self):
341 """Test the never translate language button."""
342 spanish_url = self._GetDefaultSpanishURL()
343 self._NavigateAndWaitForBar(spanish_url)
344
345 # The 'Never Translate' button doesn't show up until the user has clicked
346 # 'Nope' for a language 3 times.
347 for i in range(3):
Nirnimesh 2010/08/24 01:23:19 same comments as above
348 self.SelectTranslateOption('decline_translation')
349 self.GetBrowserWindow(0).GetTab(0).Reload()
350
351 # Click the 'Never Translate' button.
352 self.SelectTranslateOption('click_never_translate_lang_button')
353 # Navigate to another Spanish page and verify the page can't be translated.
354 # First navigate to a French page, wait for bar, navigate to Spanish page
355 # and wait for bar to go away.
356 self._NavigateAndWaitForBar('http://www.google.com/webhp?hl=fr')
357 self.NavigateToURL('http://www.google.com/webhp?hl=es')
358 self.WaitForInfobarCount(0)
359 self.assertFalse(self.GetTranslateInfo()['can_translate_page'])
360
361 def testChangeTargetLanguageAlwaysTranslate(self):
362 """Tests that the change target language option works with always translate
363 on reload.
364
365 This test is motivated by crbug.com/37313.
366 """
367 self._NavigateAndWaitForBar(self._GetDefaultSpanishURL())
368 self._ClickTranslateUntilSuccess()
369 # Select a different target language on translate info bar (French).
370 self.ChangeTranslateToLanguage('French')
371 translate_info = self.GetTranslateInfo()
372 self.assertTrue('translate_bar' in translate_info)
373 self.assertEqual('fr', translate_info['translate_bar']['target_lang_code'])
374 # Select always translate Spanish to French.
375 self.SelectTranslateOption('toggle_always_translate')
376 # Reload the page and assert that the page has been translated to French.
377 self.GetBrowserWindow(0).GetTab(0).Reload()
378 self.WaitUntilTranslateComplete()
379 translate_info = self.GetTranslateInfo()
380 self.assertTrue(translate_info['page_translated'])
381 self.assertTrue(translate_info['can_translate_page'])
382 self.assertTrue('translate_bar' in translate_info)
383 self.assertEqual('fr', translate_info['translate_bar']['target_lang_code'])
384
363 def testSeveralLanguages(self): 385 def testSeveralLanguages(self):
364 """Verify translation for several languages. 386 """Verify translation for several languages.
365 387
366 This assumes that there is a directory of directories in the data dir. 388 This assumes that there is a directory of directories in the data dir.
367 The directory is called 'translate', and within that directory there are 389 The directory is called 'translate', and within that directory there are
368 subdirectories for each language code. Ex. a subdirectory 'es' with Spanish 390 subdirectories for each language code. Ex. a subdirectory 'es' with Spanish
369 html files. 391 html files.
370 """ 392 """
371 corpora_path = os.path.join(self.DataDir(), 'translate') 393 corpora_path = os.path.join(self.DataDir(), 'translate')
372 corp_dir = glob.glob(os.path.join(corpora_path, '??')) + \ 394 corp_dir = glob.glob(os.path.join(corpora_path, '??')) + \
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 # Ref: http://boodebr.org/main/python/all-about-python-and-unicode 426 # Ref: http://boodebr.org/main/python/all-about-python-and-unicode
405 try: 427 try:
406 for filename in crazy_filenames: # filename is unicode. 428 for filename in crazy_filenames: # filename is unicode.
407 utf8_filename = filename.encode('utf-8') 429 utf8_filename = filename.encode('utf-8')
408 file_path = os.path.join(temp_dir, utf8_filename) 430 file_path = os.path.join(temp_dir, utf8_filename)
409 _CreateFile(os.path.join(temp_dir, filename)) # unicode file. 431 _CreateFile(os.path.join(temp_dir, filename)) # unicode file.
410 file_url = self.GetFileURLForPath(file_path) 432 file_url = self.GetFileURLForPath(file_path)
411 downloaded_file = os.path.join(download_dir, filename) 433 downloaded_file = os.path.join(download_dir, filename)
412 os.path.exists(downloaded_file) and os.remove(downloaded_file) 434 os.path.exists(downloaded_file) and os.remove(downloaded_file)
413 self.DownloadAndWaitForStart(file_url) 435 self.DownloadAndWaitForStart(file_url)
414 self.WaitForAllDownloadsToComplete() 436 # Wait for files and remove them as we go.
415 437 self.WaitForAllDownloadsToComplete()
438 os.path.exists(downloaded_file) and os.remove(downloaded_file)
416 finally: 439 finally:
417 shutil.rmtree(unicode(temp_dir)) # unicode so that win treats nicely. 440 shutil.rmtree(unicode(temp_dir)) # unicode so that win treats nicely.
418 441
419 def testHistoryNotTranslated(self): 442 def testHistoryNotTranslated(self):
420 """Tests navigating to History page with other languages.""" 443 """Tests navigating to History page with other languages."""
421 # Build the history with non-English content. 444 # Build the history with non-English content.
422 history_file = os.path.join( 445 history_file = os.path.join(
423 self.DataDir(), 'translate', 'crazy_history.txt') 446 self.DataDir(), 'translate', 'crazy_history.txt')
424 history_items = self.EvalDataFrom(history_file) 447 history_items = self.EvalDataFrom(history_file)
425 for history_item in history_items: 448 for history_item in history_items:
426 self.AddHistoryItem(history_item) 449 self.AddHistoryItem(history_item)
427 # Navigate to a page that triggers the translate bar so we can verify that 450 # Navigate to a page that triggers the translate bar so we can verify that
428 # it disappears on the history page. 451 # it disappears on the history page.
429 self._NavigateAndWaitForBar(self._GetDefaultSpanishURL()) 452 self._NavigateAndWaitForBar(self._GetDefaultSpanishURL())
430 self.NavigateToURL('chrome://history/') 453 self.NavigateToURL('chrome://history/')
431 self.WaitForInfobarCount(0) 454 self.WaitForInfobarCount(0)
432 self.assertFalse('translate_bar' in self.GetTranslateInfo()) 455 self.assertFalse('translate_bar' in self.GetTranslateInfo())
433 456
434 def testDownloadsNotTranslated(self): 457 def testDownloadsNotTranslated(self):
435 """Tests navigating to the Downloads page with other languages.""" 458 """Tests navigating to the Downloads page with other languages."""
436 # Build the download history with non-English content. 459 # Build the download history with non-English content.
437 self._CreateCrazyDownloads() 460 self._CreateCrazyDownloads()
438 # Navigate to a page that triggers the translate bar so we can verify that 461 # Navigate to a page that triggers the translate bar so we can verify that
439 # it disappears on the downloads page. 462 # it disappears on the downloads page.
440 self._NavigateAndWaitForBar(self._GetDefaultSpanishURL()) 463 self._NavigateAndWaitForBar(self._GetDefaultSpanishURL())
441 self.NavigateToURL('chrome://downloads/') 464 self.NavigateToURL('chrome://downloads/')
442 self.WaitForInfobarCount(0) 465 self.WaitForInfobarCount(0)
443 self.assertFalse('translate_bar' in self.GetTranslateInfo()) 466 self.assertFalse('translate_bar' in self.GetTranslateInfo())
444 467
468 def testAlwaysTranslateInIncognito(self):
469 """Verify that pages aren't auto-translated in incognito windows."""
470 url = self._GetDefaultSpanishURL()
471 self._NavigateAndWaitForBar(url)
472 info_before_translate = self.GetTranslateInfo()
473 self.assertTrue('translate_bar' in info_before_translate)
474 self.SelectTranslateOption('toggle_always_translate')
475
476 # Navigate to a page in incognito and verify that it is not auto-translated.
477 self.RunCommand(pyauto.IDC_NEW_INCOGNITO_WINDOW)
478 self._NavigateAndWaitForBar(url, window_index=1)
479 info_before_translate = self.GetTranslateInfo()
480 self.assertTrue('translate_bar' in info_before_translate)
481 self.assertFalse(info_before_translate['page_translated'])
482 self.assertTrue(info_before_translate['can_translate_page'])
483 self.assertEqual(self.before_translate,
484 info_before_translate['translate_bar']['bar_state'])
485
486 def testMultipleTabsAndWindows(self):
487 """Verify that translate infobar shows up in multiple tabs and windows."""
488 url = self._GetDefaultSpanishURL()
489 def _AssertTranslateInfobarShowing(window_index=0, tab_index=0):
490 """Navigate to a Spanish page in the given window/tab and verify that the
491 translate bar shows up.
492 """
493 self.NavigateToURL(url, window_index, tab_index)
494 self.WaitForInfobarCount(1, windex=window_index, tab_index=tab_index)
495 info_before_translate = self.GetTranslateInfo(window_index=window_index,
496 tab_index=tab_index)
497 self.assertTrue('translate_bar' in info_before_translate)
498
499 _AssertTranslateInfobarShowing()
500 self.AppendTab(pyauto.GURL('about:blank'))
501 _AssertTranslateInfobarShowing(tab_index=1)
502 self.OpenNewBrowserWindow(True)
503 _AssertTranslateInfobarShowing(window_index=1)
504 self.AppendTab(pyauto.GURL('about:blank'), 1)
505 _AssertTranslateInfobarShowing(window_index=1, tab_index=1)
506 self.RunCommand(pyauto.IDC_NEW_INCOGNITO_WINDOW)
507 _AssertTranslateInfobarShowing(window_index=2)
508 self.AppendTab(pyauto.GURL('about:blank'), 2)
509 _AssertTranslateInfobarShowing(window_index=2, tab_index=1)
510
445 511
446 if __name__ == '__main__': 512 if __name__ == '__main__':
447 pyauto_functional.Main() 513 pyauto_functional.Main()
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698