Skip to content

Commit 2792501

Browse files
Merge remote-tracking branch 'origin/main' into feature/BCSS-20400-contribution-amendment
2 parents ffa809f + acd42e4 commit 2792501

File tree

4 files changed

+132
-66
lines changed

4 files changed

+132
-66
lines changed
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
from playwright.sync_api import Page
2+
from pages.base_page import BasePage
3+
from enum import Enum
4+
5+
6+
class ColonoscopyDatasetsPage(BasePage):
7+
"""
8+
This class contains locators and methods to interact with the Colonoscopy Datasets page.
9+
"""
10+
11+
def __init__(self, page: Page):
12+
super().__init__(page)
13+
self.page = page
14+
15+
# Colonoscopy datasets page locators
16+
self.save_dataset_button = self.page.locator(
17+
"#UI_DIV_BUTTON_SAVE1"
18+
).get_by_role("button", name="Save Dataset")
19+
20+
self.select_asa_grade_dropdown = self.page.get_by_label("ASA Grade")
21+
22+
self.select_fit_for_colonoscopy_dropdown = self.page.get_by_label(
23+
"Fit for Colonoscopy (SSP)"
24+
)
25+
26+
self.dataset_complete_radio_button_yes = self.page.get_by_role(
27+
"radio", name="Yes"
28+
)
29+
30+
self.dataset_complete_radio_button_no = self.page.get_by_role(
31+
"radio", name="No"
32+
)
33+
34+
def save_dataset(self) -> None:
35+
self.click(self.save_dataset_button)
36+
37+
def select_asa_grade_option(self, option: str) -> None:
38+
"""
39+
This method is designed to select a specific grade option from the colonoscopy dataset page, ASA Grade dropdown menu.
40+
Args:
41+
option (str): The ASA grade option to be selected. This should be a string that matches one of the available options in the dropdown menu.
42+
Valid options are: "FIT", "RELEVANT_DISEASE", "UNABLE_TO_ASSESS", RESTRICTIVE_DISEASE, "LIFE_THREATENING_DISEASE", "MORIBUND", "NOT_APPLICABLE", or "NOT_KNOWN".
43+
Returns:
44+
None
45+
"""
46+
self.select_asa_grade_dropdown.select_option(option)
47+
48+
def select_fit_for_colonoscopy_option(self, option: str) -> None:
49+
"""
50+
This method is designed to select a specific option from the colonoscopy dataset page, Fit for Colonoscopy (SSP) dropdown menu.
51+
Args:
52+
option (str): The option to be selected. This should be a string that matches one of the available options in the dropdown menu.
53+
Valid options are: "YES", "NO", or "UNABLE_TO_ASSESS".
54+
Returns:
55+
None
56+
"""
57+
self.select_fit_for_colonoscopy_dropdown.select_option(option)
58+
59+
def click_dataset_complete_radio_button_yes(self) -> None:
60+
self.dataset_complete_radio_button_yes.check()
61+
62+
def click_dataset_complete_radio_button_no(self) -> None:
63+
self.dataset_complete_radio_button_no.check()
64+
65+
66+
class AsaGradeOptions(Enum):
67+
FIT = "17009"
68+
RELEVANT_DISEASE = "17010"
69+
RESTRICTIVE_DISEASE = "17011"
70+
LIFE_THREATENING_DISEASE = "17012"
71+
MORIBUND = "17013"
72+
NOT_APPLICABLE = "17014"
73+
NOT_KNOWN = "17015"
74+
75+
76+
class FitForColonoscopySspOptions(Enum):
77+
YES = "17058"
78+
NO = "17059"
79+
UNABLE_TO_ASSESS = "17954"
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
from playwright.sync_api import Page
2+
from pages.base_page import BasePage
3+
4+
5+
class SubjectDatasetsPage(BasePage):
6+
"""
7+
This class contains locators and methods to interact with the Subject Datasets page.
8+
"""
9+
10+
def __init__(self, page: Page):
11+
super().__init__(page)
12+
self.page = page
13+
# Subject datasets page locators
14+
self.colonoscopy_show_dataset_button = (
15+
self.page.locator("div")
16+
# Note: The "(1 Dataset)" part of the line below may be dynamic and may change based on the actual dataset count.
17+
.filter(
18+
has_text="Colonoscopy Assessment (1 Dataset) Show Dataset"
19+
).get_by_role("link")
20+
)
21+
self.investigation_show_dataset_button = (
22+
self.page.locator("div")
23+
# Note: The "(1 Dataset)" part of the line below may be dynamic and may change based on the actual dataset count.
24+
.filter(has_text="Investigation (1 Dataset) Show Dataset").get_by_role(
25+
"link"
26+
)
27+
)
28+
29+
def click_colonoscopy_show_datasets(self) -> None:
30+
"""
31+
This method clicks on the 'Show Dataset' button for the Colonoscopy Assessment row on the Subject Datasets Page.
32+
"""
33+
self.click(self.colonoscopy_show_dataset_button)
34+
35+
def click_investigation_show_datasets(self) -> None:
36+
"""
37+
This method clicks on the 'Show Dataset' button for the Investigation row on the Subject Datasets Page.
38+
"""
39+
self.click(self.investigation_show_dataset_button)

pages/screening_practitioner_appointments/subject_datasets.py

Lines changed: 0 additions & 55 deletions
This file was deleted.

tests/smokescreen/test_compartment_5.py

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
import pytest
2-
from playwright.sync_api import Page, expect
2+
from playwright.sync_api import Page
33
from pages.logout.log_out_page import Logout
44
from pages.base_page import BasePage
55
from pages.screening_practitioner_appointments.screening_practitioner_appointments import (
66
ScreeningPractitionerAppointmentsPage,
77
)
8-
from pages.screening_practitioner_appointments.subject_datasets import (
9-
SubjectDatasets,
8+
from pages.datasets.subject_datasets_page import (
9+
SubjectDatasetsPage,
10+
)
11+
from pages.datasets.colonoscopy_dataset_page import (
12+
ColonoscopyDatasetsPage,
1013
FitForColonoscopySspOptions,
1114
AsaGradeOptions,
1215
)
@@ -76,11 +79,11 @@ def test_compartment_5(page: Page, smokescreen_properties: dict) -> None:
7679

7780
AppointmentCalendar(page).click_view_appointments_on_this_day_button()
7881
ScreeningPractitionerDayView(page).click_calendar_button()
79-
date_from_util = datetime(2025, 4, 29)
82+
date_from_util = datetime(2025, 4, 30)
8083
CalendarPicker(page).v1_calender_picker(date_from_util)
8184

8285
# Select subject from inital test data util
83-
ScreeningPractitionerDayView(page).click_patient_link("STARLESS BLUSH")
86+
ScreeningPractitionerDayView(page).click_patient_link("DIVIDEND MUZZLE")
8487

8588
# Select Attendance radio button, tick Attended checkbox, set Attended Date to yesterday's (system) date and then press Save
8689
AppointmentDetail(page).check_attendance_radio()
@@ -93,7 +96,7 @@ def test_compartment_5(page: Page, smokescreen_properties: dict) -> None:
9396
# Repeat for x Abnormal patients
9497

9598
# Navigate to the 'Subject Screening Summary' screen for the 1st Abnormal patient
96-
nhs_no = "9937265193" # Test NHS NO for Scaliding Cod
99+
nhs_no = "9852356488" # Test NHS NO for DIVIDEND MUZZLE
97100
verify_subject_event_status_by_nhs_no(
98101
page, nhs_no, "J10 - Attended Colonoscopy Assessment Appointment"
99102
)
@@ -102,23 +105,23 @@ def test_compartment_5(page: Page, smokescreen_properties: dict) -> None:
102105
SubjectScreeningSummary(page).click_datasets_link()
103106

104107
# Click on 'Show Dataset' next to the Colonoscopy Assessment
105-
SubjectDatasets(page).click_show_datasets()
108+
SubjectDatasetsPage(page).click_colonoscopy_show_datasets()
106109

107110
# Populate Colonoscopy Assessment Details fields
108111

109112
# ASA Grade - I - Fit
110-
SubjectDatasets(page).select_asa_grade_option(AsaGradeOptions.FIT.value)
113+
ColonoscopyDatasetsPage(page).select_asa_grade_option(AsaGradeOptions.FIT.value)
111114

112115
# Fit for Colonoscopy (SSP) - Yes
113-
SubjectDatasets(page).select_fit_for_colonoscopy_option(
116+
ColonoscopyDatasetsPage(page).select_fit_for_colonoscopy_option(
114117
FitForColonoscopySspOptions.YES.value
115118
)
116119

117120
# Click 'Yes' for Dataset Complete?
118-
SubjectDatasets(page).click_dataset_complete_radio_button_yes()
121+
ColonoscopyDatasetsPage(page).click_dataset_complete_radio_button_yes()
119122

120123
# Click Save Dataset button
121-
SubjectDatasets(page).save_dataset()
124+
ColonoscopyDatasetsPage(page).save_dataset()
122125

123126
# Click Back
124127
BasePage(page).click_back_button()

0 commit comments

Comments
 (0)