@@ -7,6 +7,8 @@ class BasePage:
77
88 def __init__ (self , page : Page ):
99 self .page = page
10+ # Homepage - vars
11+ self .main_menu_string = "Main Menu"
1012 # Homepage/Navigation Bar links
1113 self .sub_menu_link = self .page .get_by_role ("link" , name = "Show Sub-menu" )
1214 self .hide_sub_menu_link = self .page .get_by_role ("link" , name = "Hide Sub-menu" )
@@ -16,7 +18,7 @@ def __init__(self, page: Page):
1618 self .refresh_alerts_link = self .page .get_by_role ("link" , name = "Refresh alerts" )
1719 self .user_guide_link = self .page .get_by_role ("link" , name = "User guide" )
1820 self .help_link = self .page .get_by_role ("link" , name = "Help" )
19- self .main_menu_link = self .page .get_by_role ("link" , name = "Main Menu" )
21+ self .main_menu_link = self .page .get_by_role ("link" , name = self . main_menu_string )
2022 self .log_out_link = self .page .get_by_role ("link" , name = "Log-out" )
2123 # Main menu - page links
2224 self .contacts_list_page = self .page .get_by_role ("link" , name = "Contacts List" )
@@ -54,8 +56,27 @@ def __init__(self, page: Page):
5456
5557 def click_main_menu_link (self ) -> None :
5658 """Click the Base Page 'Main Menu' link if it is visible."""
57- if self .main_menu_link .is_visible ():
58- self .click (self .main_menu_link )
59+ loops = 0
60+ while loops <= 3 :
61+ if self .main_menu_link .is_visible ():
62+ self .click (self .main_menu_link )
63+ try :
64+ if self .main_menu__header .is_visible ():
65+ text = self .main_menu__header .text_content ()
66+ else :
67+ text = None
68+ except Exception as e :
69+ logging .warning (f"Could not read header text: { e } " )
70+ text = None
71+
72+ if text and self .main_menu_string in text :
73+ break
74+ else :
75+ logging .warning ("Main Menu click failed, retrying after 0.2 seconds" )
76+ # The timeout is in place here to allow the page ample time to load if it has not already been loaded
77+ self .page .wait_for_timeout (200 )
78+
79+ loops += 1
5980
6081 def click_log_out_link (self ) -> None :
6182 """Click the Base Page 'Log-out' link."""
@@ -101,7 +122,7 @@ def bowel_cancer_screening_system_header_is_displayed(self) -> None:
101122
102123 def main_menu_header_is_displayed (self ) -> None :
103124 """Asserts that the Main Menu header is displayed."""
104- expect (self .main_menu__header ).to_contain_text ("Main Menu" )
125+ expect (self .main_menu__header ).to_contain_text (self . main_menu_string )
105126
106127 def bowel_cancer_screening_page_title_contains_text (self , text : str ) -> None :
107128 """Asserts that the page title contains the specified text.
0 commit comments