From a2a1e86d0e677ad5861def7c88de991bb9144620 Mon Sep 17 00:00:00 2001 From: Daniel Date: Wed, 6 Dec 2023 21:56:05 +0100 Subject: [PATCH] add new main file --- pytest_abra/main.py | 79 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 pytest_abra/main.py diff --git a/pytest_abra/main.py b/pytest_abra/main.py new file mode 100644 index 0000000..4d3cee1 --- /dev/null +++ b/pytest_abra/main.py @@ -0,0 +1,79 @@ +import json +import os +from pathlib import Path + +from loguru import logger + +from pytest_abra.coordinator import Coordinator +from pytest_abra.dir_manager import DirManager +from pytest_abra.utils import get_session_id + +# ----------------------------- lookup env files ----------------------------- # + + +# This list of env files is the input to testing framework. each env file +# triggers the execution of one test Runner and provides configuration to the +# tests inside the runner. There can be dependencies, for example wordpress +# requires that authentik ran first to create the admin session and the user +# session. At the moment, wrong ordering results in unsuccessful test +# (wrong ordering would be wordpress env file is before authentik env file). +# At the moment, functionailty is only guaranteed if each env file use +# a unique TYPE var. + +ENV_FILES_ROOT = Path("../envfiles").resolve() +ENV_FILES = [ + ENV_FILES_ROOT / "login.test.dev.local-it.cloud.env", # authentik + ENV_FILES_ROOT / "blog.test.dev.local-it.cloud.env", # wordpress + ENV_FILES_ROOT / "files.test.dev.local-it.cloud.env", # nextcloud +] + + +# ----------------------------- define ouptut dir ---------------------------- # + + +OUTPUT_DIR = Path("./test-output").resolve() +RECIPES_DIR = Path("../recipes").resolve() + + +# --------------------- load credentials to env variables -------------------- # + + +cred_file = Path("credentials.json") +with open(cred_file, "r") as f: + CREDENTIALS = json.load(f) + +for key, value in CREDENTIALS.items(): + os.environ[key] = value + + +# -------------------------- enable playwright debug ------------------------- # + + +# os.environ["PWDEBUG"] = "1" + + +# ----------------------------- define session_id ---------------------------- # + + +session_id = get_session_id() +# session_id = "abc" + + +# ------------------------------- setup logging ------------------------------ # + + +DIR = DirManager(output_dir=OUTPUT_DIR, session_id=session_id) +log_file = DIR.RECORDS / "coordinator.log" +logger.add(log_file) + + +# ---------------------------- initialize and run ---------------------------- # + + +coordinator = Coordinator( + env_paths_list=ENV_FILES, output_dir=OUTPUT_DIR, session_id=session_id, recipes_dir=RECIPES_DIR +) +coordinator.setup_test() +coordinator.run_test() +coordinator.combine_html() +coordinator.collect_traces()