Skip to content

Commit 5f49aac

Browse files
Added further POM and locators to support Compartment 4 test
1 parent 2fff76f commit 5f49aac

File tree

4 files changed

+103
-26
lines changed

4 files changed

+103
-26
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
from playwright.sync_api import Page, expect
2+
from pages.base_page import BasePage
3+
4+
5+
class BookAppointmentPage(BasePage):
6+
def __init__(self, page: Page):
7+
super().__init__(page)
8+
self.page = page
9+
# Book Appointment - page locators
10+
self.screening_center_dropdown = page.locator("#UI_NEW_SCREENING_CENTRE")
11+
self.site_dropdown = page.locator("#UI_NEW_SITE")
12+
self.day_with_available_slots = page.locator(
13+
'input.twoColumnCalendar[style*="background-color: rgb(102, 255, 153);"]'
14+
).last
15+
self.appointment_time_radio_button = page.locator(
16+
page.get_by_role("radio", name="UI_NEW_SLOT_SELECTION_ID")
17+
)
18+
self.save_button = page.get_by_role("button", name="Save")
19+
20+
def select_screening_centre_dropdown_option(self, screening_centre: str) -> None:
21+
self.screening_center_dropdown.select_option(label=screening_centre)
22+
23+
def select_site_dropdown_option(self, screening_site: str) -> None:
24+
self.site_dropdown.select_option(label=screening_site)
25+
self.site_dropdown.press("Enter")
26+
27+
def choose_day_with_available_slots(self) -> None:
28+
self.click(self.day_with_available_slots)
29+
30+
def choose_appointment_time(self) -> None:
31+
self.appointment_time_radio_button.check()
32+
33+
def click_save_button(self) -> None:
34+
self.click(self.save_button)
35+
36+
def appointment_booked_confirmation_is_displayed(self, message: str) -> None:
37+
expect(self.page.get_by_text(message)).to_be_visible()

pages/screening_practitioner_appointments/colonoscopy_assessment_appointments_page.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,16 @@ def __init__(self, page: Page):
88
self.page = page
99
# Colonoscopy Assessment Appointments - page locators
1010
self.page_header = self.page.locator("#page-title")
11+
self.nhs_number_filter_text_field = self.page.locator("#nhsNumberFilter")
1112

1213
def verify_page_header(self) -> None:
1314
expect(self.page_header).to_contain_text(
1415
"Patients that Require Colonoscopy Assessment Appointments"
1516
)
17+
18+
def filter_by_nhs_number(self, nhs_number: str) -> None:
19+
self.nhs_number_filter_text_field.fill(nhs_number)
20+
self.nhs_number_filter_text_field.press("Enter")
21+
22+
def click_nhs_number_link(self, nhs_number: str) -> None:
23+
self.click(self.page.get_by_role("link", name=nhs_number))

pages/screening_practitioner_appointments/practitioner_availability_page.py

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
from playwright.sync_api import Page
1+
from playwright.sync_api import Page, expect
22
from pages.base_page import BasePage
3-
from utils.table_util import TableUtils
43

54

65
class PractitionerAvailabilityPage(BasePage):
@@ -11,6 +10,12 @@ def __init__(self, page: Page):
1110
self.site_id_dropdown = page.locator("#UI_SITE_ID")
1211
self.screening_practitioner_dropdown = page.locator("#UI_PRACTITIONER_ID")
1312
self.calendar_button = page.get_by_role("button", name="Calendar")
13+
self.show_button = page.get_by_role("button", name="Show")
14+
self.time_from_text_field = page.get_by_role("textbox", name="From:")
15+
self.time_to_text_field = page.get_by_role("textbox", name="To:")
16+
self.calculate_slots_button = page.get_by_role("button", name="Calculate Slots")
17+
self.number_of_weeks_text_field = page.locator("#FOR_WEEKS")
18+
self.save_button = page.get_by_role("button", name="Save")
1419

1520
def select_site_dropdown_option(self, site_to_use: str) -> None:
1621
self.site_id_dropdown.select_option(label=site_to_use)
@@ -20,3 +25,24 @@ def select_practitioner_dropdown_option(self, practitioner: str) -> None:
2025

2126
def click_calendar_button(self) -> None:
2227
self.click(self.calendar_button)
28+
29+
def click_show_button(self) -> None:
30+
self.click(self.show_button)
31+
32+
def enter_start_time(self, start_time: str) -> None:
33+
self.time_from_text_field.fill(start_time)
34+
35+
def enter_end_time(self, end_time: str) -> None:
36+
self.time_to_text_field.fill(end_time)
37+
38+
def click_calculate_slots_button(self) -> None:
39+
self.click(self.calculate_slots_button)
40+
41+
def enter_number_of_weeks(self, weeks: str) -> None:
42+
self.number_of_weeks_text_field.fill(weeks)
43+
44+
def click_save_button(self) -> None:
45+
self.click(self.save_button)
46+
47+
def slots_updated_message_is_displayed(self, message: str) -> None:
48+
expect(self.page.get_by_text(message)).to_be_visible()

tests/smokescreen/test_compartment_4.py

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import logging
21
import pytest
32
from playwright.sync_api import Page, expect
43
from pages.logout.log_out_page import Logout
@@ -12,6 +11,12 @@
1211
from pages.screening_practitioner_appointments.practitioner_availability_page import (
1312
PractitionerAvailabilityPage,
1413
)
14+
from pages.screening_practitioner_appointments.colonoscopy_assessment_appointments_page import (
15+
ColonoscopyAssessmentAppointments,
16+
)
17+
from pages.screening_practitioner_appointments.book_appointment_page import (
18+
BookAppointmentPage,
19+
)
1520
from utils.user_tools import UserTools
1621
from utils.load_properties_file import PropertiesFile
1722
from utils.calendar_picker import CalendarPicker
@@ -66,34 +71,35 @@ def test_compartment_4(page: Page, smokescreen_properties: dict) -> None:
6671
CalendarPicker(page).select_day(
6772
datetime.today()
6873
) # This will make it so that we can only run this test once a day, or we need to restore the DB back to the snapshot
69-
page.get_by_role("button", name="Show").dblclick()
70-
page.get_by_role("textbox", name="From:").click()
71-
page.get_by_role("textbox", name="From:").fill("09:00")
72-
page.get_by_role("textbox", name="To:").click()
73-
page.get_by_role("textbox", name="To:").fill("17:15")
74-
page.get_by_role("button", name="Calculate Slots").click()
75-
page.locator("#FOR_WEEKS").click()
76-
page.locator("#FOR_WEEKS").fill("6")
77-
page.locator("#FOR_WEEKS").press("Enter")
78-
page.get_by_role("button", name="Save").click()
79-
expect(page.get_by_text("Slots Updated for 6 Weeks")).to_be_visible()
74+
PractitionerAvailabilityPage(page).click_show_button()
75+
PractitionerAvailabilityPage(page).enter_start_time("09:00")
76+
PractitionerAvailabilityPage(page).enter_end_time("17:15")
77+
PractitionerAvailabilityPage(page).click_calculate_slots_button()
78+
PractitionerAvailabilityPage(page).enter_number_of_weeks("6")
79+
PractitionerAvailabilityPage(page).click_save_button()
80+
PractitionerAvailabilityPage(page).slots_updated_message_is_displayed(
81+
"Slots Updated for 6 Weeks"
82+
)
8083
Logout(page).log_out(close_page=False)
8184

82-
page.get_by_role("button", name="Log in").click()
85+
ScreeningPractitionerAppointmentsPage(page).go_to_log_in_page()
8386
UserTools.user_login(page, "Hub Manager State Registered at BCS01")
8487
BasePage(page).go_to_screening_practitioner_appointments_page()
85-
page.get_by_role("link", name="Patients that Require").click()
88+
ScreeningPractitionerAppointmentsPage(page).go_to_patients_that_require_page()
8689
# Add for loop to loop x times (depends on how many we want to run it for) 70 - 79
87-
page.locator("#nhsNumberFilter").click()
88-
page.locator("#nhsNumberFilter").fill("9991406131")
89-
page.locator("#nhsNumberFilter").press("Enter")
90-
page.get_by_role("link", name="999 140 6131").click()
91-
page.get_by_label("Screening Centre ( All)").select_option("23162")
92-
page.locator("#UI_NEW_SITE").select_option("42808")
93-
page.locator('input[name="fri2"]').click() # Todays date if available
94-
page.locator("#UI_NEW_SLOT_SELECTION_ID_359119").check()
95-
page.get_by_role("button", name="Save").click()
96-
expect(page.get_by_text("Appointment booked")).to_be_visible()
90+
ColonoscopyAssessmentAppointments(page).filter_by_nhs_number("976 475 5232")
91+
ColonoscopyAssessmentAppointments(page).click_nhs_number_link("976 475 5232")
92+
BookAppointmentPage(page).select_screening_centre_dropdown_option(
93+
"BCS001 - Wolverhampton Bowel Cancer Screening Centre"
94+
)
95+
BookAppointmentPage(page).select_site_dropdown_option("Holly Hall Clinic (? km)")
96+
BookAppointmentPage(page).choose_day_with_available_slots()
97+
# page.locator("#UI_NEW_SLOT_SELECTION_ID_359119").check()
98+
BookAppointmentPage(page).choose_appointment_time()
99+
BookAppointmentPage(page).click_save_button()
100+
BookAppointmentPage(page).appointment_booked_confirmation_is_displayed(
101+
"Appointment booked"
102+
)
97103

98104
batch_processing(
99105
page,

0 commit comments

Comments
 (0)