Skip to content

Commit 50212f1

Browse files
Completed compartment 2
Fixed some issues in the POMs Altered the log in logic to match Andy's change
1 parent b038d23 commit 50212f1

23 files changed

+82
-99
lines changed

pages/fit_test_kits_page.py

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,43 +19,32 @@ def __init__(self, page: Page):
1919
def go_to_fit_rollout_summary_page(self):
2020
self.fit_rollout_summary_page.click()
2121

22-
2322
def go_to_log_devices_page(self):
24-
self.log_in_page.click()
25-
23+
self.log_devices_page.click()
2624

2725
def go_to_view_fit_kit_result(self):
2826
self.view_fit_kit_result_page.click()
2927

30-
3128
def go_to_kit_service_management(self):
3229
self.kit_service_management_page.click()
3330

34-
3531
def go_to_kit_result_audit(self):
3632
self.kit_result_audit_page.click()
3733

38-
3934
def go_to_view_algorithm(self):
4035
self.view_algorithm_page.click()
4136

42-
4337
def go_to_view_screening_centre_fit(self):
4438
self.view_screening_centre_fit_page.click()
4539

46-
4740
def go_to_screening_incidents_list(self):
4841
self.screening_incidents_list_page.click()
4942

50-
5143
def go_to_manage_qc_products(self):
5244
self.manage_qc_products_page.click()
5345

54-
5546
def go_to_maintain_analysers(self):
5647
self.maintain_analysers_page.click()
5748

5849
def go_to_fit_device_id(self):
5950
self.fit_device_id.enter()
60-
61-

pages/log_device.py

Lines changed: 0 additions & 31 deletions
This file was deleted.

pages/log_devices_page.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
from playwright.sync_api import Page, expect
2+
3+
class LogDevices:
4+
def __init__(self, page: Page):
5+
self.page = page
6+
# Log Devices - page links
7+
self.fit_device_id_field = self.page.get_by_role("textbox", name="FIT Device ID")
8+
self.save_and_log_device_button = self.page.get_by_role("button", name="Save and Log Device")
9+
self.device_spoilt_button = self.page.get_by_role("button", name="Device Spoilt")
10+
self.sample_date_field = self.page.locator("#sampleDate")
11+
self.successfully_logged_device_text = self.page.get_by_text("×Successfully logged device")
12+
self.spoilt_device_dropdown = self.page.get_by_label("Spoil reason drop down")
13+
self.log_as_spoilt_button = self.page.get_by_role("button", name="Log as Spoilt")
14+
15+
def fill_fit_device_id_field(self, value):
16+
self.fit_device_id_field.click()
17+
self.fit_device_id_field.fill(value)
18+
self.fit_device_id_field.press("Enter")
19+
20+
def click_save_and_log_device_button(self):
21+
self.save_and_log_device_button.click()
22+
23+
def click_device_spoilt_button(self):
24+
self.device_spoilt_button.click()
25+
26+
def fill_sample_date_field(self, value):
27+
self.sample_date_field.click()
28+
self.sample_date_field.fill(value)
29+
self.sample_date_field.press("Enter")
30+
31+
def verify_successfully_logged_device_text(self):
32+
expect(self.successfully_logged_device_text).to_be_visible()
33+
34+
def select_spoilt_device_dropdown_option(self):
35+
self.spoilt_device_dropdown.select_option("205156")
36+
37+
def click_log_as_spoilt_button(self):
38+
self.log_as_spoilt_button.click()

pages/login_page.py

Lines changed: 6 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from utils.user_tools import UserTools
55
from dotenv import load_dotenv
66

7+
78
class BcssLoginPage:
89

910
def __init__(self, page: Page):
@@ -12,40 +13,18 @@ def __init__(self, page: Page):
1213
self.username = page.get_by_role("textbox", name="Username")
1314
self.password = page.get_by_role("textbox", name="Password")
1415
self.submit_button = page.get_by_role("button", name="submit")
16+
load_dotenv() # Take environment variables from .env
1517

16-
17-
def login(self, username, password):
18+
def login_as_user(self, username: str) -> None:
1819
"""Logs in to bcss with specified user credentials
1920
Args:
20-
username (str) enter a username
21-
password (str) enter a password
21+
username (str) enter a username that exists in users.json
2222
"""
23-
self.username.fill(username)
24-
self.password.fill(password)
25-
self.submit_button.click()
26-
27-
def login_as_user_bcss401(self):
28-
"""Logs in to bcss as the test user 'BCSS401'"""
29-
# Take environment variables from .env
30-
load_dotenv()
31-
# Retrieve and enter username from users.json
32-
user_details = UserTools.retrieve_user("BCSS401")
33-
self.username.fill(user_details["username"])
34-
# Retrieve and enter password from .env file
35-
password = os.getenv("BCSS_PASS")
36-
self.password.fill(password)
37-
# Click submit button
38-
self.submit_button.click()
39-
40-
def login_as_user_bcss118(self):
41-
"""Logs in to bcss as the test user 'BCSS118'"""
42-
# Take environment variables from .env
43-
load_dotenv()
4423
# Retrieve and enter username from users.json
45-
user_details = UserTools.retrieve_user("BCSS118")
24+
user_details = UserTools.retrieve_user(username)
4625
self.username.fill(user_details["username"])
4726
# Retrieve and enter password from .env file
4827
password = os.getenv("BCSS_PASS")
4928
self.password.fill(password)
50-
# Click submit button
29+
# Click Submit
5130
self.submit_button.click()

requirements.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ pytest-json-report>=1.5.0
44
pypdf>=5.3.0
55
oracledb>=2.5.1
66
pandas>=2.2.3
7-
dotenv~=0.9.9
87
python-dotenv~=1.0.1
98
Flask~=3.0.3
109
fastparquet>=2024.11.0

tests/Smokescreen/my_pages.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,5 @@
1313
from pages.invitations_plans_page import *
1414
from pages.generate_invitations_page import *
1515
from pages.fit_test_kits_page import *
16+
from pages.log_devices_page import *
1617
from pages.log_out_page import *

tests/Smokescreen/test_compartment_1.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
# playwright._impl._errors.Error: Dialog.accept: Cannot accept dialog which is already handled! - Have a look at removing this error (probably from line 67 of batch_processing)
1010

1111
@pytest.mark.wip
12-
def test_example(page: Page) -> None:
12+
def test_compartment_1(page: Page) -> None:
1313
page.goto("/")
14-
BcssLoginPage(page).login_as_user_bcss401()
14+
BcssLoginPage(page).login_as_user("BCSS401")
1515

1616
# Create plan
1717
MainMenu(page).go_to_call_and_recall_page()

tests/Smokescreen/test_compartment_2.py

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,21 @@
77
import pandas as pd
88

99
@pytest.mark.wip1
10-
def test_example(page: Page) -> None:
10+
def test_compartment_2(page: Page) -> None:
1111
page.goto("/")
12-
BcssLoginPage(page).login_as_user_bcss401()
12+
BcssLoginPage(page).login_as_user("BCSS401")
1313

1414
MainMenu(page).go_to_fit_test_kits_page()
1515
FITTestKits(page).go_to_log_devices_page()
1616
subjectdf = pd.read_parquet('subject_kit_number.parquet', engine='fastparquet')
17+
os.remove('subject_kit_number.parquet')
18+
1719
for subject in range(4):
1820
fit_device_id = subjectdf["FIT_Device_ID"].iloc[subject-1]
19-
# log devices - fill device id field with fit_device_id
21+
LogDevices(page).fill_fit_device_id_field(fit_device_id)
2022
sample_date = datetime.now().strftime("%#d %b %Y")
21-
# log devices - fill sample date field with sample_date
22-
# log devices - verify successfully logged device
23+
LogDevices(page).fill_sample_date_field(sample_date)
24+
LogDevices(page).verify_successfully_logged_device_text()
2325

2426
nhs_no = subjectdf["NHS_Number"].iloc[0]
2527
verify_subject_event_status_by_nhs_no(page, nhs_no, "S43 - Kit Returned and Logged (Initial Test)")
@@ -28,10 +30,15 @@ def test_example(page: Page) -> None:
2830
MainMenu(page).go_to_fit_test_kits_page()
2931
FITTestKits(page).go_to_log_devices_page()
3032
spoilt_fit_device_id = subjectdf["FIT_Device_ID"].iloc[4]
31-
# log devices - fill device id field with spoilt_fit_device_id
32-
# log devices - click device spoilt button
33-
# log devices - select option from dropdown
34-
# log devices - click log as spoilt button
35-
# log devices = verify successfully logged device
33+
LogDevices(page).fill_fit_device_id_field(spoilt_fit_device_id)
34+
LogDevices(page).click_device_spoilt_button()
35+
LogDevices(page).select_spoilt_device_dropdown_option()
36+
LogDevices(page).click_log_as_spoilt_button()
37+
LogDevices(page).verify_successfully_logged_device_text()
3638

3739
batch_processing(page, "S3", "Retest (Spoilt) (FIT)", "S11 - Retest Kit Sent (Spoilt)")
40+
41+
# Log out
42+
NavigationBar(page).click_log_out_link()
43+
Logout(page).verify_log_out_page()
44+
page.close()

tests/test_bowel_scope_page.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ def before_each(page: Page):
1111
Before every test is executed, this fixture logs in to BCSS as a test user and navigates to the bowel scope page
1212
"""
1313
# Log in to BCSS
14-
BcssLoginPage(page).login_as_user_bcss401()
14+
BcssLoginPage(page).login_as_user("BCSS401")
1515

1616
# Go to bowel scope page
1717
MainMenu(page).go_to_bowel_scope_page()

tests/test_call_and_recall_page.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ def before_each(page: Page):
1111
Before every test is executed, this fixture logs in to BCSS as a test user and navigates to the call and recall page
1212
"""
1313
# Log in to BCSS
14-
BcssLoginPage(page).login_as_user_bcss401()
14+
BcssLoginPage(page).login_as_user("BCSS401")
1515

1616
# Go to call and recall page
1717
MainMenu(page).go_to_call_and_recall_page()

0 commit comments

Comments
 (0)