From e6c10b18616edcbf9548af03c9d07a018100f07c Mon Sep 17 00:00:00 2001 From: Thais Siqueira Date: Mon, 17 Apr 2017 17:27:55 -0300 Subject: Logs user out after failed functional test https://github.com/pixelated/project-issues/issues/433 with @anikarni --- service/test/functional/features/environment.py | 19 ++++++++++++++----- .../test/functional/features/page_objects/__init__.py | 1 + .../functional/features/page_objects/inbox_page.py | 2 +- service/test/functional/features/steps/login.py | 4 ++-- 4 files changed, 18 insertions(+), 8 deletions(-) (limited to 'service') diff --git a/service/test/functional/features/environment.py b/service/test/functional/features/environment.py index bc2e1283..379583bc 100644 --- a/service/test/functional/features/environment.py +++ b/service/test/functional/features/environment.py @@ -30,6 +30,7 @@ from pixelated.resources.features_resource import FeaturesResource from test.support.integration import AppTestClient from steps.common import DEFAULT_IMPLICIT_WAIT_TIMEOUT_IN_S from steps import utils +from ..page_objects import BackupAccountPage class UnsuportedWebDriverError(Exception): @@ -135,12 +136,21 @@ def after_feature(context, feature): def after_step(context, step): - _debug_on_error(context, step) - _save_screenshot(context, step) + if step.status == 'failed': + _debug_on_error(context, step) + _save_screenshot(context, step) + _logout(context, step) + + +def _logout(context, step): + if context.browser.current_url == context.inbox_url: + utils.log_out() + elif context.browser.current_url == context.backup_account_url: + BackupAccountPage().logout() def _debug_on_error(context, step): - if step.status == 'failed' and context.config.userdata.getbool("debug"): + if context.config.userdata.getbool("debug"): try: import ipdb ipdb.post_mortem(step.exc_traceback) @@ -150,8 +160,7 @@ def _debug_on_error(context, step): def _save_screenshot(context, step): - if (step.status == 'failed' and - context.config.userdata.getbool("screenshots", True)): + if context.config.userdata.getbool("screenshots", True): timestamp = time.strftime("%Y-%m-%d-%H-%M-%S") filename = _slugify('{} failed {}'.format(timestamp, str(step.name))) filepath = os.path.join('screenshots', filename + '.png') diff --git a/service/test/functional/features/page_objects/__init__.py b/service/test/functional/features/page_objects/__init__.py index 920bf541..af50948c 100644 --- a/service/test/functional/features/page_objects/__init__.py +++ b/service/test/functional/features/page_objects/__init__.py @@ -17,3 +17,4 @@ from account_recovery_page import AccountRecoveryPage from base_page import BasePage from inbox_page import InboxPage +from backup_account_page import BackupAccountPage diff --git a/service/test/functional/features/page_objects/inbox_page.py b/service/test/functional/features/page_objects/inbox_page.py index 67ef1375..a6b5fef7 100644 --- a/service/test/functional/features/page_objects/inbox_page.py +++ b/service/test/functional/features/page_objects/inbox_page.py @@ -15,7 +15,7 @@ # along with Pixelated. If not, see . from base_page import BasePage -from common import execute_ignoring_staleness +from steps.common import execute_ignoring_staleness class InboxPage(BasePage): diff --git a/service/test/functional/features/steps/login.py b/service/test/functional/features/steps/login.py index a9dbb257..338550b3 100644 --- a/service/test/functional/features/steps/login.py +++ b/service/test/functional/features/steps/login.py @@ -57,8 +57,8 @@ def see_interstitial(context): @then(u'I should see the inbox') -def see_interstitial(context): - find_element_by_css_selector(context, 'ul#mail-list') +def see_inbox(context): + _see_inbox(context) @then(u'I logout') -- cgit v1.2.3