Add RTM session and configurable token generator flow

This commit is contained in:
2026-09-23 10:16:28 +05:30
parent 9d16b20eb4
commit 394d2749bf
7 changed files with 192 additions and 17 deletions
+53 -1
View File
@@ -180,6 +180,58 @@ def complete_time_session_edits_from_saved_token(driver, step, token):
pause_after_step()
def open_rtm_new_token(driver, step, token):
"""Prepare the RTM generator through Add New Token."""
open_trading_maintenance_page(driver, Locator.tokengenerator)
handle_transient_popups(driver)
step.capture("open_token_generator_rtm")
for element_id, value, name in (
(Locator.generatormarketcode, token["market_code"], "market_code"),
(Locator.generatorproductcode, token["product_code"], "product_code"),
(Locator.generatorgenerationmode, token["generation_mode"], "generation_mode"),
):
select_bootstrap_dropdown_by_id(driver, element_id, value, exact=True)
step.capture(f"select_{name}_rtm")
# Product Type is populated by the application after selecting Product Code.
step.click((By.XPATH, Locator.addnewtokenbtn), "click_add_new_token_rtm")
def get_rtm_token_times(token, now=None):
now = datetime.now() if now is None else now
delivery_date = (now + timedelta(days=token.get("delivery_offset_days", 0))).strftime("%d/%m/%Y")
return (
f"{delivery_date} {token.get('delivery_from_time', '00:00')}",
f"{delivery_date} {token.get('delivery_to_time', '23:59')}",
(now + timedelta(minutes=token.get("session_start_offset_minutes", 5))).strftime("%H:%M"),
token.get("session_end_time", "20:00"),
)
def create_rtm_token(driver, step, token):
open_rtm_new_token(driver, step, token)
values = get_rtm_token_times(token)
fields = (
(Locator.rtmdeliveryfromdate, "delivery_from_date"),
(Locator.rtmdeliverytodate, "delivery_to_date"),
(Locator.rtmsessionstarttime, "session_start_time"),
(Locator.rtmsessionendtime, "session_end_time"),
)
for (locator, name), value in zip(fields, values):
type_first_visible_input(driver, locator, value)
step.capture(f"enter_{name}_rtm")
step.click((By.XPATH, Locator.savetokenbtn), "save_token_rtm")
handle_transient_popups(driver)
def run_token_setup(driver, step, token):
if token.get("product_type", "").upper() == "RTM":
create_rtm_token(driver, step, token)
else:
create_and_activate_token(driver, step, token)
def create_and_activate_token(driver, step, token):
product_code = token["product_code"]
@@ -224,7 +276,7 @@ def test_trading_token_creation(driver, test_context, config):
for product_code in get_product_codes(token):
product_token = dict(token)
product_token["product_code"] = product_code
create_and_activate_token(driver, step, product_token)
run_token_setup(driver, step, product_token)
logout(driver)