Skip to content

Commit b6afb43

Browse files
New Code is implemented for JIRA Ticket BCSS - 20608.
1 parent 4fbc663 commit b6afb43

File tree

1 file changed

+67
-0
lines changed

1 file changed

+67
-0
lines changed
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
from playwright.sync_api import Page, expect
2+
from pages.base_page import BasePage
3+
from typing import Dict
4+
5+
class SpineSearchPage:
6+
"""
7+
Page object for the Spine Search screen, enabling demographic searches
8+
and data retrieval from the Spine system.
9+
"""
10+
def __init__(self, page: Page):
11+
self.page = page
12+
self.spine_url = "https://bcss-bcss-18680-ddc-bcss.k8s-nonprod.texasplatform.uk/servlet/SpineSearchScreen"
13+
14+
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()
20+
self.page.goto(self.spine_url)
21+
22+
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()
27+
28+
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
41+
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)
46+
47+
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+
53+
54+
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+

0 commit comments

Comments
 (0)