From 89c05b5c393d8d1c538ac2f72c02ef007aac36e2 Mon Sep 17 00:00:00 2001 From: Hilary Martin Date: Mon, 8 Dec 2025 11:03:17 +0000 Subject: [PATCH 1/4] Created new page objects for analysers --- .../fit_test_kits/create_new_analyser_page.py | 34 +++++++++++++++++++ pages/fit_test_kits/edit_analyser_page.py | 14 ++++++++ .../fit_test_kits/maintain_analysers_page.py | 6 +++- 3 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 pages/fit_test_kits/create_new_analyser_page.py create mode 100644 pages/fit_test_kits/edit_analyser_page.py diff --git a/pages/fit_test_kits/create_new_analyser_page.py b/pages/fit_test_kits/create_new_analyser_page.py new file mode 100644 index 00000000..1cbf8ff4 --- /dev/null +++ b/pages/fit_test_kits/create_new_analyser_page.py @@ -0,0 +1,34 @@ +from playwright.sync_api import Page +from pages.base_page import BasePage + + +class CreateNewAnalyserPage(BasePage): + """Create New Analyser page locators and methods for interacting with the page.""" + + def __init__(self, page: Page): + super().__init__(page) + self.page = page + # Create New Analyser - page locators, methods + self.analyser_code_textbox = page.get_by_role("textbox", name="Analyser Code") + self.analyser_name_textbox = page.get_by_role("textbox", name="Analyser Name") + self.serial_number_textbox = page.get_by_role("textbox", name="Serial Number") + self.start_date_textbox = page.get_by_role("textbox", name="Start Date") + self.software_version_textbox = page.get_by_role( + "textbox", name="Software Version" + ) + self.software_start_date_textbox = page.locator("#softwareStartDate") + self.software_start_time_textbox = page.locator("#softwarestarttime") + self.end_date_textbox = page.get_by_role("textbox", name="End Date") + self.lookup_link = page.get_by_role("link", name="Lookup") + self.save_button = page.get_by_role("button", name="Save") + + def verify_create_new_analyser_title(self) -> None: + """Verify the Create New Analyser page title is displayed correctly.""" + self.bowel_cancer_screening_page_title_contains_text("Create New Analyser") + + def select_analyser_from_lookup(self, analyser_type: str) -> None: + """Presses lookup link and selects the Analyser Type specified""" + self.lookup_link.click() + self.page.locator( + f"input[type='radio'][onclick*=\"'{analyser_type}'\"]" + ).check() diff --git a/pages/fit_test_kits/edit_analyser_page.py b/pages/fit_test_kits/edit_analyser_page.py new file mode 100644 index 00000000..6fe78d08 --- /dev/null +++ b/pages/fit_test_kits/edit_analyser_page.py @@ -0,0 +1,14 @@ +from playwright.sync_api import Page +from pages.fit_test_kits.create_new_analyser_page import CreateNewAnalyserPage + + +class EditAnalyserPage(CreateNewAnalyserPage): + """Edit Analyser page locators and methods for interacting with the page.""" + + def __init__(self, page: Page): + super().__init__(page) + self.page = page + + def verify_edit_analyser_title(self) -> None: + """Verify the Edit Analyser page title is displayed correctly.""" + self.bowel_cancer_screening_page_title_contains_text("Edit Analyser") diff --git a/pages/fit_test_kits/maintain_analysers_page.py b/pages/fit_test_kits/maintain_analysers_page.py index 7c34ac97..698118af 100644 --- a/pages/fit_test_kits/maintain_analysers_page.py +++ b/pages/fit_test_kits/maintain_analysers_page.py @@ -1,4 +1,4 @@ -from playwright.sync_api import Page, expect +from playwright.sync_api import Page from pages.base_page import BasePage @@ -9,6 +9,10 @@ def __init__(self, page: Page): super().__init__(page) self.page = page # Maintain Analysers - page locators, methods + self.analysers_table = page.locator("#analyserTableDiv") + self.create_new_analyser_button = page.get_by_role( + "button", name="Create New Analyser" + ) def verify_maintain_analysers_title(self) -> None: """Verify the Maintain Analysers page title is displayed correctly.""" From bba1d60df9c9a823c915970069c55c8ab6651429 Mon Sep 17 00:00:00 2001 From: Hilary Martin Date: Mon, 8 Dec 2025 11:30:11 +0000 Subject: [PATCH 2/4] updated view contacts page --- pages/contacts_list/view_contacts_page.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/pages/contacts_list/view_contacts_page.py b/pages/contacts_list/view_contacts_page.py index a23c4d27..437ef8f3 100644 --- a/pages/contacts_list/view_contacts_page.py +++ b/pages/contacts_list/view_contacts_page.py @@ -1,4 +1,5 @@ -from playwright.sync_api import Page, expect +import logging +from playwright.sync_api import Page from pages.base_page import BasePage @@ -12,6 +13,15 @@ def __init__(self, page: Page): def verify_view_contacts_title(self) -> None: """Verify the View Contacts page title is displayed correctly""" - self.bowel_cancer_screening_page_title_contains_text( - "View Contacts" - ) + self.bowel_cancer_screening_page_title_contains_text("View Contacts") + + def search_by_job_role_and_organisation_code( + self, job_role: str, org_code: str + ) -> None: + """ + search by provided job role and organisation + """ + self.page.locator('input[name="selJobRole"]').fill(job_role) + self.page.locator('input[name="selOrganisationCode"]').fill(org_code) + self.page.get_by_role("button", name="Search").click() + logging.info(f"input {job_role} and {org_code} and click on search") From 951937ec36549a3861052eb65813ce787808c9cc Mon Sep 17 00:00:00 2001 From: Hilary Martin Date: Mon, 15 Dec 2025 11:22:40 +0000 Subject: [PATCH 3/4] Add logging and methods for setting Lynch invitation rates; create CommunicationTypeByGpPracticePage --- .../set_lynch_invitation_rates_page.py | 19 ++++++++++++++++++- .../communication_type_by_gp_practice_page.py | 19 +++++++++++++++++++ .../subject_screening_search_page.py | 2 +- 3 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 pages/reports/operational/communication_type_by_gp_practice_page.py diff --git a/pages/lynch_surveillance/set_lynch_invitation_rates_page.py b/pages/lynch_surveillance/set_lynch_invitation_rates_page.py index c4b97a7b..ea848732 100644 --- a/pages/lynch_surveillance/set_lynch_invitation_rates_page.py +++ b/pages/lynch_surveillance/set_lynch_invitation_rates_page.py @@ -1,4 +1,5 @@ -from playwright.sync_api import Page, expect +import logging +from playwright.sync_api import Page, expect, Locator from pages.base_page import BasePage @@ -15,3 +16,19 @@ def verify_set_lynch_invitation_rates_title(self) -> None: self.bowel_cancer_screening_page_title_contains_text( "Set Lynch Surveillance Invitation Rates" ) + + def get_lynch_invitation_rate(self, screening_centre_id: str) -> Locator: + return self.page.locator(f'[id="{screening_centre_id}"]') + + def set_lynch_invitation_rate(self, screening_centre_id: str, rate: str) -> None: + """ + set lynch invitation rate + """ + self.get_lynch_invitation_rate(screening_centre_id).fill(rate) + + logging.info(f"input {rate } for screening centre id {screening_centre_id} ") + + def click_set_rates(self) -> None: + self.page.get_by_role("button", name="Set Rates").click() + expect(self.page.locator("#alert")).to_contain_text("×Successfully updated") + logging.info("click set rates") diff --git a/pages/reports/operational/communication_type_by_gp_practice_page.py b/pages/reports/operational/communication_type_by_gp_practice_page.py new file mode 100644 index 00000000..e5247130 --- /dev/null +++ b/pages/reports/operational/communication_type_by_gp_practice_page.py @@ -0,0 +1,19 @@ +import logging +from playwright.sync_api import Page, expect + +class CommunicationTypeByGpPracticePage: + + def __init__(self,page:Page): + self.page=page + + def select_screening_centre(self,screening_centre:str) -> None: + """ + selects a screening centre and verifies the report has been generated + """ + + self.page.get_by_label("Screening Centre").select_option(screening_centre) + logging.info(f"{screening_centre} selected") + expect(self.page.locator("#ntshPageTitle")).to_contain_text("Communication Type for GP Practices") + expect(self.page.locator("#displayInputParameters")).to_contain_text("Report generated on:") + + diff --git a/pages/screening_subject_search/subject_screening_search_page.py b/pages/screening_subject_search/subject_screening_search_page.py index 93db4b9b..709bfd4c 100644 --- a/pages/screening_subject_search/subject_screening_search_page.py +++ b/pages/screening_subject_search/subject_screening_search_page.py @@ -244,7 +244,7 @@ def search_subject_with_args( # Only click search if at least one field was filled if any([surname, forename, screening_status, episode_status]): self.click(self.search_button) - self.click(self.back_link) + class ScreeningStatusSearchOptions(Enum): From 7e2910547ac8b946026ee6786201a0a5a39a3cfe Mon Sep 17 00:00:00 2001 From: Hilary Martin Date: Mon, 5 Jan 2026 11:25:14 +0000 Subject: [PATCH 4/4] Enhance tests and settings: add new navigation method, update cSpell words, and improve Lynch invitation rate tests --- .vscode/settings.json | 3 ++ pages/base_page.py | 9 ++++ tests/test_contacts_list_page.py | 25 +++++++++- tests/test_fit_test_kits_page.py | 50 ++++++++++++++++++- tests/test_lynch_surveillance_page.py | 55 ++++++++++++++++++++- tests/test_reports_page.py | 20 ++++++++ tests/test_screening_subject_search_page.py | 26 +++++----- 7 files changed, 171 insertions(+), 17 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index de47d16e..f72c0c23 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -6,10 +6,13 @@ }, "cSpell.words": [ "addopts", + "analyser", + "Analysers", "autouse", "BCSS", "behaviour", "codegen", + "colonoscopist", "customisable", "customised", "initialise", diff --git a/pages/base_page.py b/pages/base_page.py index 1c5fbfbb..c8b4c11d 100644 --- a/pages/base_page.py +++ b/pages/base_page.py @@ -205,6 +205,15 @@ def go_to_screening_subject_search_page(self) -> None: """Click the Base Page 'Screening Subject Search' link.""" self.click(self.screening_subject_search_page) + def go_to_page(self, navigation_steps: list[str]) -> None: + """Clicks the navigation links in the list provided. + Args: + navigation_steps (list[str]): the links you want to navigate through in order + """ + for intended_page in navigation_steps: + self.page.get_by_role("link", name=intended_page).click() + logging.info(f"navigated to {intended_page}") + def click(self, locator: Locator) -> None: # Alerts table locator alerts_table = locator.get_by_role("table", name="cockpitalertbox") diff --git a/tests/test_contacts_list_page.py b/tests/test_contacts_list_page.py index 96b89df3..ccdb59cb 100644 --- a/tests/test_contacts_list_page.py +++ b/tests/test_contacts_list_page.py @@ -1,5 +1,6 @@ +import logging import pytest -from playwright.sync_api import Page +from playwright.sync_api import Page, expect from pages.base_page import BasePage from pages.contacts_list.contacts_list_page import ContactsListPage from pages.contacts_list.view_contacts_page import ViewContactsPage @@ -54,3 +55,25 @@ def test_contacts_list_page_navigation(page: Page) -> None: # Return to main menu BasePage(page).click_main_menu_link() BasePage(page).main_menu_header_is_displayed() + + +def test_view_contacts_accredited_screening_colonoscopist(page: Page) -> None: + """ + Navigate to contact list, search for Accredited* role and BCS001 organisation and select the role link next to a contact. + Expects the View Details page to have the role Accredited Screening Colonoscopist. + """ + + BasePage(page).go_to_page(["View Contacts"]) + ViewContactsPage(page).search_by_job_role_and_organisation_code( + "Accredited*", "BCS001" + ) + + page.get_by_role( + "row", + name="Legroom Sensitive Accredited Screening Colonoscopist BCS001 Wolverhampton Bowel Cancer Screening Centre", + exact=True, + ).get_by_role("link").click() + expect(page.locator('form[name="frm"]')).to_contain_text( + "Accredited Screening Colonoscopist" + ) + logging.info("results contain name Legroom Sensitive") diff --git a/tests/test_fit_test_kits_page.py b/tests/test_fit_test_kits_page.py index 8e7a6cca..dd16b319 100644 --- a/tests/test_fit_test_kits_page.py +++ b/tests/test_fit_test_kits_page.py @@ -1,6 +1,10 @@ +import datetime +import uuid import pytest -from playwright.sync_api import Page +from playwright.sync_api import Page, expect from pages.base_page import BasePage +from pages.fit_test_kits.create_new_analyser_page import CreateNewAnalyserPage +from pages.fit_test_kits.edit_analyser_page import EditAnalyserPage from pages.fit_test_kits.fit_test_kits_page import FITTestKitsPage from pages.fit_test_kits.fit_rollout_summary_page import FITRolloutSummaryPage from pages.fit_test_kits.log_devices_page import LogDevicesPage @@ -98,3 +102,47 @@ def test_fit_test_kits_page_navigation(page: Page, general_properties: dict) -> # Return to main menu BasePage(page).click_main_menu_link() BasePage(page).main_menu_header_is_displayed() + + +def test_add_and_edit_a_new_analyser(page: Page) -> None: + """Create a new analyser and then edit it to have an end date of tomorrow""" + today = datetime.date.today() + unique_id = str(uuid.uuid4())[:8] + analyser_code = f"AUTO{unique_id}" + analyser_name = f"Autotest{unique_id}" + serial_number = f"SN{unique_id}" + BasePage(page).go_to_page(["Maintain Analysers"]) + + maintain_analysers_page = MaintainAnalysersPage(page) + maintain_analysers_page.create_new_analyser_button.click() + create_new_analyser_page = CreateNewAnalyserPage(page) + create_new_analyser_page.analyser_code_textbox.fill(analyser_code) + create_new_analyser_page.analyser_name_textbox.fill(analyser_name) + create_new_analyser_page.serial_number_textbox.fill(serial_number) + create_new_analyser_page.start_date_textbox.fill(today.strftime("%d/%m/%Y")) + create_new_analyser_page.select_analyser_from_lookup("PLEDIA") + create_new_analyser_page.software_version_textbox.fill("1") + create_new_analyser_page.software_start_date_textbox.fill( + today.strftime("%d/%m/%Y") + ) + create_new_analyser_page.software_start_time_textbox.fill("08:00") + create_new_analyser_page.save_button.click() + + expect(maintain_analysers_page.analysers_table).to_contain_text(analyser_code) + edit_button = page.get_by_role( + "row", + name=f"BCS01 {analyser_code} {analyser_name} {today.strftime("%d %b %Y")} End Date Edit", + exact=True, + ).locator("#edit") + edit_button.click() + tomorrow = today + datetime.timedelta(days=1) + edit_analyser_page = EditAnalyserPage(page) + edit_analyser_page.end_date_textbox.fill(tomorrow.strftime("%d/%m/%Y")) + edit_analyser_page.save_button.click() + expect( + page.get_by_role( + "row", + name=f"BCS01 {analyser_code} {analyser_name} {today.strftime("%d %b %Y")} {tomorrow.strftime("%d %b %Y")} Edit", + exact=True, + ) + ).to_be_visible() diff --git a/tests/test_lynch_surveillance_page.py b/tests/test_lynch_surveillance_page.py index 47955be4..a163cb46 100644 --- a/tests/test_lynch_surveillance_page.py +++ b/tests/test_lynch_surveillance_page.py @@ -1,8 +1,12 @@ +import random +from typing import Generator import pytest -from playwright.sync_api import Page +from playwright.sync_api import Page, expect from pages.base_page import BasePage from pages.lynch_surveillance.lynch_invitation_page import LynchInvitationPage -from pages.lynch_surveillance.set_lynch_invitation_rates_page import SetLynchInvitationRatesPage +from pages.lynch_surveillance.set_lynch_invitation_rates_page import ( + SetLynchInvitationRatesPage, +) from utils.user_tools import UserTools @@ -19,6 +23,20 @@ def before_each(page: Page): BasePage(page).go_to_lynch_surveillance_page() +@pytest.fixture +def reset_lynch_invitation_rate(page: Page) -> Generator[None, None, None]: + """ + Teardown fixture for resetting Lynch invitation Rates to environment defaults + """ + yield + page.get_by_role("link", name="Main Menu").click() + BasePage(page).go_to_page(["Lynch Surveillance", "Set Lynch Invitation Rates"]) + set_lynch_invitation_rate_page = SetLynchInvitationRatesPage(page) + set_lynch_invitation_rate_page.set_lynch_invitation_rate("2", "10") + set_lynch_invitation_rate_page.set_lynch_invitation_rate("3", "5") + set_lynch_invitation_rate_page.click_set_rates() + + @pytest.mark.smoke def test_lynch_surveillance_page_navigation(page: Page) -> None: """ @@ -32,3 +50,36 @@ def test_lynch_surveillance_page_navigation(page: Page) -> None: # Return to main menu BasePage(page).click_main_menu_link() BasePage(page).main_menu_header_is_displayed() + + +def test_set_lynch_invitation_rate( + page: Page, reset_lynch_invitation_rate: None +) -> None: + """ + Navigate to Lynch Surveillance Set Lynch Invitation Rates page, set random invitation rates for Wolverhampton and Coventry centres. + Verify the rates are saved correctly by navigating back and checking the values match what was set. + """ + + LynchInvitationPage(page).go_to_page(["Set Lynch Invitation Rates"]) + + set_lynch_invitation_rate_page = SetLynchInvitationRatesPage(page) + + wolverhampton_invitation_rate = str(random.randrange(1, 9)) + coventry_invitation_rate = str(random.randrange(1, 9)) + + set_lynch_invitation_rate_page.set_lynch_invitation_rate( + "2", wolverhampton_invitation_rate + ) + set_lynch_invitation_rate_page.set_lynch_invitation_rate( + "3", coventry_invitation_rate + ) + set_lynch_invitation_rate_page.click_set_rates() + + page.get_by_role("link", name="Back").click() + page.get_by_role("link", name="Set Lynch Invitation Rates").click() + expect(set_lynch_invitation_rate_page.get_lynch_invitation_rate("2")).to_have_value( + wolverhampton_invitation_rate + ) + expect(set_lynch_invitation_rate_page.get_lynch_invitation_rate("3")).to_have_value( + coventry_invitation_rate + ) diff --git a/tests/test_reports_page.py b/tests/test_reports_page.py index 8fa61063..c9231322 100644 --- a/tests/test_reports_page.py +++ b/tests/test_reports_page.py @@ -1,6 +1,10 @@ +import logging import pytest from playwright.sync_api import Page, expect from pages.base_page import BasePage +from pages.reports.operational.communication_type_by_gp_practice_page import ( + CommunicationTypeByGpPracticePage, +) from pages.reports.reports_page import ReportsPage from utils.date_time_utils import DateTimeUtils from utils.user_tools import UserTools @@ -517,3 +521,19 @@ def test_operational_reports_screening_practitioner_appointments( expect(ReportsPage(page).common_report_timestamp_element).to_contain_text( report_timestamp ) + + +def test_report_communication_type_for_gp_practices(page: Page) -> None: + """ + Navigate to the Operational Reports and Communication Type for GP, select Wolverhampton Bowel Cancer Screening Centre. + On the results page assert the page title and report generated on and selected GP Practices + """ + BasePage(page).go_to_page(["Operational Reports", "Communication Type for GP"]) + + CommunicationTypeByGpPracticePage(page).select_screening_centre( + "Wolverhampton Bowel Cancer Screening Centre" + ) + + for gp_practice_code in ["C81002", "M87041"]: + expect(page.locator("#listReportDataTable")).to_contain_text(gp_practice_code) + logging.info(f"results include the GP practice code {gp_practice_code}") diff --git a/tests/test_screening_subject_search_page.py b/tests/test_screening_subject_search_page.py index 630b6d2b..7e671b29 100644 --- a/tests/test_screening_subject_search_page.py +++ b/tests/test_screening_subject_search_page.py @@ -179,7 +179,7 @@ def test_search_screening_subject_by_status_call(page: Page) -> None: @pytest.mark.smoke def test_search_screening_subject_by_status_inactive(page: Page) -> None: """ - Confirms screening subjects can be searched for, using the screening status (call) by doing the following: + Confirms screening subjects can be searched for, using the screening status (Inactive) by doing the following: - Clear filters - Select status from dropdown - Pressing Tab is required after text input, to make the search button become active. @@ -195,7 +195,7 @@ def test_search_screening_subject_by_status_inactive(page: Page) -> None: @pytest.mark.smoke def test_search_screening_subject_by_status_opt_in(page: Page) -> None: """ - Confirms screening subjects can be searched for, using the screening status (call) by doing the following: + Confirms screening subjects can be searched for, using the screening status (opt-in) by doing the following: - Clear filters - Select status from dropdown - Pressing Tab is required after text input, to make the search button become active. @@ -211,7 +211,7 @@ def test_search_screening_subject_by_status_opt_in(page: Page) -> None: @pytest.mark.smoke def test_search_screening_subject_by_status_recall(page: Page) -> None: """ - Confirms screening subjects can be searched for, using the screening status (call) by doing the following: + Confirms screening subjects can be searched for, using the screening status (recall) by doing the following: - Clear filters - Select status from dropdown - Pressing Tab is required after text input, to make the search button become active. @@ -227,7 +227,7 @@ def test_search_screening_subject_by_status_recall(page: Page) -> None: @pytest.mark.smoke def test_search_screening_subject_by_status_self_referral(page: Page) -> None: """ - Confirms screening subjects can be searched for, using the screening status (call) by doing the following: + Confirms screening subjects can be searched for, using the screening status (self-referral) by doing the following: - Clear filters - Select status from dropdown - Pressing Tab is required after text input, to make the search button become active. @@ -245,7 +245,7 @@ def test_search_screening_subject_by_status_self_referral(page: Page) -> None: @pytest.mark.smoke def test_search_screening_subject_by_status_surveillance(page: Page) -> None: """ - Confirms screening subjects can be searched for, using the screening status (call) by doing the following: + Confirms screening subjects can be searched for, using the screening status (surveillance) by doing the following: - Clear filters - Select status from dropdown - Pressing Tab is required after text input, to make the search button become active. @@ -263,7 +263,7 @@ def test_search_screening_subject_by_status_surveillance(page: Page) -> None: @pytest.mark.smoke def test_search_screening_subject_by_status_seeking_further_data(page: Page) -> None: """ - Confirms screening subjects can be searched for, using the screening status (call) by doing the following: + Confirms screening subjects can be searched for, using the screening status (seeking further data) by doing the following: - Clear filters - Select status from dropdown - Pressing Tab is required after text input, to make the search button become active. @@ -281,7 +281,7 @@ def test_search_screening_subject_by_status_seeking_further_data(page: Page) -> @pytest.mark.smoke def test_search_screening_subject_by_status_ceased(page: Page) -> None: """ - Confirms screening subjects can be searched for, using the screening status (call) by doing the following: + Confirms screening subjects can be searched for, using the screening status (ceased) by doing the following: - Clear filters - Select status from dropdown - Pressing Tab is required after text input, to make the search button become active. @@ -297,7 +297,7 @@ def test_search_screening_subject_by_status_ceased(page: Page) -> None: @pytest.mark.smoke def test_search_screening_subject_by_status_lynch_surveillance(page: Page) -> None: """ - Confirms screening subjects can be searched for, using the screening status (call) by doing the following: + Confirms screening subjects can be searched for, using the screening status (lynch surveillance) by doing the following: - Clear filters - Select status from dropdown - Pressing Tab is required after text input, to make the search button become active. @@ -315,7 +315,7 @@ def test_search_screening_subject_by_status_lynch_surveillance(page: Page) -> No @pytest.mark.smoke def test_search_screening_subject_by_status_lynch_self_referral(page: Page) -> None: """ - Confirms screening subjects can be searched for, using the screening status (call) by doing the following: + Confirms screening subjects can be searched for, using the screening status (lynch self referral) by doing the following: - Clear filters - Select status from dropdown - Pressing Tab is required after text input, to make the search button become active. @@ -336,7 +336,7 @@ def test_search_screening_subject_by_latest_episode_status_open_paused( page: Page, ) -> None: """ - Confirms screening subjects can be searched for, using the screening status (call) by doing the following: + Confirms screening subjects can be searched for, using the episode status (open/paused) by doing the following: - Clear filters - Select status from dropdown - Pressing Tab is required after text input, to make the search button become active. @@ -354,7 +354,7 @@ def test_search_screening_subject_by_latest_episode_status_open_paused( @pytest.mark.smoke def test_search_screening_subject_by_latest_episode_status_closed(page: Page) -> None: """ - Confirms screening subjects can be searched for, using the screening status (call) by doing the following: + Confirms screening subjects can be searched for, using the episode status (closed) by doing the following: - Clear filters - Select status from dropdown - Pressing Tab is required after text input, to make the search button become active. @@ -374,7 +374,7 @@ def test_search_screening_subject_by_latest_episode_status_no_episode( page: Page, ) -> None: """ - Confirms screening subjects can be searched for, using the screening status (call) by doing the following: + Confirms screening subjects can be searched for, using the episode status (no episode) by doing the following: - Clear filters - Select status from dropdown - Pressing Tab is required after text input, to make the search button become active. @@ -415,7 +415,7 @@ def test_search_screening_subject_by_gp_practice( page: Page, general_properties: dict ) -> None: """ - Confirms screening subjects can be searched for, using the search area (home hub) by doing the following: + Confirms screening subjects can be searched for, using the search area (gp practice) by doing the following: - Clear filters - Select screening status "recall" (searching by search area requires another search option to be selected) - Select "GP Practice" option from dropdown