Skip to content

Commit

Permalink
Merge pull request #41 from Telefonica/fix/selenium3
Browse files Browse the repository at this point in the history
Video download works in Selenium Grid 3
  • Loading branch information
rgonalo committed Nov 4, 2016
2 parents c0b7d4a + a8a0add commit 43ebade
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 3 deletions.
7 changes: 7 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
Toolium Changelog
=================

v1.1.3
------

*In development*

- Video download works in Selenium Grid 3

v1.1.2
------

Expand Down
4 changes: 4 additions & 0 deletions toolium/driver_wrappers_pool.py
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,10 @@ def close_drivers_and_download_videos(cls, name, test_passed=True, maintain_defa
if not driver_wrapper.driver:
continue
try:
# Delete IE cookies (Workaround of IEDriverServer bug)
driver_type = driver_wrapper.config.get('Driver', 'type')
if not maintain_default and driver_type.split('-')[0] == 'iexplore':
driver_wrapper.driver.delete_all_cookies()
# Stop driver
driver_wrapper.driver.quit()
# Download video if necessary
Expand Down
15 changes: 15 additions & 0 deletions toolium/test/test_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,21 @@ def test_get_remote_node(driver_wrapper, utils):
assert url == req_mock.request_history[0].url


def test_get_remote_node_selenium3(driver_wrapper, utils):
# Configure mock
driver_wrapper.driver.session_id = '5af'
url = 'http://{}:{}/grid/api/testsession?session={}'.format('localhost', 4444, '5af')
grid_response_json = {'session': 'e2', 'proxyId': '10.20.30.40', 'msg': 'slot found !',
'inactivityTime': 78, 'success': True, 'internalKey': '7a'}

with requests_mock.mock() as req_mock:
req_mock.get(url, json=grid_response_json)

# Get remote node and check result
assert utils.get_remote_node() == '10.20.30.40'
assert url == req_mock.request_history[0].url


def test_get_remote_node_non_grid(driver_wrapper, utils):
# Configure mock
driver_wrapper.driver.session_id = '5af'
Expand Down
7 changes: 4 additions & 3 deletions toolium/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,8 @@ def get_remote_node(self):
url = 'http://{}:{}/grid/api/testsession?session={}'.format(host, port, session_id)
try:
# Extract remote node from response
remote_node = urlparse(requests.get(url).json()['proxyId']).hostname
proxy_id = requests.get(url).json()['proxyId']
remote_node = urlparse(proxy_id).hostname if urlparse(proxy_id).hostname else proxy_id
self.logger.debug("Test running in remote node {}".format(remote_node))
except (ValueError, KeyError):
# The remote node is not a grid node or the session has been closed
Expand Down Expand Up @@ -290,10 +291,10 @@ def is_remote_video_enabled(self, remote_node):
if remote_node:
url = '{}/config'.format(self._get_remote_node_url(remote_node))
try:
response = requests.get(url).json()
response = requests.get(url, timeout=5).json()
record_videos = response['config_runtime']['theConfigMap']['video_recording_options'][
'record_test_videos']
except (requests.exceptions.ConnectionError, KeyError):
except (requests.exceptions.ConnectionError, requests.exceptions.ReadTimeout, KeyError):
record_videos = 'false'
if record_videos == 'true':
# Wait to the video recorder start
Expand Down

0 comments on commit 43ebade

Please sign in to comment.