Skip to content

Commit 31e1aa8

Browse files
committed
Removed hardcoded values from Organisations page.
Added Organisations page POM Added bowel_cancer_screening_page_title_contains_text function on BasePage # Conflicts: # pages/base_page.py
1 parent f98fc85 commit 31e1aa8

File tree

3 files changed

+89
-42
lines changed

3 files changed

+89
-42
lines changed

pages/base_page.py

Lines changed: 31 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from playwright.sync_api import Page, expect
22
import logging
33

4+
45
class BasePage:
56
def __init__(self, page: Page):
67
self.page = page
@@ -32,79 +33,87 @@ def __init__(self, page: Page):
3233
self.bowel_cancer_screening_system_header = self.page.locator("#ntshAppTitle")
3334
self.main_menu__header = self.page.locator("#ntshPageTitle")
3435

35-
def click_main_menu_link(self)->None:
36+
def click_main_menu_link(self) -> None:
3637
for _ in range(3): # Try up to 3 times
3738
if self.main_menu_link.is_visible():
3839
self.click(self.main_menu_link)
3940
return # Exit if successful
4041

41-
def click_log_out_link(self)->None:
42+
def click_log_out_link(self) -> None:
4243
self.click(self.log_out_link)
4344

44-
def click_sub_menu_link(self)->None:
45+
def click_sub_menu_link(self) -> None:
4546
self.click(self.sub_menu_link)
4647

47-
def click_hide_sub_menu_link(self)->None:
48+
def click_hide_sub_menu_link(self) -> None:
4849
self.click(self.hide_sub_menu_link)
4950

50-
def click_select_org_link(self)->None:
51+
def click_select_org_link(self) -> None:
5152
self.click(self.select_org_link)
5253

53-
def click_back_button(self)->None:
54+
def click_back_button(self) -> None:
5455
self.click(self.back_button)
5556

56-
def click_release_notes_link(self)->None:
57+
def click_release_notes_link(self) -> None:
5758
self.click(self.release_notes_link)
5859

59-
def click_refresh_alerts_link(self)->None:
60+
def click_refresh_alerts_link(self) -> None:
6061
self.click(self.refresh_alerts_link)
6162

62-
def click_user_guide_link(self)->None:
63+
def click_user_guide_link(self) -> None:
6364
self.click(self.user_guide_link)
6465

65-
def click_help_link(self)->None:
66+
def click_help_link(self) -> None:
6667
self.click(self.help_link)
6768

68-
def bowel_cancer_screening_system_header_is_displayed(self)->None:
69+
def bowel_cancer_screening_system_header_is_displayed(self) -> None:
6970
expect(self.bowel_cancer_screening_system_header).to_contain_text("Bowel Cancer Screening System")
7071

7172
def main_menu_header_is_displayed(self)->None:
7273
expect(self.main_menu__header).to_contain_text("Main Menu")
7374

74-
def go_to_contacts_list_page(self)->None:
75+
def bowel_cancer_screening_page_title_contains_text(self, text: str) -> None:
76+
"""Asserts that the page title contains the specified text.
77+
78+
Args:
79+
text (str): The expected text that you want to assert for the page title ("#ntshPageTitle") element.
80+
"""
81+
expect(self.bowel_cancer_screening_page_header).to_contain_text(text)
82+
83+
def go_to_contacts_list_page(self) -> None:
7584
self.click(self.contacts_list_page)
7685

77-
def go_to_bowel_scope_page(self)->None:
86+
def go_to_bowel_scope_page(self) -> None:
7887
self.click(self.bowel_scope_page)
7988

80-
def go_to_call_and_recall_page(self)->None:
89+
def go_to_call_and_recall_page(self) -> None:
8190
self.click(self.call_and_recall_page)
8291

83-
def go_to_communications_production_page(self)->None:
92+
def go_to_communications_production_page(self) -> None:
8493
self.click(self.communications_production_page)
8594

86-
def go_to_download_page(self)->None:
95+
def go_to_download_page(self) -> None:
8796
self.click(self.download_page)
8897

89-
def go_to_fit_test_kits_page(self)->None:
98+
def go_to_fit_test_kits_page(self) -> None:
9099
self.click(self.fit_test_kits_page)
91100

92101
def go_to_gfobt_test_kits_page(self)->None:
93102
self.click(self.gfobt_test_kits_page)
94103

95-
def go_to_lynch_surveillance_page(self)->None:
104+
def go_to_lynch_surveillance_page(self) -> None:
96105
self.click(self.lynch_surveillance_page)
97106

98-
def go_to_organisations_page(self)->None:
107+
def go_to_organisations_page(self) -> None:
99108
self.click(self.organisations_page)
100109

101-
def go_to_reports_page(self)->None:
110+
def go_to_reports_page(self) -> None:
102111
self.click(self.reports_page)
103112

104-
def go_to_screening_practitioner_appointments_page(self)->None:
113+
def go_to_screening_practitioner_appointments_page(self) -> None:
105114
self.click(self.screening_practitioner_appointments_page)
106115

107-
def go_to_screening_subject_search_page(self)->None:
116+
def go_to_screening_subject_search_page(self) -> None:
108117
self.click(self.screening_subject_search_page)
109118

110119
def click(self, locator) -> None:

pages/organisations_page.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
from playwright.sync_api import Page
2+
3+
from pages.base_page import BasePage
4+
5+
6+
class OrganisationsPage(BasePage):
7+
def __init__(self, page: Page):
8+
super().__init__(page)
9+
self.page = page
10+
11+
# Organisations page links
12+
self.screening_centre_parameters_page = self.page.get_by_role("link", name="Screening Centre Parameters")
13+
self.organisation_parameters_page = self.page.get_by_role("link", name="Organisation Parameters")
14+
self.organisations_and_site_details_page = self.page.get_by_role("link", name="Organisation and Site Details")
15+
self.gp_practice_endorsement_page = self.page.get_by_role("link", name="GP Practice Endorsement")
16+
self.upload_nacs_data_bureau_page = self.page.get_by_role("link", name="Upload NACS data (Bureau)")
17+
self.bureau_page = self.page.get_by_role("link", name="Bureau")
18+
19+
def go_to_screening_centre_parameters_page(self) -> None:
20+
self.click(self.screening_centre_parameters_page)
21+
22+
def go_to_organisation_parameters_page(self) -> None:
23+
self.click(self.organisation_parameters_page)
24+
25+
def go_to_organisations_and_site_details_page(self) -> None:
26+
self.click(self.organisations_and_site_details_page)
27+
28+
def go_to_gp_practice_endorsement_page(self) -> None:
29+
self.click(self.gp_practice_endorsement_page)
30+
31+
def go_to_upload_nacs_data_bureau_page(self) -> None:
32+
self.click(self.upload_nacs_data_bureau_page)
33+
34+
def go_to_bureau_page(self) -> None:
35+
self.click(self.bureau_page)

tests/test_organisations_page.py

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import pytest
21
from sys import platform
2+
import pytest
3+
from jproperties import Properties
34
from playwright.sync_api import Page, expect
4-
from utils.click_helper import click
55
from pages.base_page import BasePage
6+
from pages.organisations_page import OrganisationsPage
67
from utils.user_tools import UserTools
7-
from jproperties import Properties
88

99

1010
@pytest.fixture
@@ -40,46 +40,49 @@ def before_each(page: Page):
4040

4141

4242
@pytest.mark.smoke
43+
@pytest.mark.only
4344
def test_organisations_page_navigation(page: Page) -> None:
45+
upload_nacs_data_bureau_link = page.get_by_text("Upload NACS data (Bureau)", exact=True)
46+
bureau_page_link = page.get_by_text("Bureau", exact=True)
4447
"""
4548
Confirms all menu items are displayed on the organisations page, and that the relevant pages
4649
are loaded when the links are clicked
4750
"""
4851
# Screening centre parameters page loads as expected
49-
click(page, page.get_by_role("link", name="Screening Centre Parameters"))
50-
expect(page.locator("#ntshPageTitle")).to_contain_text("Screening Centre Parameters")
51-
click(page, page.get_by_role("link", name="Back", exact=True))
52+
OrganisationsPage(page).go_to_screening_centre_parameters_page()
53+
BasePage(page).bowel_cancer_screening_page_title_contains_text("Screening Centre Parameters")
54+
BasePage(page).click_back_button()
5255

5356
# Organisation parameters page loads as expected
54-
click(page, page.get_by_role("link", name="Organisation Parameters"))
55-
expect(page.locator("#ntshPageTitle")).to_contain_text("System Parameters")
56-
click(page, page.get_by_role("link", name="Back", exact=True))
57+
OrganisationsPage(page).go_to_organisation_parameters_page()
58+
BasePage(page).bowel_cancer_screening_page_title_contains_text("System Parameters")
59+
BasePage(page).click_back_button()
5760

5861
# Organisation and site details page loads as expected
59-
click(page, page.get_by_role("link", name="Organisation and Site Details"))
60-
expect(page.locator("#ntshPageTitle")).to_contain_text("Organisation and Site Details")
61-
click(page, page.get_by_role("link", name="Back"))
62+
OrganisationsPage(page).go_to_organisations_and_site_details_page()
63+
BasePage(page).bowel_cancer_screening_page_title_contains_text("Organisation and Site Details")
64+
BasePage(page).click_back_button()
6265

6366
# The links below are visible (not clickable due to user role permissions)
64-
expect(page.get_by_text("Upload NACS data (Bureau)")).to_be_visible()
65-
expect(page.get_by_text("Bureau", exact=True)).to_be_visible()
67+
expect(upload_nacs_data_bureau_link).to_be_visible()
68+
expect(bureau_page_link).to_be_visible()
6669

6770
# GP practice endorsement page loads as expected
68-
click(page, page.get_by_role("link", name="GP Practice Endorsement"))
69-
expect(page.locator("#ntshPageTitle")).to_contain_text("GP Practice Endorsement")
71+
OrganisationsPage(page).go_to_gp_practice_endorsement_page()
72+
BasePage(page).bowel_cancer_screening_page_title_contains_text("GP Practice Endorsement")
7073

7174
# Return to main menu
72-
click(page, page.get_by_role("link", name="Main Menu"))
73-
expect(page.locator("#ntshPageTitle")).to_contain_text("Main Menu")
75+
BasePage(page).click_main_menu_link()
76+
BasePage(page).bowel_cancer_screening_page_title_contains_text("Main Menu")
7477

7578

7679
def test_view_an_organisations_system_parameters(page: Page, tests_properties: dict) -> None:
7780
"""
7881
Confirms that an organisation's system parameters can be accessed and viewed
7982
"""
8083
# Go to screening centre parameters page
81-
click(page, page.get_by_role("link", name="Screening Centre Parameters"))
84+
OrganisationsPage(page).go_to_screening_centre_parameters_page()
8285

8386
# View an Organisation
8487
page.get_by_role("link", name=tests_properties["screening_centre_code"]).click()
85-
expect(page.locator("#ntshPageTitle")).to_contain_text("System Parameters")
88+
BasePage(page).bowel_cancer_screening_page_title_contains_text("System Parameters")

0 commit comments

Comments
 (0)