Skip to content

Commit 8acd515

Browse files
Merge branch 'main' of github.com:NHSDigital/bcss-playwright into feature/BCSS-20327-compartment-5-utils
# Conflicts: # pages/screening_practitioner_appointments/subject_datasets.py # tests/smokescreen/test_compartment_5.py
2 parents 135661a + acd42e4 commit 8acd515

File tree

3 files changed

+128
-7
lines changed

3 files changed

+128
-7
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)

tests/smokescreen/test_compartment_5.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,11 @@
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
)
@@ -128,14 +131,14 @@ def test_compartment_5(page: Page, smokescreen_properties: dict) -> None:
128131
)
129132

130133
SubjectScreeningSummary(page).click_datasets_link()
131-
SubjectDatasets(page).click_show_datasets()
134+
SubjectDatasetsPage(page).click_colonoscopy_show_datasets()
132135

133-
SubjectDatasets(page).select_asa_grade_option(AsaGradeOptions.FIT.value)
134-
SubjectDatasets(page).select_fit_for_colonoscopy_option(
136+
ColonoscopyDatasetsPage(page).select_asa_grade_option(AsaGradeOptions.FIT.value)
137+
ColonoscopyDatasetsPage(page).select_fit_for_colonoscopy_option(
135138
FitForColonoscopySspOptions.YES.value
136139
)
137-
SubjectDatasets(page).click_dataset_complete_radio_button_yes()
138-
SubjectDatasets(page).save_dataset()
140+
ColonoscopyDatasetsPage(page).click_dataset_complete_radio_button_yes()
141+
ColonoscopyDatasetsPage(page).save_dataset()
139142
BasePage(page).click_back_button()
140143
BasePage(page).click_back_button()
141144

0 commit comments

Comments
 (0)