| Index: chrome/test/functional/translate.py
|
| diff --git a/chrome/test/functional/translate.py b/chrome/test/functional/translate.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..3837daab2911e861881b6039ca565eded9455799
|
| --- /dev/null
|
| +++ b/chrome/test/functional/translate.py
|
| @@ -0,0 +1,138 @@
|
| +#!/usr/bin/python
|
| +# Copyright (c) 2010 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 pyauto_functional # Must be imported before pyauto
|
| +import pyauto
|
| +
|
| +
|
| +class TranslateTest(pyauto.PyUITest):
|
| + """Tests that translate works correctly"""
|
| +
|
| + spanish_google = 'http://www.google.com/webhp?hl=es'
|
| + spanish = 'es'
|
| + after_translate = 'AFTER_TRANSLATE'
|
| + before_translate = 'BEFORE_TRANSLATE'
|
| + translating = 'TRANSLATING'
|
| + translation_error = 'TRANSLATION_ERROR'
|
| +
|
| + def Debug(self):
|
| + """ Test method for experimentation. """
|
| + import pprint
|
| + pp = pprint.PrettyPrinter(indent=2)
|
| + while True:
|
| + raw_input('Hit <enter> to dump translate info.. ')
|
| + pp.pprint(self.GetTranslateInfo())
|
| +
|
| + def _NavigateAndWaitForBar(self, url):
|
| + self.NavigateToURL(url)
|
| + self.WaitForInfobarCount(1)
|
| +
|
| + def _ClickTranslateUntilSuccess(self):
|
| + """Since the translate can fail due to server error, continue trying until
|
| + it is successful or until it has tried too many times."""
|
| + max_tries = 10
|
| + curr_try = 0
|
| + while curr_try < max_tries and not self.ClickTranslateBarTranslate():
|
| + curr_try = curr_try + 1
|
| + if curr_try == 10:
|
| + self.fail('Translation failed more than %d times.' % max_tries)
|
| +
|
| + def testTranslate(self):
|
| + """Tests that a page was translated if the user chooses to translate."""
|
| + self._NavigateAndWaitForBar(self.spanish_google)
|
| + self._ClickTranslateUntilSuccess()
|
| + translate_info = self.GetTranslateInfo()
|
| + self.assertEqual(self.spanish, translate_info['original_language'])
|
| + self.assertTrue(translate_info['page_translated'])
|
| + self.assertTrue(translate_info['can_translate_page'])
|
| + self.assertTrue('translate_bar' in translate_info)
|
| + self.assertEquals(self.after_translate,
|
| + translate_info['translate_bar']['bar_state'])
|
| +
|
| + def testNoTranslate(self):
|
| + """Tests that a page isn't translated if the user declines translate."""
|
| + self._NavigateAndWaitForBar(self.spanish_google)
|
| + self.PerformActionOnInfobar('dismiss', 0)
|
| + translate_info = self.GetTranslateInfo()
|
| + self.assertEqual(self.spanish, translate_info['original_language'])
|
| + self.assertFalse(translate_info['page_translated'])
|
| + self.assertTrue(translate_info['can_translate_page'])
|
| + # If the user goes to the site again, the infobar should drop down but
|
| + # the page should not be automatically translated.
|
| + self._NavigateAndWaitForBar(self.spanish_google)
|
| + translate_info = self.GetTranslateInfo()
|
| + self.assertFalse(translate_info['page_translated'])
|
| + self.assertTrue(translate_info['can_translate_page'])
|
| + self.assertTrue('translate_bar' in translate_info)
|
| + self.assertEquals(self.before_translate,
|
| + translate_info['translate_bar']['bar_state'])
|
| +
|
| + def testNeverTranslateLanguage(self):
|
| + """Tests that blacklisting a language for translate works."""
|
| + self._NavigateAndWaitForBar(self.spanish_google)
|
| + self.SelectTranslateOption('never_translate_language')
|
| + translate_info = self.GetTranslateInfo()
|
| + self.assertEqual(self.spanish, translate_info['original_language'])
|
| + self.assertFalse(translate_info['page_translated'])
|
| + self.assertFalse(translate_info['can_translate_page'])
|
| + spanish_wikipedia = 'http://es.wikipedia.org/wiki/Wikipedia:Portada'
|
| + self.NavigateToURL(spanish_wikipedia)
|
| + translate_info = self.GetTranslateInfo()
|
| + self.assertEqual(self.spanish, translate_info['original_language'])
|
| + self.assertFalse(translate_info['page_translated'])
|
| + self.assertFalse(translate_info['can_translate_page'])
|
| +
|
| + def testAlwaysTranslateLanguage(self):
|
| + """Tests that the always translate a language option works."""
|
| + self._NavigateAndWaitForBar(self.spanish_google)
|
| + self.SelectTranslateOption('toggle_always_translate')
|
| + self._ClickTranslateUntilSuccess()
|
| + translate_info = self.GetTranslateInfo()
|
| + self.assertEquals(self.spanish, translate_info['original_language'])
|
| + self.assertTrue(translate_info['page_translated'])
|
| + self.assertTrue(translate_info['can_translate_page'])
|
| + self.assertTrue('translate_bar' in translate_info)
|
| + self.assertEquals(self.after_translate,
|
| + translate_info['translate_bar']['bar_state'])
|
| + # Go to another spanish site and verify that it is translated.
|
| + # Note that the 'This page has been translated..." bar will show up.
|
| + self._NavigateAndWaitForBar(
|
| + 'http://es.wikipedia.org/wiki/Wikipedia:Portada')
|
| + translate_info = self.GetTranslateInfo()
|
| + self.assertTrue('translate_bar' in translate_info)
|
| + curr_bar_state = translate_info['translate_bar']['bar_state']
|
| + # We don't care whether the translation has finished, just that it is
|
| + # trying to translate.
|
| + self.assertTrue(curr_bar_state is self.after_translate or
|
| + self.translating or self.translation_error,
|
| + 'Bar state was %s.' % curr_bar_state)
|
| +
|
| + def testNeverTranslateSite(self):
|
| + """Tests that blacklisting a site for translate works."""
|
| + self._NavigateAndWaitForBar(self.spanish_google)
|
| + self.SelectTranslateOption('never_translate_site')
|
| + translate_info = self.GetTranslateInfo()
|
| + self.assertFalse(translate_info['page_translated'])
|
| + self.assertFalse(translate_info['can_translate_page'])
|
| + french_google = 'http://www.google.com/webhp?hl=fr'
|
| + # Go to another page in the same site and verify that the page can't be
|
| + # translated even though it's in a different language.
|
| + self.NavigateToURL(french_google)
|
| + translate_info = self.GetTranslateInfo()
|
| + self.assertFalse(translate_info['page_translated'])
|
| + self.assertFalse(translate_info['can_translate_page'])
|
| +
|
| + def testRevert(self):
|
| + """Tests that reverting a site to its original language works."""
|
| + self._NavigateAndWaitForBar(self.spanish_google)
|
| + self._ClickTranslateUntilSuccess()
|
| + self.RevertPageTranslation()
|
| + translate_info = self.GetTranslateInfo()
|
| + self.assertFalse(translate_info['page_translated'])
|
| + self.assertTrue(translate_info['can_translate_page'])
|
| +
|
| +
|
| +if __name__ == '__main__':
|
| + pyauto_functional.Main()
|
|
|