diff options
Diffstat (limited to 'tests/functional/features')
-rw-r--r-- | tests/functional/features/environment.py | 44 | ||||
-rw-r--r-- | tests/functional/features/steps/bitmask.py | 2 |
2 files changed, 34 insertions, 12 deletions
diff --git a/tests/functional/features/environment.py b/tests/functional/features/environment.py index 4ed0caa..cc3179e 100644 --- a/tests/functional/features/environment.py +++ b/tests/functional/features/environment.py @@ -1,4 +1,5 @@ import os +import shutil import re import time from urlparse import urlparse @@ -6,11 +7,14 @@ import commands from selenium import webdriver from selenium.webdriver.chrome.options import Options +from leap.common.config import get_path_prefix DEFAULT_IMPLICIT_WAIT_TIMEOUT_IN_S = 10 +HOME_PATH = '/tmp/bitmask-test' def before_all(context): + os.environ['HOME'] = HOME_PATH _setup_webdriver(context) userdata = context.config.userdata context.host = userdata.get('host', 'http://localhost') @@ -42,10 +46,39 @@ def after_all(context): def after_step(context, step): if step.status == 'failed': + _prepare_artifacts_folder(step) _save_screenshot(context, step) + _save_config(context, step) _debug_on_error(context, step) +def _prepare_artifacts_folder(step): + try: + os.makedirs(_artifact_path(step)) + except OSError as err: + # directory existed + if err.errno != 17: + raise + + +def _save_screenshot(context, step): + filepath = _artifact_path(step, 'screenshot.png') + context.browser.save_screenshot(filepath) + print('saved screenshot to: file://%s' % filepath) + + +def _save_config(context, step): + filepath = _artifact_path(step, 'config') + shutil.copytree(get_path_prefix(), filepath) + print('copied config to: file://%s' % filepath) + + +def _artifact_path(step, filename=''): + string = 'failed {}'.format(str(step.name)) + slug = re.sub('\W', '-', string) + return os.path.join(HOME_PATH, 'artifacts', slug, filename) + + def _debug_on_error(context, step): if context.config.userdata.getbool("debug"): try: @@ -54,14 +87,3 @@ def _debug_on_error(context, step): except ImportError: import pdb pdb.post_mortem(step.exc_traceback) - - -def _save_screenshot(context, step): - timestamp = time.strftime("%Y-%m-%d-%H-%M-%S") - filename = _slugify('{} failed {}'.format(timestamp, str(step.name))) - filepath = os.path.join('/tmp/', filename + '.png') - context.browser.save_screenshot(filepath) - - -def _slugify(string_): - return re.sub('\W', '-', string_) diff --git a/tests/functional/features/steps/bitmask.py b/tests/functional/features/steps/bitmask.py index b5b4cf1..8758243 100644 --- a/tests/functional/features/steps/bitmask.py +++ b/tests/functional/features/steps/bitmask.py @@ -21,6 +21,6 @@ def initial_run(context): def _initialize_home_path(): home_path = '/tmp/bitmask-test' - shutil.rmtree(home_path, ignore_errors=True) os.environ['HOME'] = home_path + shutil.rmtree(get_path_prefix(), ignore_errors=True) os.makedirs(get_path_prefix()) |