import random import time import pytest from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from .config_reader import get_product_config from .helpers import ( clear_pending_console_input, click_page_body, enter_pressed, login, open_trading_maintenance_page, select_bootstrap_dropdown_by_id, select_ui_dropdown, toggle_bootstrap_dropdown_by_id, toggle_labeled_ui_dropdown, ) from .locators import Locator from .step_actions import StepActions def _bounce_token_generation(driver, step, config): token = config["token"] interactions = random.randint(2, 4) open_trading_maintenance_page(driver, Locator.tokengeneration) step.capture("open_token_generation_fake") for index in range(interactions): if random.choice([True, False]): toggle_bootstrap_dropdown_by_id(driver, Locator.tokenmarketcode) step.capture(f"toggle_market_dropdown_{index + 1}") click_page_body(driver) else: select_bootstrap_dropdown_by_id(driver, Locator.tokenmarketcode, token["market_code"]) step.capture(f"select_market_code_{index + 1}") toggle_labeled_ui_dropdown(driver, "PRODUCT CODE") step.capture(f"toggle_product_dropdown_{index + 1}") click_page_body(driver) time.sleep(random.uniform(0.5, 1.5)) def _bounce_trading_session(driver, step, config): open_trading_maintenance_page(driver, Locator.tradingsession) step.capture("open_trading_session_fake") step.click((By.XPATH, Locator.addsessionbtn), "open_add_session_fake") interactions = random.randint(2, 4) for index in range(interactions): if random.choice([True, False]): select_ui_dropdown(driver, "meInstanceId", config["product"]["me_instance"]) step.capture(f"select_me_instance_{index + 1}") else: click_page_body(driver) step.capture(f"idle_on_session_form_{index + 1}") time.sleep(random.uniform(0.5, 1.5)) @pytest.mark.fake_activity def test_random_fake_activity_no_save(driver, test_context): config = get_product_config("IDAS") wait = WebDriverWait(driver, 20) step = StepActions(driver, wait, test_context) driver.get(config["url"]) step.capture("open_application") login( driver, config["login"]["username"], config["login"]["password"] ) step.capture("login") actions = [_bounce_token_generation, _bounce_trading_session] random.shuffle(actions) clear_pending_console_input() print("Fake activity started. Press Enter in the terminal any time to stop.") while True: random.choice(actions)(driver, step, config) if enter_pressed(): break step.capture("manual_stop_point")