Skip to content

Commit 3e5f076

Browse files
committed
Addressed PR comments.
1 parent 99afe6c commit 3e5f076

File tree

5 files changed

+78
-78
lines changed

5 files changed

+78
-78
lines changed

pages/alerts/alerts_page.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
from pages.base_page import BasePage
33

44

5-
class AlertsPage:
5+
class AlertsPage(BasePage):
66
def __init__(self, page: Page):
7-
self.page = page
7+
super().__init__(page)
88
self.refresh_alerts_link = self.page.get_by_role("link", name="Refresh alerts")
99

1010
def click_refresh_alerts(self) -> None:
@@ -14,5 +14,3 @@ def click_refresh_alerts(self) -> None:
1414
def is_refresh_alerts_visible(self, timeout=5000) -> bool:
1515
"""Returns True if the 'Refresh Alerts' link is visible within the given timeout."""
1616
return self.refresh_alerts_link.is_visible(timeout=timeout)
17-
18-

pages/screening_subject_search/subject_screening_search_page.py

Lines changed: 31 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from pages.base_page import BasePage
44
from enum import Enum
55
from utils.calendar_picker import CalendarPicker
6+
from typing import Optional
67

78

89
class SubjectScreeningPage(BasePage):
@@ -213,17 +214,36 @@ def complete_send_kit_form(
213214

214215
logging.info("[KIT REQUEST] 'Send a kit' form submitted successfully")
215216

216-
def search_subject_with_args(self, surname: str, forename: str, screening_status: str, episode_status: str) -> None:
217-
"""Searches for a subject using the provided criteria."""
218-
self.surname_field.fill(surname)
219-
self.forename_field.fill(forename)
220-
self.screening_status_dropdown.select_option(screening_status)
221-
self.screening_status_dropdown.click()
222-
self.search_button.click()
223-
self.back_link.click()
224-
self.episode_status_dropdown.select_option(episode_status)
225-
self.search_button.click()
226-
self.back_link.click()
217+
def search_subject_with_args(
218+
self,
219+
surname: Optional[str] = None,
220+
forename: Optional[str] = None,
221+
screening_status: Optional[str] = None,
222+
episode_status: Optional[str] = None,
223+
) -> None:
224+
"""
225+
Searches for a subject using any combination of the provided criteria.
226+
227+
Args:
228+
surname (Optional[str]): Subject's surname.
229+
forename (Optional[str]): Subject's forename.
230+
screening_status (Optional[str]): Screening status code.
231+
episode_status (Optional[str]): Episode status code.
232+
"""
233+
if surname:
234+
self.surname_field.fill(surname)
235+
if forename:
236+
self.forename_field.fill(forename)
237+
if screening_status:
238+
self.screening_status_dropdown.select_option(screening_status)
239+
self.screening_status_dropdown.click()
240+
if surname or forename or screening_status:
241+
self.click(self.search_button)
242+
self.back_link.click()
243+
if episode_status:
244+
self.episode_status_dropdown.select_option(episode_status)
245+
self.click(self.search_button)
246+
self.back_link.click()
227247

228248

229249
class ScreeningStatusSearchOptions(Enum):

pages/screening_subject_search/subject_search_page.py

Lines changed: 0 additions & 27 deletions
This file was deleted.
Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,39 @@
1-
from playwright.sync_api import Page, expect
1+
from playwright.sync_api import Page
22
from pages.base_page import BasePage
33

44

55
class SurveillanceSummaryPage(BasePage):
66
"""Page object for navigating to and interacting with the Surveillance Review Summary section."""
7-
def __init__(
8-
self,
9-
page,
10-
org_and_site_details_link_text,
11-
list_all_orgs_link_text,
12-
list_all_sites_link_text,
13-
surveillance_link_text,
14-
manage_surveillance_review_link_text,
15-
surveillance_review_summary_header_text,
16-
back_link_text="Back"
17-
):
18-
self.page = page
19-
self.org_and_site_details_link = self.page.get_by_role("link", name=org_and_site_details_link_text)
20-
self.list_all_orgs_link = self.page.get_by_role("link", name=list_all_orgs_link_text)
21-
self.list_all_sites_link = self.page.get_by_role("link", name=list_all_sites_link_text)
22-
self.surveillance_link = self.page.get_by_role("link", name=surveillance_link_text, exact=True)
23-
self.manage_surveillance_review_link = self.page.get_by_role("link", name=manage_surveillance_review_link_text)
24-
self.surveillance_review_summary_header = self.page.get_by_text(surveillance_review_summary_header_text)
25-
self.back_link = self.page.get_by_role("link", name=back_link_text, exact=True)
7+
8+
def __init__(self, page: Page):
9+
super().__init__(page)
10+
11+
# Locators
12+
self.org_and_site_details_link = self.page.get_by_role(
13+
"link", name="Organisation and Site Details"
14+
)
15+
self.list_all_orgs_link = self.page.get_by_role(
16+
"link", name="List All Organisations"
17+
)
18+
self.list_all_sites_link = self.page.get_by_role("link", name="List All Sites")
19+
self.surveillance_link = self.page.get_by_role(
20+
"link", name="Surveillance", exact=True
21+
)
22+
self.manage_surveillance_review_link = self.page.get_by_role(
23+
"link", name="Manage Surveillance Review"
24+
)
25+
self.surveillance_review_summary_header = self.page.get_by_text(
26+
"Surveillance Review Summary"
27+
)
28+
self.back_link = self.page.get_by_role("link", name="Back", exact=True)
2629

2730
def navigate_to_surveillance_review_summary(self):
2831
"""Navigates through multiple UI steps to reach the Surveillance Review Summary section."""
2932
self.org_and_site_details_link.click()
3033
self.list_all_orgs_link.click()
31-
self.back_button = self.page.get_by_role("link", name="Back", exact=True)
32-
self.back_button.click()
34+
self.back_link.click()
3335
self.list_all_sites_link.click()
3436
for _ in range(3):
35-
self.back_button.click()
37+
self.back_link.click()
3638
self.surveillance_link.click()
3739
self.manage_surveillance_review_link.click()

tests/regression/subject_diagnosis_date/test_subject_hub_user_national.py

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,17 @@
44
from pages.base_page import BasePage
55
from pages.alerts.alerts_page import AlertsPage
66
from pages.gfobt_test_kits.gfobt_test_kits_page import GFOBTTestKitsPage
7-
from pages.screening_practitioner_appointments.screening_practitioner_appointments_page import ScreeningPractitionerAppointmentsPage
8-
from pages.screening_subject_search.subject_screening_search_page import SubjectScreeningPage
7+
from pages.screening_practitioner_appointments.screening_practitioner_appointments_page import (
8+
ScreeningPractitionerAppointmentsPage,
9+
)
10+
from pages.screening_subject_search.subject_screening_search_page import (
11+
SubjectScreeningPage,
12+
)
913
from pages.surveillance.surveillance_summary_review_page import SurveillanceSummaryPage
1014

15+
1116
# Scenario 1
17+
@pytest.mark.wip
1218
@pytest.mark.regression
1319
@pytest.mark.hub_user_tests
1420
def test_hub_user_alerts_populated(page: Page) -> None:
@@ -25,7 +31,9 @@ def test_hub_user_alerts_populated(page: Page) -> None:
2531
alerts_page.click_refresh_alerts()
2632
expect(alerts_page.refresh_alerts_link).to_be_visible(timeout=5000)
2733

34+
2835
# Scenario 2
36+
@pytest.mark.wip
2937
@pytest.mark.regression
3038
@pytest.mark.hub_user_tests
3139
def test_hub_user_kits_logged_not_read_report(page: Page) -> None:
@@ -42,7 +50,9 @@ def test_hub_user_kits_logged_not_read_report(page: Page) -> None:
4250
test_kits_page.open_test_kits_report()
4351
expect(test_kits_page.test_kits_header).to_be_visible(timeout=5000)
4452

53+
4554
# Scenario 3
55+
@pytest.mark.wip
4656
@pytest.mark.regression
4757
@pytest.mark.hub_user_tests
4858
def test_hub_user_people_requiring_colonoscopy_assessment_report(page: Page) -> None:
@@ -59,7 +69,9 @@ def test_hub_user_people_requiring_colonoscopy_assessment_report(page: Page) ->
5969
appointments_page.open_appointments_report()
6070
expect(appointments_page.appointments_header).to_be_visible(timeout=5000)
6171

72+
6273
# Scenario 4
74+
@pytest.mark.wip
6375
@pytest.mark.regression
6476
@pytest.mark.hub_user_tests
6577
def test_screening_centre_user_subject_search_and_summary(page: Page) -> None:
@@ -74,9 +86,13 @@ def test_screening_centre_user_subject_search_and_summary(page: Page) -> None:
7486
# Step 2: Use POM for subject search
7587
search_page = SubjectScreeningPage(page)
7688
"""screening_status=4004 value represents 'Recall' & episode_status=2 value represents 'Closed'"""
77-
search_page.search_subject_with_args(surname="A*", forename="A*", screening_status="4004", episode_status="2")
89+
search_page.search_subject_with_args(
90+
surname="A*", forename="A*", screening_status="4004", episode_status="2"
91+
)
92+
7893

7994
# Scenario 5
95+
@pytest.mark.wip
8096
@pytest.mark.regression
8197
@pytest.mark.hub_user_tests
8298
def test_screening_centre_user_subject_search_and_surveillance(page: Page) -> None:
@@ -89,15 +105,6 @@ def test_screening_centre_user_subject_search_and_surveillance(page: Page) -> No
89105
BasePage(page).go_to_organisations_page()
90106

91107
# Step 2: Use POM for navigation and assertion
92-
sur_page = SurveillanceSummaryPage(
93-
page,
94-
org_and_site_details_link_text="Organisation and Site Details",
95-
list_all_orgs_link_text="List All Organisations",
96-
list_all_sites_link_text="List All Sites",
97-
surveillance_link_text="Surveillance",
98-
manage_surveillance_review_link_text="Manage Surveillance Review",
99-
surveillance_review_summary_header_text="Surveillance Review Summary"
100-
)
108+
sur_page = SurveillanceSummaryPage(page)
101109
sur_page.navigate_to_surveillance_review_summary()
102110
expect(sur_page.surveillance_review_summary_header).to_be_visible(timeout=5000)
103-

0 commit comments

Comments
 (0)