Skip to content

Commit faa5114

Browse files
committed
Refactoring, added pom for reports and added more reports test coverage
1 parent 6c54e3c commit faa5114

18 files changed

+512
-87
lines changed

pages/bcss_home_page.py

Lines changed: 55 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33

44
class BcssHomePage:
5-
65
def __init__(self, page: Page):
76
self.page = page
7+
# Homepage links
88
self.sub_menu_link = self.page.get_by_role("link", name="Show Sub-menu")
99
self.hide_sub_menu_link = self.page.get_by_role("link", name="Hide Sub-menu")
1010
self.select_org_link = self.page.get_by_role("link", name="Select Org")
@@ -14,7 +14,6 @@ def __init__(self, page: Page):
1414
self.user_guide_link = self.page.get_by_role("link", name="User guide")
1515
self.help_link = self.page.get_by_role("link", name="Help")
1616

17-
1817
def click_sub_menu_link(self):
1918
self.sub_menu_link.click()
2019

@@ -38,3 +37,57 @@ def click_user_guide_link(self):
3837

3938
def click_help_link(self):
4039
self.help_link.click()
40+
41+
42+
class MainMenu:
43+
def __init__(self, page: Page):
44+
self.page = page
45+
# Main menu - page links
46+
self.contacts_list_page = self.page.get_by_role("link", name="Contacts List")
47+
self.bowel_scope_page = self.page.get_by_role("link", name="Bowel Scope")
48+
self.call_and_recall_page = self.page.get_by_role("link", name="Call and Recall")
49+
self.communications_production_page = self.page.get_by_role("link", name="Communications Production")
50+
self.download_page = self.page.get_by_role("link", name="Download")
51+
self.fit_test_kits_page = self.page.get_by_role("link", name="FIT Test Kits")
52+
self.gfob_test_kits_page = self.page.get_by_role("link", name="gFOBT Test Kits")
53+
self.lynch_surveillance_page = self.page.get_by_role("link", name="Lynch Surveillance")
54+
self.organisations_page = self.page.get_by_role("link", name="Organisations")
55+
self.reports_page = self.page.get_by_role("link", name="Reports")
56+
self.screening_practitioner_appointments_page = self.page.get_by_role("link", name="Screening Practitioner")
57+
self.screening_subject_search_page = self.page.get_by_role("link", name="Screening Subject Search")
58+
59+
def go_to_contacts_list_page(self):
60+
self.contacts_list_page.click()
61+
62+
def go_to_bowel_scope_page(self):
63+
self.bowel_scope_page.click()
64+
65+
def go_to_call_and_recall_page(self):
66+
self.call_and_recall_page.click()
67+
68+
def go_to_communications_production_page(self):
69+
self.communications_production_page.click()
70+
71+
def go_to_download_page(self):
72+
self.download_page.click()
73+
74+
def go_to_fit_test_kits_page(self):
75+
self.fit_test_kits_page.click()
76+
77+
def go_to_gfob_test_kits_page(self):
78+
self.gfob_test_kits_page.click()
79+
80+
def go_to_lynch_surveillance_page(self):
81+
self.lynch_surveillance_page.click()
82+
83+
def go_to_organisations_page(self):
84+
self.organisations_page.click()
85+
86+
def go_to_reports_page(self):
87+
self.reports_page.click()
88+
89+
def go_to_screening_practitioner_appointments_page(self):
90+
self.screening_practitioner_appointments_page.click()
91+
92+
def go_to_screening_subject_search_page(self):
93+
self.screening_subject_search_page.click()

pages/login.py renamed to pages/login_page.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
from playwright.sync_api import Page, expect
1+
from playwright.sync_api import Page
2+
3+
24
class BcssLoginPage:
35

46
def __init__(self, page: Page):

pages/reports_page.py

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
from datetime import datetime
2+
from utils import date_time_utils
3+
from playwright.sync_api import Page
4+
5+
6+
class ReportsPageUtils:
7+
def __init__(self):
8+
pass
9+
10+
11+
# Timestamp Date Formatting
12+
def report_timestamp_date_format() -> str:
13+
"""Gets the current date time and converts it to the timestamp format used on the report pages
14+
15+
Returns:
16+
date report last requested (str): The current datetime in the "date report last requested" timestamp format.
17+
18+
"""
19+
dtu = date_time_utils.DateTimeUtils
20+
return dtu.format_date(datetime.now(), "%d/%m/%Y" + " at " + "%H:%M:%S")
21+
22+
23+
def fobt_kits_logged_but_not_read_report_timestamp_date_format() -> str:
24+
"""Gets the current date time and converts it to the timestamp format used on the fobt_kits_logged_but_not_read report page
25+
26+
Returns:
27+
fobt_kits_logged_but_not_read timestamp (str): The current datetime in the "fobt_kits_logged_but_not_read report" timestamp format.
28+
29+
"""
30+
dtu = date_time_utils.DateTimeUtils
31+
return dtu.format_date(datetime.now(), "%d %b %Y %H:%M:%S")
32+
33+
34+
def screening_practitioner_appointments_report_timestamp_date_format() -> str:
35+
"""Gets the current date time and converts it to the timestamp format used on the screening practitioner appointments report page
36+
37+
Returns:
38+
screening practitioner appointments timestamp (str): The current datetime in the "screening practitioner appointments report" timestamp format.
39+
40+
"""
41+
dtu = date_time_utils.DateTimeUtils
42+
return dtu.format_date(datetime.now(), "%d.%m.%Y" + " at " + "%H:%M:%S")
43+
44+
45+
# Reports page main menu links
46+
def go_to_failsafe_reports_page(page: Page) -> None:
47+
page.get_by_role("link", name="Failsafe Reports").click()
48+
49+
50+
def go_to_operational_reports_page(page: Page) -> None:
51+
page.get_by_role("link", name="Operational Reports").click()
52+
53+
54+
def go_to_strategic_reports_page(page: Page) -> None:
55+
page.get_by_role("link", name="Strategic Reports").click()
56+
57+
58+
def go_to_cancer_waiting_times_reports_page(page: Page) -> None:
59+
page.get_by_role("link", name="Cancer Waiting Times Reports").click()
60+
61+
62+
def go_to_dashboard(page: Page) -> None:
63+
page.get_by_role("link", name="Dashboard").click()
64+
65+
66+
# Failsafe Reports menu links
67+
def go_to_date_report_last_requested_page(page: Page) -> None:
68+
page.get_by_role("link", name="Date Report Last Requested").click()
69+
70+
71+
def go_to_screening_subjects_with_inactive_open_episode_link_page(page: Page) -> None:
72+
page.get_by_role("link", name="Screening Subjects With").click()
73+
74+
75+
def go_to_subjects_ceased_due_to_date_of_birth_changes_page(page: Page) -> None:
76+
page.get_by_role("link", name="Subjects Ceased Due to Date").click()
77+
78+
79+
def go_to_allocate_sc_for_patient_movements_within_hub_boundaries_page(page: Page) -> None:
80+
page.get_by_role("link", name="Allocate SC for Patient Movements within Hub Boundaries").click()
81+
82+
83+
def go_to_allocate_sc_for_patient_movements_into_your_hub_page(page: Page) -> None:
84+
page.get_by_role("link", name="Allocate SC for Patient Movements into your Hub").click()
85+
86+
87+
def go_to_identify_and_link_new_gp_page(page: Page) -> None:
88+
page.get_by_role("link", name="Identify and link new GP").click()
89+
90+
91+
# Operational Reports menu links
92+
def go_to_appointment_attendance_not_updated_page(page: Page) -> None:
93+
page.get_by_role("link", name="Appointment Attendance Not").click()
94+
95+
96+
def go_to_fobt_kits_logged_but_not_read_page(page: Page) -> None:
97+
page.get_by_role("link", name="FOBT Kits Logged but Not Read").click()
98+
99+
100+
def go_to_demographic_update_inconsistent_with_manual_update_page(page: Page) -> None:
101+
page.get_by_role("link", name="Demographic Update").click()
102+
103+
104+
def go_to_screening_practitioner_6_weeks_availability_not_set_up_report_page(page: Page) -> None:
105+
page.get_by_role("link", name="Screening Practitioner 6").click()
106+
107+
108+
def go_to_screening_practitioner_appointments_page(page: Page) -> None:
109+
page.get_by_role("link", name="Screening Practitioner Appointments").click()

tests/test_bowel_scope_page.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
import pytest
22
from playwright.sync_api import Page, expect
3-
from pages.login import BcssLoginPage
3+
4+
from pages.bcss_home_page import MainMenu
5+
from pages.login_page import BcssLoginPage
46

57

68
@pytest.fixture(scope="function", autouse=True)
79
def before_each(page: Page):
810
# Log in to BCSS
9-
login_page = BcssLoginPage(page)
10-
login_page.login_as_user_bcss401()
11+
BcssLoginPage(page).login_as_user_bcss401()
1112

1213
# Go to bowel scope page
13-
page.get_by_role("link", name="Bowel Scope").click()
14-
expect(page.locator("#ntshPageTitle")).to_contain_text("Bowel Scope")
15-
14+
MainMenu(page).go_to_bowel_scope_page()
1615

1716
@pytest.mark.smoke
1817
def test_bowel_scope_page_navigation(page: Page) -> None:

tests/test_call_and_recall_page.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
import pytest
22
from playwright.sync_api import Page, expect
3-
from pages.login import BcssLoginPage
3+
4+
from pages.bcss_home_page import MainMenu
5+
from pages.login_page import BcssLoginPage
46

57

68
@pytest.fixture(scope="function", autouse=True)
79
def before_each(page: Page):
810
# Log in to BCSS
9-
login_page = BcssLoginPage(page)
10-
login_page.login_as_user_bcss401()
11+
BcssLoginPage(page).login_as_user_bcss401()
1112

1213
# Go to call and recall page
13-
page.get_by_role("link", name="Call and Recall").click()
14-
expect(page.locator("#ntshPageTitle")).to_contain_text("Call and Recall")
14+
MainMenu(page).go_to_call_and_recall_page()
1515

1616

1717
@pytest.mark.smoke

tests/test_communications_production_page.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
import pytest
22
from playwright.sync_api import Page, expect
3-
from pages.login import BcssLoginPage
3+
from pages.login_page import BcssLoginPage
4+
from pages.bcss_home_page import MainMenu
45

56

67
@pytest.fixture(scope="function", autouse=True)
78
def before_each(page: Page):
89
# Log in to BCSS
9-
login_page = BcssLoginPage(page)
10-
login_page.login_as_user_bcss401()
10+
BcssLoginPage(page).login_as_user_bcss401()
1111

1212
# Go to communications production page
13-
page.get_by_role("link", name="Communications Production").click()
14-
13+
MainMenu(page).go_to_communications_production_page()
1514

1615
@pytest.mark.smoke
1716
def test_communications_production_page_navigation(page: Page) -> None:

tests/test_contacts_list_page.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
import pytest
22
from playwright.sync_api import Page, expect
3-
from pages.login import BcssLoginPage
3+
4+
from pages.bcss_home_page import MainMenu
5+
from pages.login_page import BcssLoginPage
46

57

68
@pytest.fixture(scope="function", autouse=True)
79
def before_each(page: Page):
810
# Log in to BCSS
9-
login_page = BcssLoginPage(page)
10-
login_page.login_as_user_bcss401()
11+
BcssLoginPage(page).login_as_user_bcss401()
1112

1213
# Go to contacts list page
13-
page.get_by_role("link", name="Contacts List").click()
14+
MainMenu(page).go_to_contacts_list_page()
1415

1516

1617
@pytest.mark.smoke

tests/test_download_page.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
import pytest
22
from playwright.sync_api import Page, expect
3-
from pages.login import BcssLoginPage
3+
4+
from pages.bcss_home_page import MainMenu
5+
from pages.login_page import BcssLoginPage
46

57

68
@pytest.fixture(scope="function", autouse=True)
79
def before_each(page: Page):
810
# Log in to BCSS
9-
login_page = BcssLoginPage(page)
10-
login_page.login_as_user_bcss401()
11+
BcssLoginPage(page).login_as_user_bcss401()
1112

1213
# Go to download page
13-
page.get_by_role("link", name="Download").click()
14+
MainMenu(page).go_to_download_page()
1415

1516

1617
@pytest.mark.smoke

tests/test_fit_test_kits_page.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
import pytest
22
from playwright.sync_api import Page, expect
3-
from pages.login import BcssLoginPage
3+
4+
from pages.bcss_home_page import MainMenu
5+
from pages.login_page import BcssLoginPage
46

57

68
@pytest.fixture(scope="function", autouse=True)
79
def before_each(page: Page):
810
# Log in to BCSS
9-
login_page = BcssLoginPage(page)
10-
login_page.login_as_user_bcss401()
11+
BcssLoginPage(page).login_as_user_bcss401()
1112

1213
# Go to fit test kits page
13-
page.get_by_role("link", name="FIT Test Kits").click()
14+
MainMenu(page).go_to_fit_test_kits_page()
1415

1516

1617
@pytest.mark.smoke

tests/test_gfobt_test_kits_page.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
import pytest
22
from playwright.sync_api import Page, expect
3-
from pages.login import BcssLoginPage
3+
4+
from pages.bcss_home_page import MainMenu
5+
from pages.login_page import BcssLoginPage
46

57

68
@pytest.fixture(scope="function", autouse=True)
79
def before_each(page: Page):
810
# Log in to BCSS
9-
login_page = BcssLoginPage(page)
10-
login_page.login_as_user_bcss401()
11+
BcssLoginPage(page).login_as_user_bcss401()
1112

1213
# Go to gFOBT test kits page
13-
page.get_by_role("link", name="gFOBT Test Kits").click()
14+
MainMenu(page).go_to_gfob_test_kits_page()
1415

1516

1617
@pytest.mark.smoke

0 commit comments

Comments
 (0)