@@ -133,6 +133,7 @@ class BasePage:
133133 sign_out_link = NavigationLocators .SIGN_OUT_LINK
134134 profile_page_link = NavigationLocators .PROFILE_LINK
135135 h1_text = (By .CSS_SELECTOR , "h1" )
136+ templates_link = NavigationLocators .TEMPLATES_LINK
136137
137138 def __init__ (self , driver ):
138139 self .base_url = config ["notify_admin_url" ]
@@ -881,6 +882,7 @@ class ViewEmailTemplatePage(ViewTemplatePage):
881882 page_banner_text = ViewEmailTemplatePageLocators .PAGE_BANNER_TEXT
882883 delete_template_link = ViewEmailTemplatePageLocators .DELETE_TEMPLATE_LINK
883884 template_deletion_confirmation_button = ViewEmailTemplatePageLocators .TEMPLATE_DELETION_CONFIRMATION_BUTTON
885+ email_message_body_content = (By .XPATH , "//div[contains(@class, 'email-message-body')]" )
884886
885887 def click_attach_files_button (self ):
886888 element = self .wait_for_element (ViewEmailTemplatePage .attach_files_button )
@@ -906,6 +908,10 @@ def click_template_deletion_confirmation_button(self):
906908 element = self .wait_for_element (ViewEmailTemplatePage .template_deletion_confirmation_button )
907909 element .click ()
908910
911+ def get_email_message_body_content (self ):
912+ element = self .wait_for_element (ViewEmailTemplatePage .email_message_body_content )
913+ return element .text .strip ()
914+
909915
910916class AddFileToEmailTemplatePage (BasePage ):
911917 choose_file_button = AddFileToEmailTemplatePageLocators .CHOOSE_FILE_BUTTON
@@ -930,6 +936,10 @@ class ManageEmailTemplateFilePage(BasePage):
930936 file_link = ManageEmailTemplateFilePageLocators .REMOVE_FILE_LINK
931937 add_to_template = ManageEmailTemplateFilePageLocators .ADD_TO_TEMPLATE_BUTTON
932938 remove_file_dialog_button = ManageEmailTemplateFilePageLocators .REMOVE_FILE_DIALOG_BUTTON
939+ change_link_text_change = (
940+ By .XPATH ,
941+ "//div[contains(@class, 'govuk-summary-list__row')][dt[contains(., 'Link text')]]//a[contains(., 'Change')]" ,
942+ )
933943
934944 def click_remove_file_link (self ):
935945 element = self .wait_for_element (ManageEmailTemplateFilePage .file_link )
@@ -943,6 +953,26 @@ def click_remove_file_dialog_button(self):
943953 element = self .wait_for_element (ManageEmailTemplateFilePage .remove_file_dialog_button )
944954 element .click ()
945955
956+ def click_change_file_setting (self , label ):
957+ xpath = (
958+ f"//div[contains(@class, 'govuk-summary-list__row')][dt[contains(., '{ label } ')]]//a[contains(., 'Change')]"
959+ )
960+ element = self .wait_for_element ((By .XPATH , xpath ))
961+ element .click ()
962+
963+
964+ class ChangeLinkTextForEmailFilePage (BasePage ):
965+ link_text_input = (By .CSS_SELECTOR , "input[name='link_text'][id='link_text']" )
966+ continue_button = (By .CSS_SELECTOR , "button[type='submit']" )
967+
968+ def click_continue_button (self ):
969+ element = self .wait_for_element (ChangeLinkTextForEmailFilePage .continue_button )
970+ element .click ()
971+
972+ def fill_in_link_text (self , value ):
973+ element = self .wait_for_element (ChangeLinkTextForEmailFilePage .link_text_input )
974+ element .send_keys (value )
975+
946976
947977class ManageFilesForEmailTemplatePage (BasePage ):
948978 def click_manage_link (self , file_name ):
@@ -1454,6 +1484,7 @@ class SendSetSenderPage(BasePage):
14541484 By .XPATH ,
14551485 "//label[normalize-space(text())='func tests']/preceding-sibling::input[@type='radio']" ,
14561486 )
1487+ continue_button = (By .CSS_SELECTOR , "button[type='submit']" )
14571488
14581489 def wait_until_current (self , time = 10 ):
14591490 return self .wait_until_url_matches (r"/set-sender(\?.*)?$" , time = time )
@@ -1469,6 +1500,10 @@ def choose_alternative_sms_sender(self):
14691500 radio = self .wait_for_design_system_checkbox_or_radio (self .alternative_sender_sms_radio )
14701501 radio .click ()
14711502
1503+ def click_continue_button (self ):
1504+ element = self .wait_for_element (SendSetSenderPage .continue_button )
1505+ element .click ()
1506+
14721507
14731508class SendOneRecipientPage (BasePage ):
14741509 def is_placeholder_a_recipient_field (self , message_type ):
@@ -1510,6 +1545,36 @@ def click_use_emergency_list(self):
15101545 element .click ()
15111546
15121547
1548+ class SendEmailPreviewPage (BasePage ):
1549+ """
1550+ The send file via ui journey slightly differs from the usual one-off email journey
1551+ hence the need for this separate class
1552+ """
1553+
1554+ send_button = (By .CSS_SELECTOR , "button[type='submit'" )
1555+
1556+ def click_send_button (self ):
1557+ element = self .wait_for_element (SendEmailPreviewPage .send_button )
1558+ element .click ()
1559+
1560+
1561+ class SentEmailMessagePage (BasePage ):
1562+ """
1563+ The send file via ui journey slightly differs from the usual one-off email journey
1564+ hence the need for this separate class
1565+ """
1566+
1567+ notification_status = (By .XPATH , "//p[contains(@class, 'notification-status')]" )
1568+
1569+ def get_notification_status (self ):
1570+ element = self .wait_for_element (SentEmailMessagePage .notification_status )
1571+ return element .get_attribute ("textContent" ).strip ()
1572+
1573+ def click_file_download_link (self , link_text ):
1574+ element = self .wait_for_element ((By .XPATH , f"//a[contains(., '{ link_text } ')]" ))
1575+ element .click ()
1576+
1577+
15131578class SendChooseContactListPage (PageWithUploadsList ):
15141579 def get_contact_list_info (self , contact_list_id ):
15151580 link_element = self .wait_for_element ((By .CSS_SELECTOR , f"a[href*='/from-contact-list/{ contact_list_id } ']" ))
0 commit comments