Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 8 additions & 11 deletions mavis/test/fixtures/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ def wrapper(vaccine: Vaccine, batch_name: str = "ABC123"):
vaccines_page.navigate()
vaccines_page.click_add_batch(vaccine)
add_batch_page.fill_name(batch_name)
add_batch_page.fill_expiry_date(get_offset_date(1))
add_batch_page.date.fill_expiry_date(get_offset_date(1))
add_batch_page.confirm()
return batch_name

Expand Down Expand Up @@ -163,7 +163,7 @@ def wrapper(
msg = "Update upload_offline_vaccination to handle programme"
raise ValueError(msg)

dashboard_page.click_mavis()
dashboard_page.navigate()
dashboard_page.click_sessions()
sessions_search_page.click_session_for_programme_group(school, programme.group)
if not sessions_overview_page.is_date_scheduled(get_offset_date(0)):
Expand All @@ -177,23 +177,20 @@ def wrapper(
child.year_group,
programme.group,
)
dashboard_page.click_mavis()
dashboard_page.click_sessions()
imports_page.header.click_sessions_header()
sessions_search_page.click_session_for_programme_group(school, programme)
session_id = sessions_overview_page.get_session_id_from_offline_excel()
dashboard_page.click_mavis()
dashboard_page.click_imports()
sessions_overview_page.header.click_imports_header()
imports_page.click_upload_records()
import_records_wizard_page.navigate_to_vaccination_records_import()
import_records_wizard_page.upload_and_verify_output(
file_mapping=vaccs_file,
session_id=session_id,
programme_group=programme.group,
)
dashboard_page.click_mavis()
dashboard_page.click_programmes()
imports_page.header.click_programmes_header()
programmes_list_page.click_programme_for_current_year(programme)
programme_overview_page.click_children_tab()
programme_overview_page.tabs.click_children_tab()
programme_children_page.search_for_child(child)
programme_children_page.click_child(child)
child_record_page.click_vaccination_details(programme)
Expand All @@ -210,6 +207,7 @@ def setup_session_and_batches_with_fixed_child(
sessions_search_page,
sessions_overview_page,
import_records_wizard_page,
imports_page,
children,
log_in_page,
nurse,
Expand All @@ -227,8 +225,7 @@ def _setup(programme_group):
for vaccine in Vaccine
if vaccine.programme.group == programme_group
}
dashboard_page.click_mavis()
dashboard_page.click_sessions()
imports_page.header.click_sessions_header()
sessions_search_page.click_session_for_programme_group(
school, programme_group
)
Expand Down
4 changes: 2 additions & 2 deletions mavis/test/fixtures/pages.py
Original file line number Diff line number Diff line change
Expand Up @@ -168,8 +168,8 @@ def programmes_list_page(page: Page) -> ProgrammesListPage:


@pytest.fixture
def programme_overview_page(page: Page, test_data: TestData) -> ProgrammeOverviewPage:
return ProgrammeOverviewPage(page, test_data)
def programme_overview_page(page: Page) -> ProgrammeOverviewPage:
return ProgrammeOverviewPage(page)


@pytest.fixture
Expand Down
21 changes: 16 additions & 5 deletions mavis/test/pages/children.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,14 @@
from mavis.test.annotations import step
from mavis.test.data import create_child_list_from_file
from mavis.test.models import Child, Programme, School
from mavis.test.pages.header import HeaderComponent
from mavis.test.utils import get_current_datetime, reload_until_element_is_visible


class ChildrenSearchPage:
def __init__(self, page: Page) -> None:
self.page = page
self.header = HeaderComponent(page)

self.children_heading = self.page.get_by_role(
"heading",
Expand Down Expand Up @@ -117,7 +119,7 @@ def check_children_aged_out_of_programmes(self) -> None:
self.children_aged_out_of_programmes_checkbox.check()


class ChildRecordTabsMixin:
class ChildRecordTabs:
def __init__(self, page: Page) -> None:
self.page = page
self.child_record_tab = page.get_by_role("link", name="Child record")
Expand All @@ -129,9 +131,11 @@ def click_activity_log(self) -> None:
self.activity_log_tab.get_by_role("strong").wait_for()


class ChildRecordPage(ChildRecordTabsMixin):
class ChildRecordPage:
def __init__(self, page: Page) -> None:
super().__init__(page)
self.page = page
self.tabs = ChildRecordTabs(page)
self.header = HeaderComponent(page)

vaccinations_card = page.locator("section").filter(
has=page.get_by_role("heading", name="Vaccinations"),
Expand Down Expand Up @@ -209,6 +213,8 @@ def check_child_is_unarchived(self) -> None:
class ChildEditPage:
def __init__(self, page: Page) -> None:
self.page = page
self.header = HeaderComponent(page)

self.change_nhs_no_link = self.page.get_by_role(
"link",
name="Change NHS number",
Expand All @@ -231,6 +237,8 @@ def fill_nhs_no_for_child(self, child: Child, nhs_no: str) -> None:
class ChildArchivePage:
def __init__(self, page: Page) -> None:
self.page = page
self.header = HeaderComponent(page)

self.imported_in_error_radio = self.page.get_by_role(
"radio",
name="It was imported in error",
Expand Down Expand Up @@ -270,9 +278,12 @@ def archive_child_record(self) -> None:
expect(self.page.get_by_text("Archive reason")).to_be_visible()


class ChildActivityLogPage(ChildRecordTabsMixin):
class ChildActivityLogPage:
def __init__(self, page: Page) -> None:
super().__init__(page)
self.page = page
self.tabs = ChildRecordTabs(page)
self.header = HeaderComponent(page)

self.manually_matched_card = self.page.get_by_text(
"Consent response manually matched with child record",
)
Expand Down
11 changes: 11 additions & 0 deletions mavis/test/pages/consent_responses.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,15 @@

from mavis.test.annotations import step
from mavis.test.models import Child, Relationship
from mavis.test.pages.header import HeaderComponent
from mavis.test.utils import reload_until_element_is_visible


class UnmatchedConsentResponsesPage:
def __init__(self, page: Page) -> None:
self.page = page
self.header = HeaderComponent(page)

self.rows = page.get_by_role("row")
self.empty_paragraph = page.get_by_text(
"There are currently no unmatched consent responses.",
Expand Down Expand Up @@ -42,6 +45,8 @@ def check_response_for_child_not_visible(self, child: Child) -> None:
class ConsentResponsePage:
def __init__(self, page: Page) -> None:
self.page = page
self.header = HeaderComponent(page)

self.archive_link = page.get_by_role("link", name="Archive", exact=True)
self.create_new_record_link = page.get_by_role(
"link",
Expand All @@ -66,6 +71,8 @@ def click_match(self) -> None:
class ArchiveConsentResponsePage:
def __init__(self, page: Page) -> None:
self.page = page
self.header = HeaderComponent(page)

self.notes_textbox = page.get_by_role("textbox", name="Notes")
self.archive_button = page.get_by_role("button", name="Archive")

Expand All @@ -78,6 +85,8 @@ def archive(self, notes: str) -> None:
class CreateNewRecordConsentResponsePage:
def __init__(self, page: Page) -> None:
self.page = page
self.header = HeaderComponent(page)

self.create_new_record_button = page.get_by_role(
"button",
name="Create a new record from response",
Expand All @@ -91,6 +100,8 @@ def create_new_record(self) -> None:
class MatchConsentResponsePage:
def __init__(self, page: Page) -> None:
self.page = page
self.header = HeaderComponent(page)

self.search_textbox = page.get_by_role("textbox", name="Search")
self.search_button = page.get_by_role("button", name="Search")
self.link_button = page.get_by_role("button", name="Link response with record")
Expand Down
11 changes: 2 additions & 9 deletions mavis/test/pages/dashboard.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
from playwright.sync_api import Page

from mavis.test.annotations import step
from mavis.test.pages.header import HeaderComponent


class DashboardPage:
def __init__(self, page: Page) -> None:
self.page = page

self.mavis_link = page.get_by_role(
"link",
name="Manage vaccinations in schools",
)
self.header = HeaderComponent(page)

links = page.get_by_role("main").get_by_role("listitem").get_by_role("link")

Expand All @@ -26,10 +23,6 @@ def __init__(self, page: Page) -> None:
self.your_team_link = links.get_by_text("Your Team")
self.service_guidance_link = links.get_by_text("Service Guidance")

@step("Click on Manage vaccinations in schools")
def click_mavis(self) -> None:
self.mavis_link.click()

@step("Click on Programmes")
def click_programmes(self) -> None:
self.programmes_link.click()
Expand Down
63 changes: 63 additions & 0 deletions mavis/test/pages/header.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
from playwright.sync_api import Page

from mavis.test.annotations import step


class HeaderComponent:
def __init__(self, page: Page) -> None:
self.page = page

self.mavis_link = page.get_by_role(
"link",
name="Manage vaccinations in schools",
)

links = page.get_by_label("Menu", exact=True)

self.programmes_link = links.get_by_role("link", name="Programmes")
self.sessions_link = links.get_by_role("link", name="Sessions")
self.children_link = links.get_by_role("link", name="Children")
self.vaccines_link = links.get_by_role("link", name="Vaccines")
self.unmatched_consent_responses_link = links.get_by_role(
"link",
name="Unmatched Responses",
)
self.school_moves_link = links.get_by_role("link", name="School Moves")
self.import_records_link = links.get_by_role("link", name="Imports")
self.your_team_link = links.get_by_role("link", name="Your Team")

@step("Click on Manage vaccinations in schools")
def click_mavis_header(self) -> None:
self.mavis_link.click()

@step("Click on Programmes")
def click_programmes_header(self) -> None:
self.programmes_link.click()

@step("Click on Sessions")
def click_sessions_header(self) -> None:
self.sessions_link.click()

@step("Click on Children")
def click_children_header(self) -> None:
self.children_link.click()

@step("Click on Vaccines")
def click_vaccines_header(self) -> None:
self.vaccines_link.click()

@step("Click on Consent Responses")
def click_consent_responses_header(self) -> None:
self.unmatched_consent_responses_link.click()

@step("Click on School Moves")
def click_school_moves_header(self) -> None:
self.school_moves_link.click()

@step("Click on Imports")
def click_imports_header(self) -> None:
self.import_records_link.click()

@step("Click on Your Team")
def click_your_team_header(self) -> None:
self.your_team_link.click()
6 changes: 5 additions & 1 deletion mavis/test/pages/import_records.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from mavis.test.annotations import step
from mavis.test.data import FileMapping, TestData, read_scenario_list_from_file
from mavis.test.models import Programme
from mavis.test.pages.header import HeaderComponent
from mavis.test.utils import (
format_datetime_for_upload_link,
get_current_datetime,
Expand All @@ -20,8 +21,9 @@ def __init__(
page: Page,
test_data: TestData,
) -> None:
self.test_data = test_data
self.page = page
self.test_data = test_data
self.header = HeaderComponent(page)

self.alert_success = self.page.get_by_text("Import processing started")
self.completed_tag = self.page.get_by_role("strong").get_by_text("Completed")
Expand Down Expand Up @@ -252,6 +254,8 @@ def __init__(
page: Page,
) -> None:
self.page = page
self.header = HeaderComponent(page)

self.upload_button = self.page.get_by_role(
"button",
name="Upload records",
Expand Down
3 changes: 3 additions & 0 deletions mavis/test/pages/log_in.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

from mavis.test.annotations import step
from mavis.test.models import Organisation, Team, User
from mavis.test.pages.header import HeaderComponent
from mavis.test.utils import get_current_datetime


Expand Down Expand Up @@ -116,6 +117,8 @@ def log_in_and_choose_team_if_necessary(self, user: User, team: Team) -> None:
class LogOutPage:
def __init__(self, page: Page) -> None:
self.page = page
self.header = HeaderComponent(page)

self.log_out_button = page.locator("#main-content").get_by_role(
"button", name="Log out"
)
Expand Down
4 changes: 4 additions & 0 deletions mavis/test/pages/nurse_consent.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,14 @@
Parent,
Programme,
)
from mavis.test.pages.header import HeaderComponent
from mavis.test.utils import expect_alert_text, generate_random_string


class NurseConsentWizardPage:
def __init__(self, page: Page) -> None:
self.page = page
self.header = HeaderComponent(page)

self.yes_radio = self.page.get_by_role("radio", name="Yes", exact=True)
self.no_radio = self.page.get_by_role("radio", name="No", exact=True)
Expand Down Expand Up @@ -283,6 +285,8 @@ def give_withdraw_consent_notes(self, notes: str) -> None:
class GillickCompetencePage:
def __init__(self, page: Page) -> None:
self.page = page
self.header = HeaderComponent(page)

self.assessment_notes_textbox = self.page.get_by_role(
"textbox",
name="Assessment notes (optional)",
Expand Down
Loading