Skip to content

Commit 0c8b6a5

Browse files
authored
Merge pull request #999 from NHSDigital/click-secondary-navigation-item
Add `click_secondary_navigation_item`
2 parents 2cf889a + 788bc12 commit 0c8b6a5

File tree

8 files changed

+53
-59
lines changed

8 files changed

+53
-59
lines changed

mavis/test/pages/children/child_record_page.py

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from mavis.test.annotations import step
66
from mavis.test.constants import Programme
77
from mavis.test.pages.header_component import HeaderComponent
8-
from mavis.test.utils import get_todays_date
8+
from mavis.test.utils import click_secondary_navigation_item, get_todays_date
99

1010

1111
class ChildRecordPage:
@@ -33,17 +33,12 @@ def __init__(self, page: Page) -> None:
3333

3434
@step("Click on Child record")
3535
def click_child_record(self) -> None:
36-
self._click_tab(self.child_record_link)
36+
click_secondary_navigation_item(self.child_record_link)
3737

3838
@step("Click on {1}")
3939
def click_programme(self, programme: Programme) -> None:
4040
link = self.secondary_menu.get_by_role("link", name=str(programme))
41-
self._click_tab(link)
42-
43-
def _click_tab(self, link: Locator) -> None:
44-
link.click()
45-
link.get_by_role("strong").wait_for()
46-
self.page.wait_for_load_state()
41+
click_secondary_navigation_item(link)
4742

4843
@step("Click on Edit child record")
4944
def click_edit_child_record(self) -> None:

mavis/test/pages/imports/import_records_wizard_page.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@
99
from mavis.test.data.file_mappings import ImportFormatDetails
1010
from mavis.test.data_models import Child
1111
from mavis.test.pages.header_component import HeaderComponent
12-
from mavis.test.utils import reload_until_element_is_visible
12+
from mavis.test.utils import (
13+
click_secondary_navigation_item,
14+
reload_until_element_is_visible,
15+
)
1316

1417

1518
class ImportRecordsWizardPage:
@@ -274,8 +277,7 @@ def click_import_link(self, file_path: Path) -> None:
274277
self.page.wait_for_load_state()
275278

276279
if not import_link.is_visible():
277-
self.completed_imports_tab.click()
278-
self.completed_imports_tab.get_by_role("strong").wait_for()
280+
click_secondary_navigation_item(self.completed_imports_tab)
279281

280282
import_link.click()
281283
self.page.wait_for_load_state()

mavis/test/pages/reports/reports_tabs.py

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

33
from mavis.test.annotations import step
4+
from mavis.test.utils import click_secondary_navigation_item
45

56

67
class ReportsTabs:
@@ -15,10 +16,8 @@ def __init__(self, page: Page) -> None:
1516

1617
@step("Click on Vaccinations tab")
1718
def click_vaccinations_tab(self) -> None:
18-
self.vaccinations_tab.click()
19-
self.vaccinations_tab.get_by_role("strong").wait_for()
19+
click_secondary_navigation_item(self.vaccinations_tab)
2020

2121
@step("Click on Download Data tab")
2222
def click_download_data_tab(self) -> None:
23-
self.download_data_tab.click()
24-
self.download_data_tab.get_by_role("strong").wait_for()
23+
click_secondary_navigation_item(self.download_data_tab)
Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,22 @@
11
from playwright.sync_api import Page
22

33
from mavis.test.annotations import step
4+
from mavis.test.utils import click_secondary_navigation_item
45

56

67
class SchoolsTabs:
7-
def __init__(
8-
self,
9-
page: Page,
10-
) -> None:
8+
def __init__(self, page: Page) -> None:
119
self.page = page
1210

13-
def _select_tab(self, name: str) -> None:
14-
link = self.page.get_by_label("Secondary menu").get_by_role("link", name=name)
15-
if link.get_by_role("strong").is_visible():
16-
return
17-
link.click()
18-
link.get_by_role("strong").wait_for()
11+
secondary_menu = page.get_by_label("Secondary menu")
12+
13+
self.sessions_link = secondary_menu.get_by_role("link", name="Sessions")
14+
self.children_link = secondary_menu.get_by_role("link", name="Children")
1915

2016
@step("Click on Sessions tab")
2117
def click_sessions_tab(self) -> None:
22-
self._select_tab("Sessions")
18+
click_secondary_navigation_item(self.sessions_link)
2319

2420
@step("Click on Children tab")
2521
def click_children_tab(self) -> None:
26-
self._select_tab("Children")
22+
click_secondary_navigation_item(self.children_link)

mavis/test/pages/sessions/sessions_patient_page.py

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
)
1818
from mavis.test.pages.header_component import HeaderComponent
1919
from mavis.test.utils import (
20+
click_secondary_navigation_item,
2021
expect_alert_text,
2122
expect_details,
2223
reload_until_element_is_visible,
@@ -109,17 +110,11 @@ def __init__(self, page: Page) -> None:
109110
"link", name="Record as already vaccinated"
110111
)
111112

112-
def _select_tab(self, name: str) -> None:
113-
link = self.page.get_by_label("Secondary menu").get_by_role("link", name=name)
114-
if link.get_by_role("strong").is_visible():
115-
return
116-
link.click()
117-
link.get_by_role("strong").wait_for()
118-
119113
@step("Click on {1} tab")
120114
def click_programme_tab(self, programme: Programme) -> None:
121-
tab_name = "MMR" if programme is Programme.MMR else str(programme)
122-
self._select_tab(tab_name)
115+
name = "MMR" if programme is Programme.MMR else str(programme)
116+
link = self.page.get_by_label("Secondary menu").get_by_role("link", name=name)
117+
click_secondary_navigation_item(link)
123118

124119
@step("Click on Update triage outcome")
125120
def click_update_triage_outcome(self) -> None:
@@ -319,4 +314,7 @@ def set_up_vaccination(
319314

320315
@step("Click on Session activity and notes tab")
321316
def click_session_activity_and_notes(self) -> None:
322-
self._select_tab("Session activity and notes")
317+
link = self.page.get_by_label("Secondary menu").get_by_role(
318+
"link", name="Session activity and notes"
319+
)
320+
click_secondary_navigation_item(link)
Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,34 @@
11
from playwright.sync_api import Page
22

33
from mavis.test.annotations import step
4+
from mavis.test.utils import click_secondary_navigation_item
45

56

67
class SessionsTabs:
7-
def __init__(
8-
self,
9-
page: Page,
10-
) -> None:
8+
def __init__(self, page: Page) -> None:
119
self.page = page
1210

13-
def _select_tab(self, name: str) -> None:
14-
link = self.page.get_by_label("Secondary menu").get_by_role("link", name=name)
15-
if link.get_by_role("strong").is_visible():
16-
return
17-
link.click()
18-
link.get_by_role("strong").wait_for()
11+
secondary_menu = page.get_by_label("Secondary menu")
12+
13+
self.overview_link = secondary_menu.get_by_role("link", name="Overview")
14+
self.psds_link = secondary_menu.get_by_role("link", name="PSDs")
15+
self.record_vaccinations_link = secondary_menu.get_by_role(
16+
"link", name="Record vaccinations"
17+
)
18+
self.children_link = secondary_menu.get_by_role("link", name="Children")
1919

2020
@step("Click on Overview tab")
2121
def click_overview_tab(self) -> None:
22-
self._select_tab("Overview")
22+
click_secondary_navigation_item(self.overview_link)
2323

2424
@step("Click on PSDs tab")
2525
def click_psds_tab(self) -> None:
26-
self._select_tab("PSDs")
26+
click_secondary_navigation_item(self.psds_link)
2727

2828
@step("Click on Record vaccinations")
2929
def click_record_vaccinations_tab(self) -> None:
30-
self._select_tab("Record vaccinations")
30+
click_secondary_navigation_item(self.record_vaccinations_link)
3131

3232
@step("Click on Children tab")
3333
def click_children_tab(self) -> None:
34-
self._select_tab("Children")
34+
click_secondary_navigation_item(self.children_link)

mavis/test/pages/team/team_links_component.py

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

33
from mavis.test.annotations import step
4+
from mavis.test.utils import click_secondary_navigation_item
45

56

67
class TeamLinksComponent:
@@ -18,20 +19,16 @@ def __init__(self, page: Page) -> None:
1819

1920
@step("Click on Contact details")
2021
def click_contact_details(self) -> None:
21-
self.contact_details_link.click()
22-
self.contact_details_link.get_by_role("strong").wait_for()
22+
click_secondary_navigation_item(self.contact_details_link)
2323

2424
@step("Click on Schools")
2525
def click_schools(self) -> None:
26-
self.schools_link.click()
27-
self.schools_link.get_by_role("strong").wait_for()
26+
click_secondary_navigation_item(self.schools_link)
2827

2928
@step("Click on Clinics")
3029
def click_clinics(self) -> None:
31-
self.clinics_link.click()
32-
self.clinics_link.get_by_role("strong").wait_for()
30+
click_secondary_navigation_item(self.clinics_link)
3331

3432
@step("Click on Sessions")
3533
def click_sessions(self) -> None:
36-
self.sessions_link.click()
37-
self.sessions_link.get_by_role("strong").wait_for()
34+
click_secondary_navigation_item(self.sessions_link)

mavis/test/utils.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,3 +232,10 @@ def expect_details(page: Page, key: str, value: str) -> None:
232232
detail_value = detail_key.locator("xpath=following-sibling::*[1]")
233233

234234
expect(detail_value).to_contain_text(value)
235+
236+
237+
def click_secondary_navigation_item(link: Locator) -> None:
238+
if link.get_by_role("strong").is_visible():
239+
return
240+
link.click()
241+
link.get_by_role("strong").wait_for()

0 commit comments

Comments
 (0)