Skip to content

Commit 6bc7cc9

Browse files
As per PR # 112 comments, Code is refactored.
1 parent e9dc1aa commit 6bc7cc9

File tree

1 file changed

+26
-44
lines changed

1 file changed

+26
-44
lines changed
Lines changed: 26 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from playwright.sync_api import Page, expect
1+
from playwright.sync_api import Page, Locator
22
from pages.base_page import BasePage
33
from typing import Dict
44

@@ -11,57 +11,39 @@ def __init__(self, page: Page):
1111
self.page = page
1212
self.spine_url = "https://bcss-bcss-18680-ddc-bcss.k8s-nonprod.texasplatform.uk/servlet/SpineSearchScreen"
1313

14+
# Define locators
15+
self.retrieve_data_link = self.page.get_by_role("link", name="Retrieve Data from Spine")
16+
self.demographics_radio = self.page.get_by_role("radio", name="Demographics")
17+
self.date_of_birth_field = self.page.locator("#dateOfBirth")
18+
19+
# Represents the calendar cell for the 6th day in the date picker
20+
self.date = self.page.get_by_role("cell", name="6").first
21+
22+
self.surname_field = self.page.locator("#surname")
23+
self.forename_field = self.page.locator("#forename")
24+
self.gender_dropdown = self.page.locator("#gender")
25+
self.postcode_field = self.page.locator("#postcode")
26+
self.search_button = self.page.get_by_role("button", name="Search")
27+
self.alert_message = self.page.get_by_role("alert")
28+
1429
def navigate_to_spine_search(self):
15-
"""
16-
Navigates to the Spine Search screen by clicking the appropriate link and
17-
loading the target URL.
18-
"""
19-
self.page.get_by_role("link", name="Retrieve Data from Spine").click()
30+
self.retrieve_data_link.click()
2031
self.page.goto(self.spine_url)
2132

2233
def select_demographic_search(self):
23-
"""
24-
Selects the 'Demographics' radio button to enable demographic-based search.
25-
"""
26-
self.page.get_by_role("radio", name="Demographics").check()
34+
self.demographics_radio.check()
2735

2836
def enter_search_criteria(self, dob: str, surname: str, forename: str, gender: str, postcode: str):
29-
"""Fills in demographic search fields with user details."""
30-
# Date of Birth
31-
self.page.locator("#dateOfBirth").click()
32-
self.page.get_by_role("cell", name="6").first.click()
33-
34-
# Surname
35-
self.page.locator("#surname").fill(surname)
36-
37-
# Forename
38-
self.page.locator("#forename").fill(forename)
39-
40-
# Gender
37+
self.date_of_birth_field.click()
38+
self.date.click()
39+
self.surname_field.fill(surname)
40+
self.forename_field.fill(forename)
4141
gender_option = {"Male": "1", "Female": "2"}.get(gender, "1")
42-
self.page.locator("#gender").select_option(gender_option)
43-
44-
# Postcode
45-
self.page.locator("#postcode").fill(postcode)
42+
self.gender_dropdown.select_option(gender_option)
43+
self.postcode_field.fill(postcode)
4644

4745
def perform_search(self):
48-
"""
49-
Clicks the 'Search' button to initiate the demographic search.
50-
"""
51-
self.page.get_by_role("button", name="Search").click()
52-
46+
self.search_button.click()
5347

5448
def get_spine_alert_message(self) -> str:
55-
"""
56-
Retrieve the visible alert message from the page, if any.
57-
58-
Returns:
59-
str: The inner text of the alert element if it's visible;
60-
otherwise, an empty string.
61-
"""
62-
self.alert_message = self.page.get_by_role("alert")
63-
if self.alert_message.is_visible():
64-
return self.alert_message.inner_text()
65-
else:
66-
return ""
67-
49+
return self.alert_message.inner_text() if self.alert_message.is_visible() else ""

0 commit comments

Comments
 (0)