summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitlab-ci.yml2
-rw-r--r--tests/functional/features/environment.py44
-rw-r--r--tests/functional/features/steps/bitmask.py2
3 files changed, 35 insertions, 13 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index cc7520f0..83fad3a5 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -72,7 +72,7 @@ functional_tests:
artifacts:
when: on_failure
paths:
- - "/tmp/*.png"
+ - "/tmp/bitmask-test/artifacts/*"
name: "Bitmask_linux64_${CI_BUILD_REF}_e2e_screenshots"
expire_in: 1 month
tags:
diff --git a/tests/functional/features/environment.py b/tests/functional/features/environment.py
index 4ed0caa3..cc3179e6 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 b5b4cf1e..87582430 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())