Skip to content

Commit cdb6d2d

Browse files
committed
Added hardcoded locators to specific POM for test_gfobt_test_kits_page.py
1 parent b590a8e commit cdb6d2d

8 files changed

+164
-60
lines changed

pages/base_page.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def __init__(self, page: Page):
2222
self.communications_production_page = self.page.get_by_role("link", name="Communications Production")
2323
self.download_page = self.page.get_by_role("link", name="Download")
2424
self.fit_test_kits_page = self.page.get_by_role("link", name="FIT Test Kits")
25-
self.gfob_test_kits_page = self.page.get_by_role("link", name="gFOBT Test Kits")
25+
self.gfobt_test_kits_page = self.page.get_by_role("link", name="gFOBT Test Kits")
2626
self.lynch_surveillance_page = self.page.get_by_role("link", name="Lynch Surveillance")
2727
self.organisations_page = self.page.get_by_role("link", name="Organisations")
2828
self.reports_page = self.page.get_by_role("link", name="Reports")
@@ -89,8 +89,8 @@ def go_to_download_page(self)->None:
8989
def go_to_fit_test_kits_page(self)->None:
9090
self.click(self.fit_test_kits_page)
9191

92-
def go_to_gfob_test_kits_page(self)->None:
93-
self.click(self.gfob_test_kits_page)
92+
def go_to_gfobt_test_kits_page(self)->None:
93+
self.click(self.gfobt_test_kits_page)
9494

9595
def go_to_lynch_surveillance_page(self)->None:
9696
self.click(self.lynch_surveillance_page)

pages/gFOBT_create_qc_kit_page.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
from playwright.sync_api import Page,expect
2+
from pages.base_page import BasePage
3+
from enum import Enum
4+
5+
class CreateQCKit(BasePage):
6+
def __init__(self, page: Page):
7+
super().__init__(page)
8+
self.page = page
9+
10+
self.create_qc_kit_title = self.page.locator("#ntshPageTitle")
11+
# Reading dropdown locators
12+
self.reading1dropdown = self.page.locator("#A_C_Reading_999_0_0")
13+
self.reading2dropdown = self.page.locator("#A_C_Reading_999_0_1")
14+
self.reading3dropdown = self.page.locator("#A_C_Reading_999_1_0")
15+
self.reading4dropdown = self.page.locator("#A_C_Reading_999_1_1")
16+
self.reading5dropdown = self.page.locator("#A_C_Reading_999_2_0")
17+
self.reading6dropdown = self.page.locator("#A_C_Reading_999_2_1")
18+
self.save_kit = self.page.get_by_role("button", name="Save Kit")
19+
self.kit_has_saved=self.page.locator("th")
20+
21+
def verify_create_qc_kit_title(self) -> None:
22+
expect(self.create_qc_kit_title).to_contain_text("Create QC Kit")
23+
24+
def go_to_reading1dropdown(self, option: str)-> None:
25+
self.reading1dropdown.select_option(option)
26+
27+
def go_to_reading2dropdown(self, option: str)-> None:
28+
self.reading2dropdown.select_option(option)
29+
30+
def go_to_reading3dropdown(self, option: str)-> None:
31+
self.reading3dropdown.select_option(option)
32+
33+
def go_to_reading4dropdown(self, option: str)-> None:
34+
self.reading4dropdown.select_option(option)
35+
36+
def go_to_reading5dropdown(self, option: str)-> None:
37+
self.reading5dropdown.select_option(option)
38+
39+
def go_to_reading6dropdown(self, option: str)-> None:
40+
self.reading6dropdown.select_option(option)
41+
42+
def go_to_save_kit(self)-> None:
43+
self.click(self.save_kit)
44+
45+
def verify_kit_has_saved(self) -> None:
46+
expect(self.kit_has_saved).to_contain_text("A quality control kit has been created with the following values:")
47+
48+
class ReadingDropdownOptions(Enum):
49+
NEGATIVE = "NEGATIVE"
50+
POSITIVE = "POSITIVE"
51+
UNUSED = "UNUSED"
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
from playwright.sync_api import Page,expect
2+
from pages.base_page import BasePage
3+
4+
class TestKitLogging(BasePage):
5+
def __init__(self, page: Page):
6+
super().__init__(page)
7+
self.page = page
8+
self.test_kit_logging_title = self.page.locator("#ntshPageTitle")
9+
10+
def verify_test_kit_logging_title(self) -> None:
11+
expect(self.test_kit_logging_title).to_contain_text("Test Kit Logging")
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
from playwright.sync_api import Page,expect
2+
from pages.base_page import BasePage
3+
4+
class TestKitQualityControlReading(BasePage):
5+
def __init__(self, page: Page):
6+
super().__init__(page)
7+
self.page = page
8+
self.test_kit_quality_control_reading_title = self.page.locator("#ntshPageTitle")
9+
10+
def verify_test_kit_logging_tile(self) -> None:
11+
expect(self.test_kit_quality_control_reading_title ).to_contain_text("Test Kit Quality Control Reading")

pages/gFOBT_test_kits_page.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
from playwright.sync_api import Page
2+
from pages.base_page import BasePage
3+
4+
class GFOBTTestKits(BasePage):
5+
def __init__(self, page: Page):
6+
super().__init__(page)
7+
self.page = page
8+
9+
self.test_kit_logging_page = self.page.get_by_role("link", name="Test Kit Logging")
10+
self.test_kit_reading_page = self.page.get_by_role("link", name="Test Kit Reading")
11+
self.test_kit_result_page=self.page.get_by_role("link", name="View Test Kit Result")
12+
self.create_qc_kit_page=self.page.get_by_role("link", name="Create QC Kit")
13+
14+
def go_to_test_kit_logging_page(self)->None:
15+
self.click(self.test_kit_logging_page)
16+
17+
def go_to_test_kit_reading_page(self)->None:
18+
self.click(self.test_kit_reading_page)
19+
20+
def go_to_test_kit_result_page(self)->None:
21+
self.click(self.test_kit_reading_page)
22+
23+
def go_to_create_qc_kit_page(self) -> None:
24+
self.click(self.create_qc_kit_page)
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
from playwright.sync_api import Page,expect
2+
from pages.base_page import BasePage
3+
4+
class ViewTestKitResult(BasePage):
5+
def __init__(self, page: Page):
6+
super().__init__(page)
7+
self.page = page
8+
self.view_test_kit_result_title = self.page.locator("#ntshPageTitle")
9+
10+
def verify_view_test_kit_result_title(self) -> None:
11+
expect(self.view_test_kit_result_title).to_contain_text("View Test Kit Result")

tests/test_contacts_list_page.py

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
import pytest
22
from playwright.sync_api import Page, expect
3-
from pages.base_page import BasePage
3+
44
from pages.contacts_list_page import ContactsListPage
5-
from pages.view_contacts_page import ViewContacts
6-
from pages.edit_my_contact_details_page import EditMyContactDetails
7-
from pages.maintain_contacts_page import MaintainContacts
8-
from pages.my_preference_settings_page import MyPreferenceSettings
5+
from utils.click_helper import click
6+
from pages.base_page import BasePage
97
from utils.user_tools import UserTools
108

119

@@ -28,29 +26,29 @@ def test_contacts_list_page_navigation(page: Page) -> None:
2826
are loaded when the links are clicked
2927
"""
3028
# View contacts page loads as expected
31-
ContactsListPage(page).go_to_view_contacts_page()
32-
ViewContacts(page).verify_view_contacts_title()
33-
BasePage(page).click_back_button()
29+
click(page, page.get_by_role("link", name="View Contacts"))
30+
expect(page.locator("#ntshPageTitle")).to_contain_text("View Contacts")
31+
click(page, page.get_by_role("link", name="Back", exact=True))
3432

3533
# Edit my contact details page loads as expected
36-
ContactsListPage(page).go_to_edit_my_contact_details_page()
37-
EditMyContactDetails(page).verify_edit_my_contact_details_title()
38-
BasePage(page).click_back_button()
34+
click(page, page.get_by_role("link", name="Edit My Contact Details"))
35+
expect(page.locator("#ntshPageTitle")).to_contain_text("Edit My Contact Details")
36+
click(page, page.get_by_role("link", name="Back"))
3937

4038
# Maintain contacts page loads as expected
41-
ContactsListPage(page).go_to_maintain_contacts_page()
42-
MaintainContacts(page).verify_maintain_contacts_title()
43-
BasePage(page).click_back_button()
39+
click(page, page.get_by_role("link", name="Maintain Contacts"))
40+
expect(page.locator("#ntshPageTitle")).to_contain_text("Maintain Contacts")
41+
click(page, page.get_by_role("link", name="Back"))
4442

4543
# My preference settings page loads as expected
46-
ContactsListPage(page).go_to_my_preference_settings_page()
47-
MyPreferenceSettings(page).verify_my_preference_settings_title()
48-
BasePage(page).click_back_button()
44+
click(page, page.get_by_role("link", name="My Preference Settings"))
45+
expect(page.locator("#ntshPageTitle")).to_contain_text("My Preference Settings")
46+
click(page, page.get_by_role("link", name="Back"))
4947

5048
# Other links are visible (Not clickable due to user role permissions)
51-
ContactsListPage(page).verify_extract_contact_details_page_visible()
52-
ContactsListPage(page).verify_resect_and_discard_accredited_page_visible()
49+
expect(page.get_by_text("Extract Contact Details")).to_be_visible()
50+
expect(page.get_by_text("Resect and Discard Accredited")).to_be_visible()
5351

5452
# Return to main menu
55-
BasePage(page).click_main_menu_link()
56-
BasePage(page).main_menu_header_is_displayed()
53+
click(page, page.get_by_role("link", name="Main Menu"))
54+
expect(page.locator("#ntshPageTitle")).to_contain_text("Main Menu")

tests/test_gfobt_test_kits_page.py

Lines changed: 34 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,78 +1,76 @@
11
import pytest
2-
from playwright.sync_api import Page, expect
3-
from utils.click_helper import click
2+
from playwright.sync_api import Page
3+
44
from pages.base_page import BasePage
5+
from pages.gFOBT_test_kits_page import GFOBTTestKits
6+
from pages.gFOBT_test_kit_logging_page import TestKitLogging
7+
from pages.gFOBT_test_kit_quality_control_reading_page import TestKitQualityControlReading
8+
from pages.gFOBT_view_test_kit_result import ViewTestKitResult
9+
from pages.gFOBT_create_qc_kit_page import CreateQCKit, ReadingDropdownOptions
510
from utils.user_tools import UserTools
611

712

813
@pytest.fixture(scope="function", autouse=True)
914
def before_each(page: Page):
1015
"""
1116
Before every test is executed, this fixture logs in to BCSS as a test user and navigates to the
12-
gfob test kits page
17+
gfobt test kits page
1318
"""
1419
# Log in to BCSS
1520
UserTools.user_login(page, "Hub Manager State Registered")
1621

1722
# Go to gFOBT test kits page
18-
BasePage(page).go_to_gfob_test_kits_page()
23+
BasePage(page).go_to_gfobt_test_kits_page()
1924

2025

2126
@pytest.mark.smoke
22-
def test_gfob_test_kit_page_navigation(page: Page) -> None:
27+
def test_gfobt_test_kit_page_navigation(page: Page) -> None:
2328
"""
24-
Confirms all menu items are displayed on the gfob test kits page, and that the relevant pages
29+
Confirms all menu items are displayed on the gfobt test kits page, and that the relevant pages
2530
are loaded when the links are clicked
2631
"""
2732
# Test kit logging page opens as expected
28-
click(page, page.get_by_role("link", name="Test Kit Logging"))
29-
expect(page.locator("#ntshPageTitle")).to_contain_text("Test Kit Logging")
30-
click(page, page.get_by_role("link", name="Back"))
33+
GFOBTTestKits(page).go_to_test_kit_logging_page()
34+
TestKitLogging(page).verify_test_kit_logging_title()
35+
BasePage(page).click_back_button()
3136

3237
# Test kit reading page opens as expected
33-
click(page, page.get_by_role("link", name="Test Kit Reading"))
34-
expect(page.locator("#ntshPageTitle")).to_contain_text("Test Kit Quality Control Reading")
35-
click(page, page.get_by_role("link", name="Back"))
38+
GFOBTTestKits(page).go_to_test_kit_result_page()
39+
TestKitQualityControlReading(page).verify_test_kit_logging_tile()
40+
BasePage(page).click_back_button()
3641

3742
# View test kit result page opens as expected
38-
click(page, page.get_by_role("link", name="View Test Kit Result"))
39-
expect(page.locator("#ntshPageTitle")).to_contain_text("View Test Kit Result")
40-
click(page, page.get_by_role("link", name="Back"))
43+
GFOBTTestKits(page).go_to_test_kit_result_page()
44+
ViewTestKitResult(page).verify_view_test_kit_result_title()
45+
BasePage(page).click_back_button()
4146

4247
# Create qc kit page opens as expected
43-
click(page, page.get_by_role("link", name="Create QC Kit"))
44-
expect(page.locator("#ntshPageTitle")).to_contain_text("Create QC Kit")
48+
GFOBTTestKits(page).go_to_create_qc_kit_page()
49+
CreateQCKit(page).verify_create_qc_kit_title()
50+
BasePage(page).click_back_button()
4551

4652
# Return to main menu
47-
click(page, page.get_by_role("link", name="Main Menu"))
48-
expect(page.locator("#ntshPageTitle")).to_contain_text("Main Menu")
53+
BasePage(page).click_main_menu_link()
54+
BasePage(page).main_menu_header_is_displayed()
4955

5056

5157
def test_create_a_qc_kit(page: Page) -> None:
5258
"""
5359
Confirms that a qc test kit can be created and that each of the dropdowns has an option set available for selection
5460
"""
55-
# 'Reading' dropdown locators
56-
reading1dropdown = page.locator("#A_C_Reading_999_0_0")
57-
reading2dropdown = page.locator("#A_C_Reading_999_0_1")
58-
reading3dropdown = page.locator("#A_C_Reading_999_1_0")
59-
reading4dropdown = page.locator("#A_C_Reading_999_1_1")
60-
reading5dropdown = page.locator("#A_C_Reading_999_2_0")
61-
reading6dropdown = page.locator("#A_C_Reading_999_2_1")
62-
6361
# Navigate to create QC kit page
64-
click(page, page.get_by_role("link", name="Create QC Kit"))
62+
GFOBTTestKits(page).go_to_create_qc_kit_page()
6563

6664
# Select QC kit drop down options
67-
reading1dropdown.select_option("NEGATIVE")
68-
reading2dropdown.select_option("POSITIVE")
69-
reading3dropdown.select_option("POSITIVE")
70-
reading4dropdown.select_option("UNUSED")
71-
reading5dropdown.select_option("NEGATIVE")
72-
reading6dropdown.select_option("POSITIVE")
65+
CreateQCKit(page).go_to_reading1dropdown(ReadingDropdownOptions.NEGATIVE.value)
66+
CreateQCKit(page).go_to_reading2dropdown(ReadingDropdownOptions.POSITIVE.value)
67+
CreateQCKit(page).go_to_reading3dropdown(ReadingDropdownOptions.POSITIVE.value)
68+
CreateQCKit(page).go_to_reading4dropdown(ReadingDropdownOptions.UNUSED.value)
69+
CreateQCKit(page).go_to_reading5dropdown(ReadingDropdownOptions.NEGATIVE.value)
70+
CreateQCKit(page).go_to_reading6dropdown(ReadingDropdownOptions.POSITIVE.value)
7371

7472
# Click save
75-
click(page, page.get_by_role("button", name="Save Kit"))
73+
CreateQCKit(page).go_to_save_kit()
7674

7775
# Verify kit has saved
78-
expect(page.locator("th")).to_contain_text("A quality control kit has been created with the following values:")
76+
CreateQCKit(page).verify_kit_has_saved()

0 commit comments

Comments
 (0)