Skip to content

Commit

Permalink
New config property to download logs even if the test passes
Browse files Browse the repository at this point in the history
  • Loading branch information
rgonalo committed Nov 21, 2016
1 parent 10a6c53 commit f62baa2
Show file tree
Hide file tree
Showing 7 changed files with 32 additions and 6 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ v1.2.0
*In development*

- Fix error reading geckodriver logs after test failure
- New config property 'logs_enabled' in [Server] section to download webdriver logs even if the test passes

v1.1.3
------
Expand Down
6 changes: 6 additions & 0 deletions docs/remote_configuration.rst
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ section in properties.cfg file::
host: SERVER_IP
port: SERVER_PORT
video_enabled: false
logs_enabled: false

enabled
~~~~~~~
Expand All @@ -36,6 +37,11 @@ video_enabled
| *true*: remote video recording is enabled, a video of the test execution will be recorded and saved locally
| *false*: remote video recording is disabled
logs_enabled
~~~~~~~~~~~~~
| *true*: webdriver logs are downloaded and saved to local files after test execution
| *false*: webdriver logs are downloaded and saved to local files only if the test fails

Remote Driver Capabilities
--------------------------
Expand Down
12 changes: 12 additions & 0 deletions docs/toolium.pageobjects.rst
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,22 @@ page_object
:undoc-members:
:show-inheritance:

.. _common_object:

common_object
-------------

.. automodule:: toolium.pageobjects.common_object
:members:
:undoc-members:
:show-inheritance:

.. _mobile_page_object:

mobile_page_object
------------------

.. automodule:: toolium.pageobjects.mobile_page_object
:members:
:undoc-members:
:show-inheritance:
6 changes: 4 additions & 2 deletions toolium/behave/environment.py
Original file line number Diff line number Diff line change
Expand Up @@ -196,9 +196,11 @@ def bdd_common_after_scenario(context_or_world, scenario, status):
test_status = 'Fail'
test_comment = "The scenario '{0}' has failed".format(scenario.name)
context_or_world.logger.error(test_comment)
# Capture screenshot and save logs on error
# Capture screenshot on error
DriverWrappersPool.capture_screenshots(scenario_file_name)
DriverWrappersPool.save_all_webdriver_logs(scenario.name)

# Save webdriver logs on error or if it is enabled
DriverWrappersPool.save_all_webdriver_logs(scenario.name, status == 'passed')

# Close browser and stop driver if it must not be reused
reuse_driver = context_or_world.toolium_config.getboolean_optional('Driver', 'reuse_driver')
Expand Down
6 changes: 4 additions & 2 deletions toolium/driver_wrappers_pool.py
Original file line number Diff line number Diff line change
Expand Up @@ -140,18 +140,20 @@ def close_drivers_and_download_videos(cls, name, test_passed=True, maintain_defa
cls.driver_wrappers = cls.driver_wrappers[0:1] if maintain_default else []

@classmethod
def save_all_webdriver_logs(cls, test_name):
def save_all_webdriver_logs(cls, test_name, test_passed):
"""Get all webdriver logs of each driver and write them to log files
:param test_name: test that has generated these logs
:param test_passed: True if the test has passed
"""
log_name = '{} [driver {}]' if len(cls.driver_wrappers) > 1 else '{}'
driver_index = 1
for driver_wrapper in cls.driver_wrappers:
if not driver_wrapper.driver:
continue
try:
driver_wrapper.utils.save_webdriver_logs(log_name.format(test_name, driver_index))
if driver_wrapper.config.getboolean_optional('Server', 'logs_enabled') or not test_passed:
driver_wrapper.utils.save_webdriver_logs(log_name.format(test_name, driver_index))
except Exception:
# Capture exceptions to avoid errors in teardown method due to session timeouts
pass
Expand Down
1 change: 1 addition & 0 deletions toolium/test/conf/properties.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ enabled: true
host: localhost
port: 4444
video_enabled: false
logs_enabled: false

[VisualTests]
enabled: false
Expand Down
6 changes: 4 additions & 2 deletions toolium/test_cases.py
Original file line number Diff line number Diff line change
Expand Up @@ -135,10 +135,12 @@ def tearDown(self):
super(SeleniumTestCase, self).tearDown()
test_name = self.get_subclassmethod_name().replace('.', '_')

# Capture screenshot and save logs on error
# Capture screenshot on error
if not self._test_passed:
DriverWrappersPool.capture_screenshots(test_name)
DriverWrappersPool.save_all_webdriver_logs(self.get_subclassmethod_name())

# Save webdriver logs on error or if it is enabled
DriverWrappersPool.save_all_webdriver_logs(self.get_subclassmethod_name(), self._test_passed)

# Close browser and stop driver if it must not be reused
DriverWrappersPool.close_drivers_and_download_videos(test_name, self._test_passed, self.reuse_driver)
Expand Down

0 comments on commit f62baa2

Please sign in to comment.