#798: test suite: migrate to Selenium WebDriver API for web tests
-------------------------+-----------------
 Reporter:  simko        |      Owner:
     Type:  enhancement  |     Status:  new
 Priority:  major        |  Milestone:
Component:  *general*    |    Version:
 Keywords:               |
-------------------------+-----------------
 Now that Selenium 2 is out, we should migrate all our web tests to the new
 Python WebDriver API.  IOW, we should make a nice utility library of
 useful functions as we have done for Mechanize (e.g.
 `test_web_page_content()`) and we should Pythonise all our web tests.

 Here is one plain example of the new Selenium WebDriver API in action:

 {{{
 #!/usr/bin/env python

 import unittest
 from selenium import webdriver

 from invenio.testutils import make_test_suite, run_test_suite

 class InvenioWebSearchExampleWebTests(unittest.TestCase):

     def setUp(self):
         self.browser = webdriver.Firefox()

     def tearDown(self):
         self.browser.quit()

     def test_cds_home(self):
         """websearch - CDS home page"""
         self.browser.get('http://cdsweb.cern.ch/')
         page_title = self.browser.title
         self.assertEqual('CERN Document Server: Home', page_title)
         page_source = self.browser.page_source
         self.assertTrue('This site is also available in the following
 languages' in page_source)
         a_page_link = self.browser.find_element_by_link_text('Published
 Articles')
         self.assertEqual('Published Articles', a_page_link.text)

     def test_cds_search(self):
         """websearch - CDS search for ellis"""
         self.browser.get('http://cdsweb.cern.ch/')
         p = self.browser.find_element_by_name("p")
         p.send_keys("ellis")
         p.submit()
         page_source = self.browser.page_source
         self.assertTrue('records found' in page_source)
         self.assertTrue('jump to record' in page_source)
         a_page_link = self.browser.find_element_by_link_text('Articles &
 Preprints')
         self.assertEqual('Articles & Preprints', a_page_link.text)

 TEST_SUITE = make_test_suite(InvenioWebSearchExampleWebTests,)

 if __name__ == '__main__':
     run_test_suite(TEST_SUITE, warn_user=True)
 }}}

-- 
Ticket URL: <http://invenio-software.org/ticket/798>
Invenio <http://invenio-software.org>

Reply via email to