Skip to content

Commit f69bb69

Browse files
committed
addressed pr comments
1 parent 6e77810 commit f69bb69

File tree

3 files changed

+70
-35
lines changed

3 files changed

+70
-35
lines changed

pages/manual_cease/manual_cease_page.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
from playwright.sync_api import Page
2+
import logging
3+
from datetime import datetime
4+
from pages.base_page import BasePage
25

36

47
class ManualCeasePage:
@@ -23,3 +26,47 @@ def __init__(self, page: Page):
2326
"button", name="Record Return of Disclaimer Letter"
2427
)
2528
self.notes_field = page.get_by_label("Notes")
29+
30+
def click_request_cease(self):
31+
self.request_cease_button.click()
32+
33+
def select_cease_reason(self, reason: str):
34+
self.cease_reason_dropdown.select_option(label=reason)
35+
36+
def click_save_request_cease(self):
37+
self.save_request_cease_button.click()
38+
39+
def record_disclaimer_sent(self):
40+
self.record_disclaimer_sent_button.click()
41+
42+
def confirm_disclaimer_sent(self):
43+
self.confirm_disclaimer_sent_button.click()
44+
45+
def record_return_of_disclaimer(self):
46+
self.record_return_disclaimer_button.click()
47+
48+
def fill_notes_and_date(self, notes: str = "AUTO TEST: notes"):
49+
self.notes_field.fill(notes)
50+
today_str = datetime.today().strftime("%d/%m/%Y")
51+
self.date_confirmed_field.fill(today_str)
52+
53+
def confirm_cease(self):
54+
BasePage(self.page).safe_accept_dialog(self.confirm_cease_button)
55+
56+
def fill_notes_if_visible(self, notes: str = "AUTO TEST: notes"):
57+
if self.notes_textbox.is_visible():
58+
self.notes_textbox.fill(notes)
59+
60+
def fill_date_if_visible(self, date_str: str):
61+
if self.date_confirmed_field.is_visible():
62+
self.date_confirmed_field.fill(date_str)
63+
64+
def confirm_or_save_cease(self):
65+
if self.confirm_cease_button.is_visible():
66+
BasePage(self.page).safe_accept_dialog(self.confirm_cease_button)
67+
68+
elif self.save_request_cease_button.is_visible():
69+
self.save_request_cease_button.click()
70+
else:
71+
logging.error("No cease confirmation button found!")
72+
raise RuntimeError("Cease button not found on the page")

tests/regression/manual_cease/test_manually_cease_a_subject.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ def base_expected_db() -> dict[str, Any]:
5252

5353
# These scenarios just check that manually ceasing a subject (either immediately or via a disclaimer letter) from different statuses correctly sets their screening status and status reason.
5454
# Screening due date reason is always set to "Ceased" during a manual cease, even if the SDD is not changing.
55+
@pytest.mark.wip
5556
@pytest.mark.vpn_required
5657
@pytest.mark.manual_cease_tests
5758
@pytest.mark.regression
@@ -146,6 +147,7 @@ def test_manual_cease_from_inactive_subject_for_informed_dissent(
146147
logging.info("[ASSERTIONS COMPLETE] Manual cease scenario validated successfully")
147148

148149

150+
@pytest.mark.wip
149151
@pytest.mark.vpn_required
150152
@pytest.mark.manual_cease_tests
151153
@pytest.mark.regression
@@ -256,6 +258,7 @@ def test_manual_cease_from_call_subject_for_informed_dissent_verbal_only(
256258
logging.info("[ASSERTIONS COMPLETE] Manual cease scenario validated successfully")
257259

258260

261+
@pytest.mark.wip
259262
@pytest.mark.vpn_required
260263
@pytest.mark.manual_cease_tests
261264
@pytest.mark.regression
@@ -364,6 +367,7 @@ def test_manual_cease_from_recall_subject_for_no_colon_subject_request(
364367
logging.info("[ASSERTIONS COMPLETE] Manual cease scenario validated successfully")
365368

366369

370+
@pytest.mark.wip
367371
@pytest.mark.vpn_required
368372
@pytest.mark.manual_cease_tests
369373
@pytest.mark.regression
@@ -467,6 +471,7 @@ def test_manual_cease_from_surveillance_subject_for_no_colon_programme_assessed(
467471
)
468472

469473

474+
@pytest.mark.wip
470475
@pytest.mark.vpn_required
471476
@pytest.mark.manual_cease_tests
472477
@pytest.mark.regression
@@ -572,6 +577,7 @@ def test_manual_cease_from_already_ceased_subject_for_informal_death(
572577
)
573578

574579

580+
@pytest.mark.wip
575581
@pytest.mark.vpn_required
576582
@pytest.mark.manual_cease_tests
577583
@pytest.mark.regression

utils/manual_cease.py

Lines changed: 17 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import logging
22
import pandas as pd
33
from utils.oracle.oracle import OracleDB
4-
from pages.base_page import BasePage
54
from datetime import datetime, date
65
from enum import IntEnum
76
from pages.manual_cease.manual_cease_page import ManualCeasePage
@@ -111,15 +110,15 @@ def process_manual_cease_with_disclaimer(
111110
)
112111

113112
# Step 1: Click "Request Cease"
114-
manual_cease_page.request_cease_button.click()
113+
manual_cease_page.click_request_cease()
115114
logging.info("[STEP 1] Clicked 'Request Cease'")
116115

117116
# Step 2: Select reason
118-
manual_cease_page.cease_reason_dropdown.select_option(label=reason)
117+
manual_cease_page.select_cease_reason(reason)
119118
logging.info(f"[STEP 2] Selected cease reason: {reason}")
120119

121120
# Step 3: Save cease request
122-
manual_cease_page.save_request_cease_button.click()
121+
manual_cease_page.click_save_request_cease()
123122
logging.info("[STEP 3] Clicked 'Save Request Cease'")
124123

125124
except TimeoutError:
@@ -128,26 +127,23 @@ def process_manual_cease_with_disclaimer(
128127
)
129128

130129
# Step 4: Record Disclaimer Letter Sent
131-
manual_cease_page.record_disclaimer_sent_button.click()
130+
manual_cease_page.record_disclaimer_sent()
132131
logging.info("[STEP 4] Clicked 'Record Disclaimer Letter Sent'")
133132

134133
# Step 5: Confirm manual sending of disclaimer letter
135-
manual_cease_page.confirm_disclaimer_sent_button.click()
134+
manual_cease_page.confirm_disclaimer_sent()
136135
logging.info("[STEP 5] Confirmed disclaimer letter sent")
137136

138137
# Step 6: Record Return of Disclaimer letter
139-
manual_cease_page.record_return_disclaimer_button.click()
138+
manual_cease_page.record_return_of_disclaimer()
140139
logging.info("[STEP 6] Clicked 'Record Return of Disclaimer Letter'")
141140

142141
# Step 7: Final confirmation (Record Informed Dissent screen)
143-
manual_cease_page.notes_field.fill("AUTO TEST: notes")
144-
today_str = datetime.today().strftime("%d/%m/%Y")
145-
manual_cease_page.date_confirmed_field.fill(today_str)
146-
logging.info(f"[STEP 7] Entered date: {today_str} and note")
142+
manual_cease_page.fill_notes_and_date()
143+
logging.info(f"[STEP 7] Entered note and today's date")
147144

148-
BasePage(manual_cease_page.page).safe_accept_dialog(
149-
manual_cease_page.confirm_cease_button
150-
)
145+
# Step 8: Confirm cease
146+
manual_cease_page.confirm_cease()
151147
logging.info("[STEP 8] Clicked 'Confirm Cease'")
152148

153149
@staticmethod
@@ -168,36 +164,22 @@ def process_manual_cease_immediate(
168164
logging.info("[MANUAL CEASE] Starting full cease workflow")
169165

170166
# Step 1: Click "Request Cease"
171-
manual_cease_page.request_cease_button.click()
167+
manual_cease_page.click_request_cease()
172168
logging.info("[STEP 1] Clicked 'Request Cease'")
173169

174170
# Step 2: Select reason from dropdown
175-
manual_cease_page.cease_reason_dropdown.select_option(label=reason)
171+
manual_cease_page.select_cease_reason(reason)
176172
logging.info(f"[STEP 2] Selected cease reason: {reason}")
177173

178174
# Step 3: Conditionally enter notes and today's date
179175
today_str = datetime.today().strftime("%d/%m/%Y")
180-
181-
if manual_cease_page.notes_textbox.is_visible():
182-
manual_cease_page.notes_textbox.fill("AUTO TEST: notes")
183-
logging.info("[STEP 3] Entered note")
184-
185-
if manual_cease_page.date_confirmed_field.is_visible():
186-
manual_cease_page.date_confirmed_field.fill(today_str)
187-
logging.info(f"[STEP 3] Entered date: {today_str}")
176+
manual_cease_page.fill_notes_if_visible()
177+
manual_cease_page.fill_date_if_visible(today_str)
178+
logging.info("[STEP 3] Entered note and today's date: {date_str}")
188179

189180
# Step 4: Confirm cease via available button
190-
if manual_cease_page.confirm_cease_button.is_visible():
191-
BasePage(manual_cease_page.page).safe_accept_dialog(
192-
manual_cease_page.confirm_cease_button
193-
)
194-
logging.info("[STEP 4] Clicked 'Confirm Cease'")
195-
elif manual_cease_page.save_request_cease_button.is_visible():
196-
manual_cease_page.save_request_cease_button.click()
197-
logging.info("[STEP 4] Clicked 'Save Request Cease'")
198-
else:
199-
logging.error("[STEP 4] No cease confirmation button found!")
200-
raise RuntimeError("Cease button not found on the page")
181+
manual_cease_page.confirm_or_save_cease()
182+
logging.info("[STEP 4] Clicked 'Confirm Cease' or 'Save Request Cease'")
201183

202184
@staticmethod
203185
def verify_manual_cease_db_fields_dynamic(

0 commit comments

Comments
 (0)