import pytest from selenium.webdriver.support.ui import WebDriverWait from tests.config_reader import get_setup_configs from tests.helpers import login, logout, save_session_backup from tests.setup.sessions.test_session import create_session from tests.setup.tokens.test_trading_token import run_token_setup, get_product_codes from tests.step_actions import StepActions @pytest.mark.session @pytest.mark.trading_token @pytest.mark.parametrize("config", get_setup_configs("combined"), ids=lambda c: c["product_name"]) def test_session_and_token_setup(driver, test_context, config): token = config["token"] wait = WebDriverWait(driver, 20) step = StepActions(driver, wait, test_context) if not getattr(driver, "_pxil_logged_in", False): driver.get(config["url"]) step.capture("open_application") if not getattr(driver, "_pxil_logged_in", False): login(driver, config["login"]["username"], config["login"]["password"]) driver._pxil_logged_in = True step.capture("login") save_session_backup(driver, test_context, "login_session_backup") if config.get("setup", {}).get("run_session", True): create_session(driver, step, config) if config.get("setup", {}).get("run_token", True): for product_code in get_product_codes(token): product_token = dict(token) product_token["product_code"] = product_code run_token_setup(driver, step, product_token)