From fb7f6c3a3786b9b489d2b600561c588834b7574c Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 7 Dec 2023 19:12:54 +0100 Subject: [PATCH 1/7] put args in newline --- pytest_abra/coordinator.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pytest_abra/coordinator.py b/pytest_abra/coordinator.py index 74c4ea2..66e953a 100644 --- a/pytest_abra/coordinator.py +++ b/pytest_abra/coordinator.py @@ -14,7 +14,12 @@ from pytest_abra.utils import rmtree class Coordinator: def __init__( - self, env_paths_list: list[Path], output_dir: Path, session_id: str, recipes_dir: Path, timeout: int + self, + env_paths_list: list[Path], + output_dir: Path, + session_id: str, + recipes_dir: Path, + timeout: int, ) -> None: # logging out_string = "".join([e.name + "\n" for e in env_paths_list]) -- 2.47.2 From 9a062765545937e386c1f8c148b456b2da78546e Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 7 Dec 2023 19:15:32 +0100 Subject: [PATCH 2/7] add get_latest_session_id --- pytest_abra/dir_manager.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pytest_abra/dir_manager.py b/pytest_abra/dir_manager.py index 0125522..846d9f6 100644 --- a/pytest_abra/dir_manager.py +++ b/pytest_abra/dir_manager.py @@ -76,3 +76,10 @@ class DirManager: env_file = next(self.ENV_FILES.glob(f"*{search_string}*")) config: dict[str, str] = dotenv_values(env_file) # type: ignore return config + + @staticmethod + def get_latest_session_id(output_dir: Path) -> str: + """returns the name of the newest dir inside of output_dir""" + all_dirs = [d for d in output_dir.iterdir() if d.is_dir()] + newest_dir: Path = max(all_dirs, key=lambda x: x.stat().st_ctime) + return newest_dir.name -- 2.47.2 From be4facfd405b31b549e961770e56fd3ba135ccee Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 7 Dec 2023 19:15:48 +0100 Subject: [PATCH 3/7] add functionality to resume parameter --- pytest_abra/cli.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pytest_abra/cli.py b/pytest_abra/cli.py index 0d82951..d2efaf9 100644 --- a/pytest_abra/cli.py +++ b/pytest_abra/cli.py @@ -29,9 +29,7 @@ def run(): session_id = "test-" + get_datetime_string() if args.resume: - # look for previous session_id - pass - # session_id = "abc" + session_id = DirManager.get_latest_session_id(args.output_dir) # ------------------------------- setup logging ------------------------------ # -- 2.47.2 From 064e4dae2d384b82eada53aa27415661b1b3dbb7 Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 7 Dec 2023 19:20:29 +0100 Subject: [PATCH 4/7] support case where no previous tests have been found --- pytest_abra/cli.py | 4 +++- pytest_abra/dir_manager.py | 10 +++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/pytest_abra/cli.py b/pytest_abra/cli.py index d2efaf9..8658dbb 100644 --- a/pytest_abra/cli.py +++ b/pytest_abra/cli.py @@ -29,7 +29,9 @@ def run(): session_id = "test-" + get_datetime_string() if args.resume: - session_id = DirManager.get_latest_session_id(args.output_dir) + latest_session_id = DirManager.get_latest_session_id(args.output_dir) + if latest_session_id: + session_id = DirManager.get_latest_session_id(args.output_dir) # ------------------------------- setup logging ------------------------------ # diff --git a/pytest_abra/dir_manager.py b/pytest_abra/dir_manager.py index 846d9f6..fb29e4d 100644 --- a/pytest_abra/dir_manager.py +++ b/pytest_abra/dir_manager.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import Optional from dotenv import dotenv_values @@ -78,8 +79,11 @@ class DirManager: return config @staticmethod - def get_latest_session_id(output_dir: Path) -> str: + def get_latest_session_id(output_dir: Path) -> Optional[str]: """returns the name of the newest dir inside of output_dir""" all_dirs = [d for d in output_dir.iterdir() if d.is_dir()] - newest_dir: Path = max(all_dirs, key=lambda x: x.stat().st_ctime) - return newest_dir.name + if all_dirs: + newest_dir: Path = max(all_dirs, key=lambda x: x.stat().st_ctime) + return newest_dir.name + else: + return None -- 2.47.2 From 755eb6268a72b243c6782829a0d2757f97f9bb67 Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 7 Dec 2023 19:27:52 +0100 Subject: [PATCH 5/7] fix nextcloud setup --- recipes/nextcloud/tests_nextcloud/setup_nextcloud.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/recipes/nextcloud/tests_nextcloud/setup_nextcloud.py b/recipes/nextcloud/tests_nextcloud/setup_nextcloud.py index f400ce3..64c8e94 100644 --- a/recipes/nextcloud/tests_nextcloud/setup_nextcloud.py +++ b/recipes/nextcloud/tests_nextcloud/setup_nextcloud.py @@ -1,3 +1,5 @@ +import re + from playwright.sync_api import Page, expect from pytest_abra.dir_manager import DirManager @@ -16,6 +18,9 @@ def setup_nextcloud_admin_session(authentik_admin_page: Page, DIR: DirManager, U page_nextcloud = event_context.value context = page_nextcloud.context + # expect quota stats on files page to confirm successful login page_nextcloud.goto(URL.get("/apps/files")) - expect(page_nextcloud.get_by_role("link", name="Name")).to_be_visible() + quota_pattern = re.compile(r"\d*,\d .* (\d*,\d).") + expect(page_nextcloud.get_by_text(quota_pattern)).to_be_visible() + context.storage_state(path=DIR.STATES / "nextcloud_admin_state.json") -- 2.47.2 From 10f5713d8df3469e17f0adb7a6fbcdb7014dfe66 Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 7 Dec 2023 19:34:52 +0100 Subject: [PATCH 6/7] set expect timeout in its own fixture with autouse to guarantee it will be set before use --- pytest_abra/pytest_abra.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pytest_abra/pytest_abra.py b/pytest_abra/pytest_abra.py index 21350af..33a74ae 100644 --- a/pytest_abra/pytest_abra.py +++ b/pytest_abra/pytest_abra.py @@ -23,6 +23,12 @@ def pytest_addoption(parser: Parser): parser.addoption("--timeout", action="store", type=int, default=20_000) +@pytest.fixture(autouse=True) +def set_expect_timeout(request): + TIMEOUT = request.config.getoption("--timeout") + expect.set_options(timeout=TIMEOUT) + + @pytest.fixture def context(context: BrowserContext, request) -> BrowserContext: # note: because this has the existing context fixture as an argument, it is ensured @@ -33,7 +39,6 @@ def context(context: BrowserContext, request) -> BrowserContext: context.set_default_timeout(TIMEOUT) context.set_extra_http_headers(LOCALE) - expect.set_options(timeout=TIMEOUT) return context -- 2.47.2 From 150749600ad6573827da6fe7a9b0f67cb9e4df91 Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 7 Dec 2023 19:36:18 +0100 Subject: [PATCH 7/7] enable resume --- main.py | 1 + 1 file changed, 1 insertion(+) diff --git a/main.py b/main.py index 00a451c..aa809bc 100644 --- a/main.py +++ b/main.py @@ -42,6 +42,7 @@ subprocess.run( RECIPES_DIR, "--output_dir", OUTPUT_DIR, + "--resume", # "--debug", ] ) -- 2.47.2