| Index: chrome/test/webdriver/test/chromedriver_tests.py
|
| diff --git a/chrome/test/webdriver/test/chromedriver_tests.py b/chrome/test/webdriver/test/chromedriver_tests.py
|
| index dbe9db1045044932557ef011750cb0d80dde3f2b..e5250cb5c39b7cbbf8657c0922f62a45a383816b 100644
|
| --- a/chrome/test/webdriver/test/chromedriver_tests.py
|
| +++ b/chrome/test/webdriver/test/chromedriver_tests.py
|
| @@ -44,6 +44,13 @@ from selenium.webdriver.remote.webdriver import WebDriver
|
| from selenium.webdriver.support.ui import WebDriverWait
|
|
|
|
|
| +def SkipIf(should_skip):
|
| + """Decorator which allows skipping individual test cases."""
|
| + if should_skip:
|
| + return lambda func: None
|
| + return lambda func: func
|
| +
|
| +
|
| class Request(urllib2.Request):
|
| """Extends urllib2.Request to support all HTTP request types."""
|
|
|
| @@ -89,17 +96,17 @@ def SendRequest(url, method=None, data=None):
|
| return opener.open(request)
|
|
|
|
|
| -class BasicTest(unittest.TestCase):
|
| +class BasicTest(ChromeDriverTest):
|
| """Basic ChromeDriver tests."""
|
|
|
| def setUp(self):
|
| - self._server = ChromeDriverLauncher(test_paths.CHROMEDRIVER_EXE).Launch()
|
| + self._server2 = ChromeDriverLauncher(self.GetDriverPath()).Launch()
|
|
|
| def tearDown(self):
|
| - self._server.Kill()
|
| + self._server2.Kill()
|
|
|
| def testShouldReturn403WhenSentAnUnknownCommandURL(self):
|
| - request_url = self._server.GetUrl() + '/foo'
|
| + request_url = self._server2.GetUrl() + '/foo'
|
| try:
|
| SendRequest(request_url, method='GET')
|
| self.fail('Should have raised a urllib.HTTPError for returned 403')
|
| @@ -107,7 +114,7 @@ class BasicTest(unittest.TestCase):
|
| self.assertEquals(403, expected.code)
|
|
|
| def testShouldReturnHTTP405WhenSendingANonPostToTheSessionURL(self):
|
| - request_url = self._server.GetUrl() + '/session'
|
| + request_url = self._server2.GetUrl() + '/session'
|
| try:
|
| SendRequest(request_url, method='GET')
|
| self.fail('Should have raised a urllib.HTTPError for returned 405')
|
| @@ -116,7 +123,7 @@ class BasicTest(unittest.TestCase):
|
| self.assertEquals('POST', expected.hdrs['Allow'])
|
|
|
| def testShouldGetA404WhenAttemptingToDeleteAnUnknownSession(self):
|
| - request_url = self._server.GetUrl() + '/session/unkown_session_id'
|
| + request_url = self._server2.GetUrl() + '/session/unkown_session_id'
|
| try:
|
| SendRequest(request_url, method='DELETE')
|
| self.fail('Should have raised a urllib.HTTPError for returned 404')
|
| @@ -124,7 +131,7 @@ class BasicTest(unittest.TestCase):
|
| self.assertEquals(404, expected.code)
|
|
|
| def testShouldReturn204ForFaviconRequests(self):
|
| - request_url = self._server.GetUrl() + '/favicon.ico'
|
| + request_url = self._server2.GetUrl() + '/favicon.ico'
|
| # In python2.5, a 204 status code causes an exception.
|
| if sys.version_info[0:2] == (2, 5):
|
| try:
|
| @@ -140,7 +147,7 @@ class BasicTest(unittest.TestCase):
|
| response.close()
|
|
|
| def testCreatingSessionShouldRedirectToCorrectURL(self):
|
| - request_url = self._server.GetUrl() + '/session'
|
| + request_url = self._server2.GetUrl() + '/session'
|
| response = SendRequest(request_url, method='POST',
|
| data='{"desiredCapabilities": {}}')
|
| self.assertEquals(200, response.code)
|
| @@ -157,11 +164,11 @@ class BasicTest(unittest.TestCase):
|
| self.assertEquals(data['sessionId'], url_parts[2])
|
|
|
|
|
| -class WebserverTest(unittest.TestCase):
|
| +class WebserverTest(ChromeDriverTest):
|
| """Tests the built-in ChromeDriver webserver."""
|
|
|
| def testShouldNotServeFilesByDefault(self):
|
| - server = ChromeDriverLauncher(test_paths.CHROMEDRIVER_EXE).Launch()
|
| + server = ChromeDriverLauncher(self.GetDriverPath()).Launch()
|
| try:
|
| SendRequest(server.GetUrl(), method='GET')
|
| self.fail('Should have raised a urllib.HTTPError for returned 403')
|
| @@ -171,7 +178,7 @@ class WebserverTest(unittest.TestCase):
|
| server.Kill()
|
|
|
| def testCanServeFiles(self):
|
| - launcher = ChromeDriverLauncher(test_paths.CHROMEDRIVER_EXE,
|
| + launcher = ChromeDriverLauncher(self.GetDriverPath(),
|
| root_path=os.path.dirname(__file__))
|
| server = launcher.Launch()
|
| request_url = server.GetUrl() + '/' + os.path.basename(__file__)
|
| @@ -290,14 +297,14 @@ class DesiredCapabilitiesTest(ChromeDriverTest):
|
| driver.execute_async_script('waitForGeo(arguments[0])')
|
|
|
|
|
| -class DetachProcessTest(unittest.TestCase):
|
| +class DetachProcessTest(ChromeDriverTest):
|
|
|
| def setUp(self):
|
| - self._server = ChromeDriverLauncher(test_paths.CHROMEDRIVER_EXE).Launch()
|
| - self._factory = ChromeDriverFactory(self._server)
|
| + self._server2 = ChromeDriverLauncher(self.GetDriverPath()).Launch()
|
| + self._factory2 = ChromeDriverFactory(self._server2)
|
|
|
| def tearDown(self):
|
| - self._server.Kill()
|
| + self._server2.Kill()
|
|
|
| # TODO(kkania): Remove this when Chrome 15 is stable.
|
| def testDetachProcess(self):
|
| @@ -305,10 +312,10 @@ class DetachProcessTest(unittest.TestCase):
|
| # Chrome successfully in detached mode. There's not an easy way to know
|
| # if Chrome is shutting down due to the channel error when the client
|
| # disconnects.
|
| - driver = self._factory.GetNewDriver({'chrome.detach': True})
|
| + driver = self._factory2.GetNewDriver({'chrome.detach': True})
|
| driver.get('about:memory')
|
| pid = int(driver.find_elements_by_xpath('//*[@jscontent="pid"]')[0].text)
|
| - self._server.Kill()
|
| + self._server2.Kill()
|
| try:
|
| util.Kill(pid)
|
| except OSError:
|
| @@ -583,18 +590,18 @@ class TypingTest(ChromeDriverTest):
|
| self.assertEquals('much more text', area_elem.get_attribute('value'))
|
|
|
|
|
| -class UrlBaseTest(unittest.TestCase):
|
| +class UrlBaseTest(ChromeDriverTest):
|
| """Tests that the server can be configured for a different URL base."""
|
|
|
| def setUp(self):
|
| - self._server = ChromeDriverLauncher(test_paths.CHROMEDRIVER_EXE,
|
| - url_base='/wd/hub').Launch()
|
| + self._server2 = ChromeDriverLauncher(self.GetDriverPath(),
|
| + url_base='/wd/hub').Launch()
|
|
|
| def tearDown(self):
|
| - self._server.Kill()
|
| + self._server2.Kill()
|
|
|
| def testCreatingSessionShouldRedirectToCorrectURL(self):
|
| - request_url = self._server.GetUrl() + '/session'
|
| + request_url = self._server2.GetUrl() + '/session'
|
| response = SendRequest(request_url, method='POST',
|
| data='{"desiredCapabilities":{}}')
|
| self.assertEquals(200, response.code)
|
| @@ -637,19 +644,19 @@ class ElementEqualityTest(ChromeDriverTest):
|
| self.assertTrue(result['value'])
|
|
|
|
|
| -class LoggingTest(unittest.TestCase):
|
| +class LoggingTest(ChromeDriverTest):
|
|
|
| def setUp(self):
|
| - self._server = ChromeDriverLauncher(test_paths.CHROMEDRIVER_EXE).Launch()
|
| - self._factory = ChromeDriverFactory(self._server)
|
| + self._server2 = ChromeDriverLauncher(self.GetDriverPath()).Launch()
|
| + self._factory2 = ChromeDriverFactory(self._server2)
|
|
|
| def tearDown(self):
|
| - self._factory.QuitAll()
|
| - self._server.Kill()
|
| + self._factory2.QuitAll()
|
| + self._server2.Kill()
|
|
|
| def testNoVerboseLogging(self):
|
| - driver = self._factory.GetNewDriver()
|
| - url = self._factory.GetServer().GetUrl()
|
| + driver = self._factory2.GetNewDriver()
|
| + url = self._factory2.GetServer().GetUrl()
|
| driver.execute_script('console.log("HI")')
|
| req = SendRequest(url + '/log', method='GET')
|
| log = req.read()
|
| @@ -657,8 +664,8 @@ class LoggingTest(unittest.TestCase):
|
|
|
| # crbug.com/94470
|
| def DISABLED_testVerboseLogging(self):
|
| - driver = self._factory.GetNewDriver({'chrome.verbose': True})
|
| - url = self._factory.GetServer().GetUrl()
|
| + driver = self._factory2.GetNewDriver({'chrome.verbose': True})
|
| + url = self._factory2.GetServer().GetUrl()
|
| driver.execute_script('console.log("HI")')
|
| req = SendRequest(url + '/log', method='GET')
|
| log = req.read()
|
| @@ -877,13 +884,15 @@ class ExtensionTest(ChromeDriverTest):
|
| self.assertEquals('test', textfield.get_attribute('value'))
|
| self.assertEquals('test', driver.title)
|
| self.assertTrue(driver.current_url.endswith('view_checks.html'))
|
| - self.assertTrue('shouldBeInPageSource' in driver.page_source)
|
| + self.assertTrue('Should be in page source' in driver.page_source)
|
| driver.close()
|
| def is_view_closed(driver):
|
| return len(filter(lambda view: view['handle'] == view_handle,
|
| extension._get_views())) == 0
|
| WebDriverWait(driver, 10).until(is_view_closed)
|
|
|
| + # Mac extension infobars are currently broken: crbug.com/107573.
|
| + @SkipIf(util.IsMac())
|
| def testInfobarView(self):
|
| driver = self.GetNewDriver({'chrome.switches':
|
| ['enable-experimental-extension-apis']})
|
|
|