Skip to content

Commit 7f72ec4

Browse files
Merge branch 'main' of github.com:NHSDigital/bcss-playwright into feature/BCSS-20360-compartment-5-pom-appointment-detail-page
2 parents 29a9820 + c38edc6 commit 7f72ec4

File tree

2 files changed

+77
-15
lines changed

2 files changed

+77
-15
lines changed
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
from playwright.sync_api import Page, expect, Locator
2+
from pages.base_page import BasePage
3+
4+
5+
class AdvanceFOBTScreeningEpisode(BasePage):
6+
def __init__(self, page: Page):
7+
super().__init__(page)
8+
self.page = page
9+
# Advance FOBT Screening Episode - page locators
10+
self.suitable_for_endoscopic_test_button = self.page.get_by_role(
11+
"button", name="Suitable for Endoscopic Test"
12+
)
13+
self.calendar_button = self.page.get_by_role("button", name="Calendar")
14+
self.test_type_dropdown = self.page.locator("#UI_EXT_TEST_TYPE_2233")
15+
self.invite_for_diagnostic_test_button = self.page.get_by_role(
16+
"button", name="Invite for Diagnostic Test >>"
17+
)
18+
self.attend_diagnostic_test_button = self.page.get_by_role(
19+
"button", name="Attend Diagnostic Test"
20+
)
21+
self.other_post_investigation_button = self.page.get_by_role(
22+
"button", name="Other Post-investigation"
23+
)
24+
self.record_other_post_investigation_contact_button = self.page.get_by_role(
25+
"button", name="Record other post-"
26+
)
27+
28+
def click_suitable_for_endoscopic_test_button(self) -> None:
29+
AdvanceFOBTScreeningEpisode(self.page).safe_accept_dialog(
30+
self.suitable_for_endoscopic_test_button
31+
)
32+
33+
def click_calendar_button(self) -> None:
34+
self.click(self.calendar_button)
35+
36+
def select_test_type_dropdown_option(self, text: str) -> None:
37+
self.test_type_dropdown.select_option(label=text)
38+
39+
def click_invite_for_diagnostic_test_button(self) -> None:
40+
AdvanceFOBTScreeningEpisode(self.page).safe_accept_dialog(
41+
self.invite_for_diagnostic_test_button
42+
)
43+
44+
def click_attend_diagnostic_test_button(self) -> None:
45+
self.click(self.attend_diagnostic_test_button)
46+
47+
def click_other_post_investigation_button(self) -> None:
48+
AdvanceFOBTScreeningEpisode(self.page).safe_accept_dialog(
49+
self.other_post_investigation_button
50+
)
51+
52+
def get_latest_event_status_cell(self, latest_event_status: str) -> Locator:
53+
return self.page.get_by_role("cell", name=latest_event_status, exact=True)
54+
55+
def verify_latest_event_status_value(self, latest_event_status: str) -> None:
56+
latest_event_status_cell = self.get_latest_event_status_cell(
57+
latest_event_status
58+
)
59+
expect(latest_event_status_cell).to_be_visible()
60+
61+
def click_record_other_post_investigation_contact_button(self) -> None:
62+
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 pages.screening_practitioner_appointments.screening_practitioner_day_view import (
1215
ScreeningPractitionerDayView,
1316
)
@@ -105,26 +108,24 @@ def test_compartment_5(page: Page, smokescreen_properties: dict) -> None:
105108
# On the Subject Screening Summary click on the 'Advance FOBT Screening Episode' button and then click on the 'Suitable for Endoscopic Test' button
106109
# Click OK after message
107110
SubjectScreeningSummary(page).click_advance_fobt_screening_episode_button()
108-
page.once("dialog", lambda dialog: dialog.accept())
109-
page.get_by_role("button", name="Suitable for Endoscopic Test").click()
111+
AdvanceFOBTScreeningEpisode(page).click_suitable_for_endoscopic_test_button()
110112

111113
# Enter a 'First Offered Appointment Date' (enter a date after the attended appt)
112-
page.get_by_role("button", name="Calendar").click()
114+
AdvanceFOBTScreeningEpisode(page).click_calendar_button()
113115
CalendarPicker(page).v1_calender_picker(datetime.today())
114116

115117
# Select 'Colonoscopy' from the 'Type of Test' from the drop down list
116-
page.locator("#UI_EXT_TEST_TYPE_2233").select_option(label="Colonoscopy")
118+
AdvanceFOBTScreeningEpisode(page).select_test_type_dropdown_option("Colonoscopy")
117119

118120
# Click the 'Invite for Diagnostic Test >>' button
119121
# Click 'OK'
120-
page.once("dialog", lambda dialog: dialog.accept())
121-
page.get_by_role("button", name="Invite for Diagnostic Test >>").click()
122+
AdvanceFOBTScreeningEpisode(page).click_invite_for_diagnostic_test_button()
122123
SubjectScreeningSummary(page).verify_latest_event_status_value(
123124
"A59 - Invited for Diagnostic Test"
124125
)
125126

126127
# Click 'Attend Diagnostic Test' button
127-
page.get_by_role("button", name="Attend Diagnostic Test").click()
128+
AdvanceFOBTScreeningEpisode(page).click_attend_diagnostic_test_button()
128129

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

145146
# Click 'Other Post-investigation Contact Required' button
146147
# Click 'OK'
147-
page.once("dialog", lambda dialog: dialog.accept())
148-
page.get_by_role("button", name="Other Post-investigation").click()
149-
expect(
150-
page.get_by_role(
151-
"cell", name="A361 - Other Post-investigation Contact Required", exact=True
152-
)
153-
).to_be_visible()
148+
AdvanceFOBTScreeningEpisode(page).click_other_post_investigation_button()
149+
AdvanceFOBTScreeningEpisode(page).verify_latest_event_status_value(
150+
"A361 - Other Post-investigation Contact Required"
151+
)
154152

155153
# Select 'Record other post-investigation contact' button
156-
page.get_by_role("button", name="Record other post-").click()
154+
AdvanceFOBTScreeningEpisode(
155+
page
156+
).click_record_other_post_investigation_contact_button()
157157

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

0 commit comments

Comments
 (0)