diff --git a/mavis/test/pages/add_session_wizard_page.py b/mavis/test/pages/add_session_wizard_page.py index 0db6ad42500..1953ed1e2b5 100644 --- a/mavis/test/pages/add_session_wizard_page.py +++ b/mavis/test/pages/add_session_wizard_page.py @@ -93,24 +93,27 @@ def fill_date_fields(self, date: str) -> None: self.month_textbox.last.fill(str(month)) self.year_textbox.last.fill(str(year)) - self.click_continue() - @step("Click Keep session dates") def click_keep_session_dates(self) -> None: self.keep_session_dates_button.click() def schedule_school_session( self, - school: School, + school: School | None, programmes: list[Programme], year_groups: list[int], - date_offset: int, + date_offset: int | None, ) -> None: - self.select_school_session() - self.select_school(school) + if school is not None: + self.select_school_session() + self.select_school(school) + self.choose_programmes(programmes) self.select_year_groups(year_groups) - self.fill_date_fields(get_offset_date_compact_format(date_offset)) + + if date_offset is not None: + self.fill_date_fields(get_offset_date_compact_format(date_offset)) + self.click_continue() self.keep_session_dates_if_necessary() @@ -123,7 +126,9 @@ def schedule_clinic_session( ) -> None: self.select_community_clinic() self.choose_programmes(programmes) + self.fill_date_fields(get_offset_date_compact_format(date_offset)) + self.click_continue() self.click_continue() diff --git a/mavis/test/pages/schools/schools_sessions_page.py b/mavis/test/pages/schools/schools_sessions_page.py index 1c121550ba0..2369a8aac8e 100644 --- a/mavis/test/pages/schools/schools_sessions_page.py +++ b/mavis/test/pages/schools/schools_sessions_page.py @@ -1,6 +1,7 @@ from playwright.sync_api import Page from mavis.test.annotations import step +from mavis.test.constants import Programme from mavis.test.pages.header_component import HeaderComponent from mavis.test.pages.schools.schools_tabs import SchoolsTabs @@ -11,7 +12,45 @@ def __init__(self, page: Page) -> None: self.header = HeaderComponent(page) self.tabs = SchoolsTabs(page) self.add_a_new_session_link = page.get_by_role("link", name="Add a new session") + self.scheduled_sessions_heading = page.get_by_role( + "heading", name="Scheduled sessions" + ) + self.unscheduled_sessions_heading = page.get_by_role( + "heading", name="Unscheduled sessions" + ) @step("Click Add a new session") def click_add_a_new_session(self) -> None: self.add_a_new_session_link.click() + + @step("Verify session exists") + def verify_session_exists( + self, + programmes: list[str], + year_groups: list[int], + *, + scheduled: bool = True, + ) -> None: + self.page.wait_for_load_state() + + heading_locator = ( + self.scheduled_sessions_heading + if scheduled + else self.unscheduled_sessions_heading + ) + sessions_locator = heading_locator.locator("xpath=following-sibling::*[1]") + session_card_locators = sessions_locator.locator(".nhsuk-card__content") + for session_card_locator in session_card_locators.all(): + session_card_text = session_card_locator.inner_text() + if all( + "Flu" + if programme is Programme.FLU + else str(programme) in session_card_text + for programme in programmes + ) and all( + "Reception" if year_group == 0 else str(year_group) in session_card_text + for year_group in year_groups + ): + return + msg = "Session with specified programmes and year groups not found." + raise AssertionError(msg) diff --git a/mavis/test/pages/sessions/sessions_overview_page.py b/mavis/test/pages/sessions/sessions_overview_page.py index 4bc35a8a2c5..46c44c24db8 100644 --- a/mavis/test/pages/sessions/sessions_overview_page.py +++ b/mavis/test/pages/sessions/sessions_overview_page.py @@ -105,7 +105,10 @@ def click_send_manual_consent_reminders(self) -> None: self.send_manual_consent_reminders_button.click() def get_online_consent_url(self, *programmes: Programme) -> str: - programme_names = [str(programme) for programme in programmes] + programme_names = [ + "MMR" if programme is Programme.MMR else str(programme) + for programme in programmes + ] link_text = f"View the {' and '.join(programme_names)} online consent form" return str(self.page.get_by_role("link", name=link_text).get_attribute("href")) diff --git a/pyproject.toml b/pyproject.toml index e89db460cbe..f266c887f4e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -47,6 +47,7 @@ markers = [ "reporting", "reports", "school_moves", + "schools", "sessions", "smoke", "tallying",