Skip to content

Commit c462a6e

Browse files
committed
refactoring letter library tests
1 parent 5cd6e23 commit c462a6e

File tree

1 file changed

+37
-77
lines changed

1 file changed

+37
-77
lines changed

tests/regression/communications_production/test_letter_library.py

Lines changed: 37 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -28,21 +28,21 @@
2828
# -------------------------------------------------------------------------------------------------
2929

3030

31-
@pytest.fixture
32-
def select_user(page: Page):
33-
def _login_as(user_role: str):
34-
# Log in with the specified user
35-
UserTools.user_login(page, user_role)
36-
# Navigate to call and recall page
37-
BasePage(page).go_to_call_and_recall_page()
38-
return page
39-
40-
return _login_as
41-
42-
@pytest.mark.wip
31+
@pytest.fixture(scope="function", autouse=True)
32+
def before_each(page: Page):
33+
"""
34+
Before every test is executed, this fixture logs in to BCSS as a test user and navigates to the call and recall page
35+
"""
36+
# Log in to BCSS
37+
UserTools.user_login(page, "Hub Manager at BCS01")
38+
39+
# Go to call and recall page
40+
BasePage(page).go_to_call_and_recall_page()
41+
42+
4343
@pytest.mark.regression
4444
@pytest.mark.letters_tests
45-
def test_all_s83f_letter_parts_are_listed_in_letter_library(select_user) -> None:
45+
def test_all_s83f_letter_parts_are_listed_in_letter_library(page: Page) -> None:
4646
"""
4747
Scenario: All three parts of the S83f letter exist
4848
Given I log in to BCSS "England" as user role "HubManager"
@@ -55,26 +55,21 @@ def test_all_s83f_letter_parts_are_listed_in_letter_library(select_user) -> None
5555
logging.info(
5656
"[TEST START] Verify all parts of the S83f letter exist in Letter Library"
5757
)
58-
user_role = "Hub Manager at BCS01"
59-
60-
# Step 1: Log in and land on Call and Recall page
61-
page = select_user(user_role)
62-
logging.info(f"[LOGIN] Logged in as {user_role}")
6358

64-
# Step 2: Navigate to Letter Library Index
59+
# Navigate to Letter Library Index
6560
base_page = BasePage(page)
6661
base_page.click_main_menu_link()
6762
base_page.go_to_communications_production_page()
6863
CommunicationsProductionPage(page).go_to_letter_library_index_page()
6964
logging.info("[NAVIGATION] Navigated to Letter Library Index page")
7065

71-
# Step 3: Apply filter
66+
# Apply filter
7267
letter_index_page = LetterLibraryIndexPage(page)
7368
letter_index_page.filter_by_letters_group("Invitation Letters")
7469
letter_index_page.verify_letter_library_index_title()
7570
logging.info("[FILTER] Applied 'Invitation Letters' group filter")
7671

77-
# Step 4: Assert that all required letter codes are visible
72+
# Assert that all required letter codes are visible
7873
expected_codes = ["S83f", "S83f-CSV", "S83f-ATT"]
7974
for code in expected_codes:
8075
matching_row = letter_index_page.table_utils.get_row_where({"Code": code})
@@ -84,10 +79,9 @@ def test_all_s83f_letter_parts_are_listed_in_letter_library(select_user) -> None
8479
logging.info(f"[ASSERTION PASSED] Letter code '{code}' listed in library")
8580

8681

87-
@pytest.mark.wip
8882
@pytest.mark.regression
8983
@pytest.mark.letters_tests
90-
def test_s83f_letter_definition_has_correct_settings(select_user) -> None:
84+
def test_s83f_letter_definition_has_correct_settings(page: Page) -> None:
9185
"""
9286
Scenario: A current S83f FIT self-referral invitation and test kit letter exists and has the correct settings
9387
Given I log in to BCSS "England" as user role "HubManager"
@@ -103,18 +97,15 @@ def test_s83f_letter_definition_has_correct_settings(select_user) -> None:
10397
And there "is" a current version of the selected letter definition
10498
"""
10599
logging.info("[TEST START] Verify S83f letter definition has correct settings")
106-
user_role = "Hub Manager at BCS01"
107100

108-
# Step 1: Log in and navigate to Letter Library
109-
page = select_user(user_role)
110-
logging.info(f"[LOGIN] Logged in as {user_role}")
101+
# Navigate to Letter Library
111102
base_page = BasePage(page)
112103
base_page.click_main_menu_link()
113104
base_page.go_to_communications_production_page()
114105
CommunicationsProductionPage(page).go_to_letter_library_index_page()
115106
logging.info("[NAVIGATION] Navigated to Letter Library Index page")
116107

117-
# Step 2: Filter and open S83f letter definition
108+
# Filter and open S83f letter definition
118109
letter_index_page = LetterLibraryIndexPage(page)
119110
letter_index_page.filter_by_letters_group("Invitation Letters")
120111
letter_index_page.verify_letter_library_index_title()
@@ -124,7 +115,7 @@ def test_s83f_letter_definition_has_correct_settings(select_user) -> None:
124115
letter_row.locator("a").click()
125116
logging.info("[ACTION] Opened S83f letter definition")
126117

127-
# Step 3: Assert letter settings
118+
# Assert letter settings
128119
letter_detail_page = LetterDefinitionDetailPage(page)
129120
letter_detail_page.assert_definition_setting(
130121
"Description", "Invitation & Test Kit (Self-referral) (FIT)"
@@ -137,17 +128,16 @@ def test_s83f_letter_definition_has_correct_settings(select_user) -> None:
137128
letter_detail_page.assert_definition_setting("Event Status", "S83")
138129
logging.info("[ASSERTION PASSED] All letter settings match expected values")
139130

140-
# Step 4: Confirm current version exists
131+
# Confirm current version exists
141132
assert (
142133
letter_detail_page.has_current_version()
143134
), "[ASSERTION FAILED] No current version for S83f"
144135
logging.info("[ASSERTION PASSED] S83f has a current version")
145136

146137

147-
@pytest.mark.wip
148138
@pytest.mark.regression
149139
@pytest.mark.letters_tests
150-
def test_s83f_att_letter_definition_has_correct_settings(select_user) -> None:
140+
def test_s83f_att_letter_definition_has_correct_settings(page: Page) -> None:
151141
"""
152142
Scenario: A current S83f-ATT FIT self-referral pre-invitation letter exists and has the correct settings
153143
Given I log in to BCSS "England" as user role "HubManager"
@@ -164,18 +154,15 @@ def test_s83f_att_letter_definition_has_correct_settings(select_user) -> None:
164154
And there "is" a current version of the selected letter definition
165155
"""
166156
logging.info("[TEST START] Verify S83f-ATT letter definition has correct settings")
167-
user_role = "Hub Manager at BCS01"
168157

169-
# Step 1: Log in and navigate to Letter Library Index
170-
page = select_user(user_role)
171-
logging.info(f"[LOGIN] Logged in as {user_role}")
158+
# Navigate to Letter Library Index
172159
base_page = BasePage(page)
173160
base_page.click_main_menu_link()
174161
base_page.go_to_communications_production_page()
175162
CommunicationsProductionPage(page).go_to_letter_library_index_page()
176163
logging.info("[NAVIGATION] Navigated to Letter Library Index page")
177164

178-
# Step 2: Filter and open S83f-ATT letter definition
165+
# Filter and open S83f-ATT letter definition
179166
letter_index_page = LetterLibraryIndexPage(page)
180167
letter_index_page.filter_by_letters_group("Invitation Letters")
181168
letter_index_page.verify_letter_library_index_title()
@@ -185,10 +172,7 @@ def test_s83f_att_letter_definition_has_correct_settings(select_user) -> None:
185172
letter_row.locator("a").click()
186173
logging.info("[ACTION] Opened S83f-ATT letter definition")
187174

188-
# Step 3: Pause to admire the view
189-
page.wait_for_timeout(1000)
190-
191-
# Step 4: Assert all settings
175+
# Assert all settings
192176
letter_detail_page = LetterDefinitionDetailPage(page)
193177
letter_detail_page.assert_definition_setting(
194178
"Description", "Pre-invitation (Self-referral) (FIT)"
@@ -201,17 +185,16 @@ def test_s83f_att_letter_definition_has_correct_settings(select_user) -> None:
201185
letter_detail_page.assert_definition_setting("Event Status", "S83")
202186
logging.info("[ASSERTION PASSED] All S83f-ATT letter settings match expectations")
203187

204-
# Step 5: Confirm current version exists
188+
# Confirm current version exists
205189
assert (
206190
letter_detail_page.has_current_version()
207191
), "[ASSERTION FAILED] No current version for S83f-ATT"
208192
logging.info("[ASSERTION PASSED] S83f-ATT has a current version")
209193

210194

211-
@pytest.mark.wip
212195
@pytest.mark.regression
213196
@pytest.mark.letters_tests
214-
def test_s83f_define_local_letter_reuses_existing_settings(select_user) -> None:
197+
def test_s83f_define_local_letter_reuses_existing_settings(page: Page) -> None:
215198
"""
216199
Scenario: As a hub manager, I can safely access and submit the local letter definition flow for S83f
217200
Given I log in to BCSS "England" as user role "HubManager"
@@ -224,11 +207,7 @@ def test_s83f_define_local_letter_reuses_existing_settings(select_user) -> None:
224207
"""
225208
logging.info("[TEST START] Define local version of S83f without altering data")
226209

227-
user_role = "Hub Manager at BCS01"
228-
page = select_user(user_role)
229-
logging.info(f"[LOGIN] Logged in as {user_role}")
230-
231-
# Step 1: Navigate to Letter Library Index
210+
# Navigate to Letter Library Index
232211
base_page = BasePage(page)
233212
base_page.click_main_menu_link()
234213
base_page.go_to_communications_production_page()
@@ -243,7 +222,7 @@ def test_s83f_define_local_letter_reuses_existing_settings(select_user) -> None:
243222

244223
page.wait_for_timeout(1000)
245224

246-
# Step 2: Define Local Version using known-good settings
225+
# Define Local Version using known-good settings
247226
letter_index_page.click_define_supplementary_letter_button()
248227
letter_index_page.define_supplementary_letter(
249228
description="Invitation & Test Kit (Self-referral) (FIT)",
@@ -256,10 +235,9 @@ def test_s83f_define_local_letter_reuses_existing_settings(select_user) -> None:
256235
logging.info("[ACTION] Local definition form submitted with existing settings")
257236

258237

259-
@pytest.mark.wip
260238
@pytest.mark.regression
261239
@pytest.mark.letters_tests
262-
def test_s83f_att_define_local_letter_reuses_existing_settings(select_user) -> None:
240+
def test_s83f_att_define_local_letter_reuses_existing_settings(page: Page) -> None:
263241
"""
264242
Scenario: As a hub manager, I can safely access and submit the local letter definition flow for S83f-ATT
265243
Given I log in to BCSS "England" as user role "HubManager"
@@ -272,11 +250,7 @@ def test_s83f_att_define_local_letter_reuses_existing_settings(select_user) -> N
272250
"""
273251
logging.info("[TEST START] Define local version of S83f-ATT without altering data")
274252

275-
user_role = "Hub Manager at BCS01"
276-
page = select_user(user_role)
277-
logging.info(f"[LOGIN] Logged in as {user_role}")
278-
279-
# Step 1: Navigate to Letter Library Index
253+
# Navigate to Letter Library Index
280254
base_page = BasePage(page)
281255
base_page.click_main_menu_link()
282256
base_page.go_to_communications_production_page()
@@ -291,7 +265,7 @@ def test_s83f_att_define_local_letter_reuses_existing_settings(select_user) -> N
291265

292266
page.wait_for_timeout(1000)
293267

294-
# Step 2: Define Local Version using known-good settings
268+
# Define Local Version using known-good settings
295269
letter_index_page.click_define_supplementary_letter_button()
296270
letter_index_page.define_supplementary_letter(
297271
description="Pre-invitation (Self-referral) (FIT)",
@@ -304,20 +278,9 @@ def test_s83f_att_define_local_letter_reuses_existing_settings(select_user) -> N
304278
logging.info("[ACTION] Local definition form submitted with existing settings")
305279

306280

307-
# # Manual Scenario: I set up a local version for S83f-ATT pre-invitation letter
308-
# # Given I log in to BCSS England as user role Hub Manager
309-
# # When I view the letter library index
310-
# # And I view the S83f-ATT pre-invitation letter definition
311-
# # Then I define a local version
312-
313-
# #-------------------------------------------------------------------------------------------------
314-
# # A183 : 1st Positive Appointment Requested letter
315-
316-
317-
@pytest.mark.wip
318281
@pytest.mark.regression
319282
@pytest.mark.letters_tests
320-
def test_a183_letter_definition_has_correct_settings(select_user) -> None:
283+
def test_a183_letter_definition_has_correct_settings(page: Page) -> None:
321284
"""
322285
Scenario: A current A183 letter exists and has the correct settings
323286
Given I log in to BCSS "England" as user role "HubManager"
@@ -334,18 +297,15 @@ def test_a183_letter_definition_has_correct_settings(select_user) -> None:
334297
And there "is" a current version of the selected letter definition
335298
"""
336299
logging.info("[TEST START] Verify A183 letter definition has correct settings")
337-
user_role = "Hub Manager at BCS01"
338300

339-
# Step 1: Login and navigate
340-
page = select_user(user_role)
341-
logging.info(f"[LOGIN] Logged in as {user_role}")
301+
# Navigate to Letter Library Index
342302
base_page = BasePage(page)
343303
base_page.click_main_menu_link()
344304
base_page.go_to_communications_production_page()
345305
CommunicationsProductionPage(page).go_to_letter_library_index_page()
346306
logging.info("[NAVIGATION] Reached Letter Library Index")
347307

348-
# Step 2: Filter and open A183 letter
308+
# Filter and open A183 letter
349309
letter_index_page = LetterLibraryIndexPage(page)
350310
letter_index_page.filter_by_letters_group("Practitioner Clinic Letters")
351311
letter_index_page.verify_letter_library_index_title()
@@ -355,7 +315,7 @@ def test_a183_letter_definition_has_correct_settings(select_user) -> None:
355315
letter_row.locator("a").click()
356316
logging.info("[ACTION] Opened A183 letter definition")
357317

358-
# Step 3: Pause and assert settings
318+
# Pause and assert settings
359319
page.wait_for_timeout(1000)
360320
letter_detail_page = LetterDefinitionDetailPage(page)
361321
letter_detail_page.assert_definition_setting(
@@ -371,7 +331,7 @@ def test_a183_letter_definition_has_correct_settings(select_user) -> None:
371331
letter_detail_page.assert_definition_setting("Event Status", "A183")
372332
logging.info("[ASSERTION PASSED] All A183 letter settings verified")
373333

374-
# Step 4: Confirm current version exists
334+
# Confirm current version exists
375335
assert (
376336
letter_detail_page.has_current_version()
377337
), "[ASSERTION FAILED] No current version for A183"

0 commit comments

Comments
 (0)