Skip to content

Commit 5fe421b

Browse files
Adding POMs for advance FOBT screening episode page
1 parent ff94477 commit 5fe421b

File tree

2 files changed

+79
-15
lines changed

2 files changed

+79
-15
lines changed
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
from playwright.sync_api import Page, expect, Locator
2+
from pages.base_page import BasePage
3+
from enum import Enum
4+
import pytest
5+
6+
7+
class AdvanceFOBTScreeningEpisode(BasePage):
8+
def __init__(self, page: Page):
9+
super().__init__(page)
10+
self.page = page
11+
# Advance FOBT Screening Episode - page locators
12+
self.suitable_for_escopic_test_button = self.page.get_by_role(
13+
"button", name="Suitable for Endoscopic Test"
14+
)
15+
self.calendar_button = self.page.get_by_role("button", name="Calendar")
16+
self.test_type_dropdown = self.page.locator("#UI_EXT_TEST_TYPE_2233")
17+
self.invite_for_diagnostic_test_button = self.page.get_by_role(
18+
"button", name="Invite for Diagnostic Test >>"
19+
)
20+
self.attend_diagnostic_test_button = self.page.get_by_role(
21+
"button", name="Attend Diagnostic Test"
22+
)
23+
self.other_post_investigation_button = self.page.get_by_role(
24+
"button", name="Other Post-investigation"
25+
)
26+
self.record_other_post_investigation_contact_button = self.page.get_by_role(
27+
"button", name="Record other post-"
28+
)
29+
30+
def click_suitable_for_escopic_test_button(self) -> None:
31+
AdvanceFOBTScreeningEpisode(self.page).safe_accept_dialog(
32+
self.suitable_for_escopic_test_button
33+
)
34+
35+
def click_calendar_button(self) -> None:
36+
self.click(self.calendar_button)
37+
38+
def select_test_type_dropdown_option(self, text: str) -> None:
39+
self.test_type_dropdown.select_option(label=text)
40+
41+
def click_invite_for_diagnostic_test_button(self) -> None:
42+
AdvanceFOBTScreeningEpisode(self.page).safe_accept_dialog(
43+
self.invite_for_diagnostic_test_button
44+
)
45+
46+
def click_attend_diagnostic_test_button(self) -> None:
47+
self.click(self.attend_diagnostic_test_button)
48+
49+
def click_other_post_investigation_button(self) -> None:
50+
AdvanceFOBTScreeningEpisode(self.page).safe_accept_dialog(
51+
self.other_post_investigation_button
52+
)
53+
54+
def get_latest_event_status_cell(self, latest_event_status: str) -> Locator:
55+
return self.page.get_by_role("cell", name=latest_event_status, exact=True)
56+
57+
def verify_latest_event_status_value(self, latest_event_status: str) -> None:
58+
latest_event_status_cell = self.get_latest_event_status_cell(
59+
latest_event_status
60+
)
61+
expect(latest_event_status_cell).to_be_visible()
62+
63+
def click_record_other_post_investigation_contact_button(self) -> None:
64+
self.click(self.record_other_post_investigation_contact_button)

tests/smokescreen/test_compartment_5.py

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
from pages.screening_subject_search.subject_screening_summary import (
99
SubjectScreeningSummary,
1010
)
11+
from pages.screening_subject_search.advance_fobt_screening_episode_page import (
12+
AdvanceFOBTScreeningEpisode,
13+
)
1114
from utils.user_tools import UserTools
1215
from utils.load_properties_file import PropertiesFile
1316
from utils.screening_subject_page_searcher import verify_subject_event_status_by_nhs_no
@@ -101,26 +104,24 @@ def test_compartment_5(page: Page, smokescreen_properties: dict) -> None:
101104
# On the Subject Screening Summary click on the 'Advance FOBT Screening Episode' button and then click on the 'Suitable for Endoscopic Test' button
102105
# Click OK after message
103106
page.get_by_role("button", name="Advance FOBT Screening Episode").click()
104-
page.once("dialog", lambda dialog: dialog.accept())
105-
page.get_by_role("button", name="Suitable for Endoscopic Test").click()
107+
AdvanceFOBTScreeningEpisode(page).click_suitable_for_escopic_test_button()
106108

107109
# Enter a 'First Offered Appointment Date' (enter a date after the attended appt)
108-
page.get_by_role("button", name="Calendar").click()
110+
AdvanceFOBTScreeningEpisode(page).click_calendar_button()
109111
CalendarPicker(page).v1_calender_picker(datetime.today())
110112

111113
# Select 'Colonoscopy' from the 'Type of Test' from the drop down list
112-
page.locator("#UI_EXT_TEST_TYPE_2233").select_option(label="Colonoscopy")
114+
AdvanceFOBTScreeningEpisode(page).select_test_type_dropdown_option("Colonoscopy")
113115

114116
# Click the 'Invite for Diagnostic Test >>' button
115117
# Click 'OK'
116-
page.once("dialog", lambda dialog: dialog.accept())
117-
page.get_by_role("button", name="Invite for Diagnostic Test >>").click()
118+
AdvanceFOBTScreeningEpisode(page).click_invite_for_diagnostic_test_button()
118119
SubjectScreeningSummary(page).verify_latest_event_status_value(
119120
"A59 - Invited for Diagnostic Test"
120121
)
121122

122123
# Click 'Attend Diagnostic Test' button
123-
page.get_by_role("button", name="Attend Diagnostic Test").click()
124+
AdvanceFOBTScreeningEpisode(page).click_attend_diagnostic_test_button()
124125

125126
# Select Colonoscopy from drop down list. Enter the actual appointment date as today's date and select 'Save'
126127
page.locator("#UI_CONFIRMED_TYPE_OF_TEST").select_option(label="Colonoscopy")
@@ -140,16 +141,15 @@ def test_compartment_5(page: Page, smokescreen_properties: dict) -> None:
140141

141142
# Click 'Other Post-investigation Contact Required' button
142143
# Click 'OK'
143-
page.once("dialog", lambda dialog: dialog.accept())
144-
page.get_by_role("button", name="Other Post-investigation").click()
145-
expect(
146-
page.get_by_role(
147-
"cell", name="A361 - Other Post-investigation Contact Required", exact=True
148-
)
149-
).to_be_visible()
144+
AdvanceFOBTScreeningEpisode(page).click_other_post_investigation_button()
145+
AdvanceFOBTScreeningEpisode(page).verify_latest_event_status_value(
146+
"A361 - Other Post-investigation Contact Required"
147+
)
150148

151149
# Select 'Record other post-investigation contact' button
152-
page.get_by_role("button", name="Record other post-").click()
150+
AdvanceFOBTScreeningEpisode(
151+
page
152+
).click_record_other_post_investigation_contact_button()
153153

154154
# Complete 'Contact Direction', To patient
155155
# 'Contact made between patient and', Selects the top option in the dropdown

0 commit comments

Comments
 (0)