@trevordsouzabrite/test-package 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/playwright-test-generator.md +85 -0
- package/.claude/agents/playwright-test-healer.md +45 -0
- package/.claude/agents/playwright-test-planner.md +52 -0
- package/.claude/prompts/playwright-test-coverage.md +31 -0
- package/.claude/prompts/playwright-test-generate.md +12 -0
- package/.claude/prompts/playwright-test-heal.md +6 -0
- package/.claude/prompts/playwright-test-plan.md +12 -0
- package/.claude/settings.local.json +31 -0
- package/.github/agents/playwright-test-generator.agent.md +113 -0
- package/.github/agents/playwright-test-healer.agent.md +70 -0
- package/.github/agents/playwright-test-planner.agent.md +82 -0
- package/.github/prompts/playwright-test-coverage.prompt.md +31 -0
- package/.github/prompts/playwright-test-generate.prompt.md +12 -0
- package/.github/prompts/playwright-test-heal.prompt.md +6 -0
- package/.github/prompts/playwright-test-plan.prompt.md +9 -0
- package/.github/workflows/copilot-setup-steps.yml +34 -0
- package/.github/workflows/playwright-healer-agent.yml +140 -0
- package/.github/workflows/playwright.yml +40 -0
- package/.mcp.json +13 -0
- package/.vscode/extensions.json +6 -0
- package/.vscode/mcp.json +13 -0
- package/.vscode/settings.example.json +15 -0
- package/bitbucket-pipelines.yml +86 -0
- package/lib/WebActions.ts +107 -0
- package/package.json +33 -0
- package/pageRepository/ApplicantPage.ts +1171 -0
- package/pageRepository/CreateApplicationPage.ts +1736 -0
- package/playwright/.auth/user.json +0 -0
- package/specs/Applicant Create Application Page Test Plan.md +440 -0
- package/specs/Applicant Dashboard Page Test Plan.md +74 -0
- package/specs/Applicant Forgot Password Page Test Plan.md +112 -0
- package/specs/Applicant Help Page Test Plan.md +369 -0
- package/specs/Applicant Landing Page Test Plan.md +42 -0
- package/specs/Applicant Login Page Test Plan.md +116 -0
- package/specs/Applicant My Applications Page Test Plan.md +558 -0
- package/specs/Applicant My Medical Coverage Page Test Plan.md +689 -0
- package/specs/Applicant Privacy Policy Page Test Plan.md +196 -0
- package/specs/Applicant Resources Page Test Plan.md +107 -0
- package/specs/Applicant Self Register Page Test Plan.md +190 -0
- package/specs/README.md +3 -0
- package/test-data/Sample.png +0 -0
- package/test-data/createApplication/formData.json +42 -0
- package/test-data/createApplication/textMessages.json +52 -0
- package/test-data/forgotPassword/email.json +5 -0
- package/test-data/forgotPassword/textMessages.json +5 -0
- package/test-data/help/textContent.json +48 -0
- package/test-data/login/invalidUsernamePassword.json +4 -0
- package/test-data/login/textMessages.json +5 -0
- package/test-data/privacyPolicy/textContent.json +25 -0
- package/test-data/selfRegister/mailingAddressStates.json +21 -0
- package/test-data/selfRegister/registrationFieldData.json +13 -0
- package/test-data/selfRegister/suffix.json +3 -0
- package/test-data/selfRegister/textMessages.json +13 -0
- package/test-data/test-data.zip +0 -0
- package/tests/ApplicantCreateApplicationPageTest.spec.ts +1452 -0
- package/tests/ApplicantDashboardPageTest.spec.ts +74 -0
- package/tests/ApplicantForgotPasswordPageTest.spec.ts +88 -0
- package/tests/ApplicantHelpPageTest.spec.ts +468 -0
- package/tests/ApplicantLandingPageTest.spec.ts +33 -0
- package/tests/ApplicantLoginPageTest.spec.ts +117 -0
- package/tests/ApplicantMyApplicationsPageTest.spec.ts +516 -0
- package/tests/ApplicantMyMedicalCoveragePageTest.spec.ts +470 -0
- package/tests/ApplicantPrivacyPolicyPageTest.spec.ts +188 -0
- package/tests/ApplicantResourcesPageTest.spec.ts +117 -0
- package/tests/ApplicantSelfRegisterPageTest.spec.ts +254 -0
- package/tests/auth.setup.ts +42 -0
- package/tests/authState.ts +15 -0
- package/tests/example.spec.ts +18 -0
- package/tests/seed.spec.ts +7 -0
|
@@ -0,0 +1,558 @@
|
|
|
1
|
+
# Polk County Applicant My Applications Page Test Plan
|
|
2
|
+
|
|
3
|
+
## Application Overview
|
|
4
|
+
|
|
5
|
+
Validate the Polk County Healthcare Plan Applicant **My Applications** page at `https://polkcounty--polkdevnew.sandbox.my.site.com/polkphpapplicant/s/careprogram/CareProgram/Default`.
|
|
6
|
+
|
|
7
|
+
The page is an authenticated Salesforce Experience Cloud list view for applicant applications. Exploration found an **Applications** page title, a **Recently Viewed** list view, a searchable and sortable table, row-level application links, a row action menu, list view controls, authenticated portal header/footer, and an application record detail view with **Schedule Appointment**, **Request an Appeal**, **DETAILS**, **RELATED**, and **RESUME APPLICATION** actions.
|
|
8
|
+
|
|
9
|
+
Tests tagged `@auth` require an authenticated applicant session. Tests tagged `@no-auth` must run without stored auth state.
|
|
10
|
+
|
|
11
|
+
## Shared Preconditions
|
|
12
|
+
|
|
13
|
+
| Step | Action | Expected Result |
|
|
14
|
+
|------|--------|-----------------|
|
|
15
|
+
| 1 | Authenticate with a valid applicant account or reuse `playwright/.auth/user.json` | Applicant session is active |
|
|
16
|
+
| 2 | Navigate to `/polkphpapplicant/s/careprogram/CareProgram/Default` | Applications list loads |
|
|
17
|
+
| 3 | Wait for the **Applications** heading and **Logout** button | Page is ready for assertions |
|
|
18
|
+
|
|
19
|
+
## Test Scenarios
|
|
20
|
+
|
|
21
|
+
### TC-01 - Authenticated My Applications List Loads
|
|
22
|
+
|
|
23
|
+
**File:** `ApplicantMyApplicationsPageTest.spec.ts`
|
|
24
|
+
|
|
25
|
+
**Tags:** `@auth @smoke`
|
|
26
|
+
|
|
27
|
+
**Steps:**
|
|
28
|
+
1. Navigate to the My Applications URL with an authenticated applicant session.
|
|
29
|
+
2. Verify the browser title is **Applications**.
|
|
30
|
+
3. Verify the page shows the **Applications** heading and **Recently Viewed** list label.
|
|
31
|
+
4. Verify the list summary shows an item count and recently updated timestamp.
|
|
32
|
+
5. Verify the table/list view container is visible.
|
|
33
|
+
|
|
34
|
+
**Expected Result:** Authenticated applicant can load the My Applications list without an error page or redirect.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
### TC-02 - Header And Footer Are Visible
|
|
39
|
+
|
|
40
|
+
**Tags:** `@auth`
|
|
41
|
+
|
|
42
|
+
**Steps:**
|
|
43
|
+
1. Open the My Applications page.
|
|
44
|
+
2. Verify header links: **Home**, **Create Application**, **My Applications**, **My Medical Coverage**, **Resources**, **Help**, and **Privacy Policy**.
|
|
45
|
+
3. Verify **Logout** is visible.
|
|
46
|
+
4. Verify footer content: address, phone number, hours, footer links, and copyright.
|
|
47
|
+
|
|
48
|
+
**Expected Result:** Global applicant portal chrome is present and consistent with other authenticated applicant pages.
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
### TC-03 - List View Table Columns Are Visible
|
|
53
|
+
|
|
54
|
+
**Tags:** `@auth`
|
|
55
|
+
|
|
56
|
+
**Steps:**
|
|
57
|
+
1. Open the My Applications page.
|
|
58
|
+
2. Verify the visible columns: **Name**, **Last Modified Date**, **Last Modified By**, **Parent Program**, **Program Sponsor**, and **Action**.
|
|
59
|
+
3. Verify row action controls are present for visible records.
|
|
60
|
+
|
|
61
|
+
**Expected Result:** The table exposes the configured application columns and row action entry points.
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
### TC-04 - Existing Application Rows Display Expected Data
|
|
66
|
+
|
|
67
|
+
**Tags:** `@auth`
|
|
68
|
+
|
|
69
|
+
**Steps:**
|
|
70
|
+
1. Open the My Applications page for an applicant that has application records.
|
|
71
|
+
2. Verify at least one application row is visible.
|
|
72
|
+
3. Verify the application name is rendered as a link.
|
|
73
|
+
4. Verify **Last Modified Date** displays a valid date/time value when populated.
|
|
74
|
+
5. Verify blank optional columns do not break row layout.
|
|
75
|
+
|
|
76
|
+
**Expected Result:** Application rows render consistently, including records with duplicate names or blank optional fields.
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
### TC-05 - Search Returns Matching Applications
|
|
81
|
+
|
|
82
|
+
**Tags:** `@auth`
|
|
83
|
+
|
|
84
|
+
**Steps:**
|
|
85
|
+
1. Open the My Applications page.
|
|
86
|
+
2. Enter a known application name, for example `John`, in **Search this list...**.
|
|
87
|
+
3. Press `Enter`.
|
|
88
|
+
4. Wait for the list to refresh.
|
|
89
|
+
|
|
90
|
+
**Expected Result:** Matching application rows are displayed, and the clear-search control appears.
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
### TC-06 - Search With No Matches Shows Empty State
|
|
95
|
+
|
|
96
|
+
**Tags:** `@auth`
|
|
97
|
+
|
|
98
|
+
**Steps:**
|
|
99
|
+
1. Open the My Applications page.
|
|
100
|
+
2. Search for a value that should not match any application, for example `DefinitelyNoSuchApplication999`.
|
|
101
|
+
3. Press `Enter`.
|
|
102
|
+
|
|
103
|
+
**Expected Result:**
|
|
104
|
+
- List summary shows `0 items`.
|
|
105
|
+
- Table body shows **No items to display.**
|
|
106
|
+
- A **Clear** control is visible.
|
|
107
|
+
- Search helper text indicates non-searchable fields such as **Last Modified By**, **Last Modified Date**, **Parent Program**, and **Program Sponsor**.
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
### TC-07 - Clear Search Restores Default List
|
|
112
|
+
|
|
113
|
+
**Tags:** `@auth`
|
|
114
|
+
|
|
115
|
+
**Steps:**
|
|
116
|
+
1. Perform a no-match search.
|
|
117
|
+
2. Click **Clear**.
|
|
118
|
+
3. Wait for the list to refresh.
|
|
119
|
+
|
|
120
|
+
**Expected Result:** The default Recently Viewed application list is restored and the empty state is gone.
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
### TC-08 - Sort By Last Modified Date
|
|
125
|
+
|
|
126
|
+
**Tags:** `@auth`
|
|
127
|
+
|
|
128
|
+
**Steps:**
|
|
129
|
+
1. Open the My Applications page.
|
|
130
|
+
2. Click the **Last Modified Date** column sort control.
|
|
131
|
+
3. Verify the sorted indicator appears for the column.
|
|
132
|
+
4. Capture the first several visible row dates.
|
|
133
|
+
|
|
134
|
+
**Expected Result:** List summary indicates it is sorted by **Last Modified Date**, the column displays **Sorted Descending** or the active sort state, and visible rows follow the selected sort order.
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
### TC-09 - Sort By Name
|
|
139
|
+
|
|
140
|
+
**Tags:** `@auth`
|
|
141
|
+
|
|
142
|
+
**Steps:**
|
|
143
|
+
1. Open the My Applications page.
|
|
144
|
+
2. Click the **Name** column sort control.
|
|
145
|
+
3. Verify the sort state changes.
|
|
146
|
+
4. Click the same column again.
|
|
147
|
+
|
|
148
|
+
**Expected Result:** The table toggles between ascending and descending name sort without losing records or breaking row links.
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
### TC-10 - Column Action Menu Supports Text Display Options
|
|
153
|
+
|
|
154
|
+
**Tags:** `@auth`
|
|
155
|
+
|
|
156
|
+
**Steps:**
|
|
157
|
+
1. Open the My Applications page.
|
|
158
|
+
2. Click **Show Last Modified Date Column Actions**.
|
|
159
|
+
3. Verify the menu opens.
|
|
160
|
+
4. Select **Wrap text**.
|
|
161
|
+
5. Reopen the menu and select **Clip text**.
|
|
162
|
+
|
|
163
|
+
**Expected Result:** Column menu exposes **Wrap text** and **Clip text**, and changing the option does not corrupt row alignment.
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
### TC-11 - Row Action Menu Opens For An Application
|
|
168
|
+
|
|
169
|
+
**Tags:** `@auth`
|
|
170
|
+
|
|
171
|
+
**Steps:**
|
|
172
|
+
1. Open the My Applications page.
|
|
173
|
+
2. Click the first row **Show Actions** control.
|
|
174
|
+
3. Verify the menu opens.
|
|
175
|
+
|
|
176
|
+
**Expected Result:** Row action menu is visible and currently exposes **Edit** for the application row.
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
### TC-12 - Edit Row Action Opens Editable Application State Without Submitting
|
|
181
|
+
|
|
182
|
+
**Tags:** `@auth`
|
|
183
|
+
|
|
184
|
+
**Steps:**
|
|
185
|
+
1. Open the first row action menu.
|
|
186
|
+
2. Click **Edit**.
|
|
187
|
+
3. Verify an edit form, modal, or editable record state appears.
|
|
188
|
+
4. Close or cancel the edit state without saving.
|
|
189
|
+
|
|
190
|
+
**Expected Result:** Edit can be opened and cancelled without changing application data.
|
|
191
|
+
|
|
192
|
+
**Failure Conditions:** Unsaved changes are committed, the page crashes, or the user cannot return to the list/record safely.
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
### TC-13 - List View Selector Displays Available Views
|
|
197
|
+
|
|
198
|
+
**Tags:** `@auth`
|
|
199
|
+
|
|
200
|
+
**Steps:**
|
|
201
|
+
1. Open the My Applications page.
|
|
202
|
+
2. Click **Select a List View: Applications**.
|
|
203
|
+
3. Verify available list views.
|
|
204
|
+
|
|
205
|
+
**Expected Result:** The selector includes **All Applications**, **Appealed Applications**, **Recently Viewed**, and **With Priority Indicator**.
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
### TC-14 - Switch To Each Available List View
|
|
210
|
+
|
|
211
|
+
**Tags:** `@auth`
|
|
212
|
+
|
|
213
|
+
**Steps:**
|
|
214
|
+
1. Open the list view selector.
|
|
215
|
+
2. Select each available list view one at a time.
|
|
216
|
+
3. Wait for the list to refresh after each selection.
|
|
217
|
+
|
|
218
|
+
**Expected Result:** Each list view loads without an application error. Empty views show a clear empty state; populated views show table rows with the expected columns.
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
### TC-15 - List View Controls Menu Behavior
|
|
223
|
+
|
|
224
|
+
**Tags:** `@auth`
|
|
225
|
+
|
|
226
|
+
**Steps:**
|
|
227
|
+
1. Open the My Applications page.
|
|
228
|
+
2. Click **List View Controls**.
|
|
229
|
+
3. Verify menu options are displayed.
|
|
230
|
+
4. Dismiss the menu with `Escape`.
|
|
231
|
+
|
|
232
|
+
**Expected Result:** Menu displays configured Salesforce list controls such as **New**, **Clone**, **Rename**, **Sharing Settings**, **Select Fields to Display**, **Delete**, and **Reset Column Widths**. Menu can be dismissed without navigation.
|
|
233
|
+
|
|
234
|
+
**Security Note:** Confirm with product ownership whether applicant users should see administrative list-view actions such as **New**, **Delete**, or **Sharing Settings**.
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
### TC-16 - Refresh List View
|
|
239
|
+
|
|
240
|
+
**Tags:** `@auth`
|
|
241
|
+
|
|
242
|
+
**Steps:**
|
|
243
|
+
1. Open the My Applications page.
|
|
244
|
+
2. Click **Refresh**.
|
|
245
|
+
3. Wait for the updated timestamp or loading state to complete.
|
|
246
|
+
|
|
247
|
+
**Expected Result:** List refreshes in place, keeps the user on the My Applications page, and does not duplicate or lose rows.
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
### TC-17 - Disabled Charts And Filters Controls
|
|
252
|
+
|
|
253
|
+
**Tags:** `@auth`
|
|
254
|
+
|
|
255
|
+
**Steps:**
|
|
256
|
+
1. Open the My Applications page.
|
|
257
|
+
2. Verify **Charts** button is disabled.
|
|
258
|
+
3. Verify **Filters** button is disabled.
|
|
259
|
+
4. Hover or inspect titles.
|
|
260
|
+
|
|
261
|
+
**Expected Result:** Disabled controls expose explanatory titles: **Charts are not available for this list view** and **Filters are not available for this list view**.
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
### TC-18 - Open Application Record Detail From List
|
|
266
|
+
|
|
267
|
+
**Tags:** `@auth @smoke`
|
|
268
|
+
|
|
269
|
+
**Steps:**
|
|
270
|
+
1. Open the My Applications page.
|
|
271
|
+
2. Click the first application name link.
|
|
272
|
+
3. Wait for the record detail page to load.
|
|
273
|
+
|
|
274
|
+
**Expected Result:**
|
|
275
|
+
- URL changes to `/polkphpapplicant/s/careprogram/<recordId>/<slug>`.
|
|
276
|
+
- Browser title includes **Application: <application name>**.
|
|
277
|
+
- Header shows **Application** and the selected application name.
|
|
278
|
+
|
|
279
|
+
---
|
|
280
|
+
|
|
281
|
+
### TC-19 - Application Record Summary Fields Are Visible
|
|
282
|
+
|
|
283
|
+
**Tags:** `@auth`
|
|
284
|
+
|
|
285
|
+
**Steps:**
|
|
286
|
+
1. Open an application record detail page.
|
|
287
|
+
2. Verify summary fields such as **Status**, **Application Total FPL**, **Review Total FPL**, **Total Household Monthly Income**, and **Reviewer Total Household Income**.
|
|
288
|
+
3. Verify currency values are formatted correctly when present.
|
|
289
|
+
|
|
290
|
+
**Expected Result:** Record summary data is visible and formatted consistently.
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
### TC-20 - Pending Application Warning Displays
|
|
295
|
+
|
|
296
|
+
**Tags:** `@auth`
|
|
297
|
+
|
|
298
|
+
**Steps:**
|
|
299
|
+
1. Open a pending or new application record.
|
|
300
|
+
2. Inspect the warning area above the tabs/actions.
|
|
301
|
+
|
|
302
|
+
**Expected Result:** Pending applications display the warning: **Pending application: Please complete your application by using the Resume Application link's or the Edit Application option.**
|
|
303
|
+
|
|
304
|
+
---
|
|
305
|
+
|
|
306
|
+
### TC-21 - Record Details Tab Displays Application Fields
|
|
307
|
+
|
|
308
|
+
**Tags:** `@auth`
|
|
309
|
+
|
|
310
|
+
**Steps:**
|
|
311
|
+
1. Open an application record.
|
|
312
|
+
2. Select **DETAILS**.
|
|
313
|
+
3. Verify the details section expands or remains visible.
|
|
314
|
+
4. Verify key fields such as **Submit Date**, **Assigned Date**, **Name**, **Owner Name**, **Status**, **End Date**, **Household Number**, **Number of Household members**, and Social Services fields.
|
|
315
|
+
|
|
316
|
+
**Expected Result:** Details tab exposes read-only or configured editable application metadata without layout overlap.
|
|
317
|
+
|
|
318
|
+
---
|
|
319
|
+
|
|
320
|
+
### TC-22 - Related Tab Displays Related Records Or Empty State
|
|
321
|
+
|
|
322
|
+
**Tags:** `@auth`
|
|
323
|
+
|
|
324
|
+
**Steps:**
|
|
325
|
+
1. Open an application record.
|
|
326
|
+
2. Select **RELATED**.
|
|
327
|
+
3. Wait for related content to load.
|
|
328
|
+
|
|
329
|
+
**Expected Result:** Related tab either displays related lists for the application or a clear empty state. No console error or blank page is shown.
|
|
330
|
+
|
|
331
|
+
---
|
|
332
|
+
|
|
333
|
+
### TC-23 - Resume Application Navigates To Application Flow
|
|
334
|
+
|
|
335
|
+
**Tags:** `@auth`
|
|
336
|
+
|
|
337
|
+
**Steps:**
|
|
338
|
+
1. Open a pending application record.
|
|
339
|
+
2. Click **RESUME APPLICATION**.
|
|
340
|
+
3. Wait for navigation or embedded flow content.
|
|
341
|
+
|
|
342
|
+
**Expected Result:** Applicant is taken to the appropriate resume/edit application flow for the selected record and does not start an unrelated new application.
|
|
343
|
+
|
|
344
|
+
---
|
|
345
|
+
|
|
346
|
+
### TC-24 - Schedule Appointment Opens And Cancels Safely
|
|
347
|
+
|
|
348
|
+
**Tags:** `@auth`
|
|
349
|
+
|
|
350
|
+
**Steps:**
|
|
351
|
+
1. Open an application record.
|
|
352
|
+
2. Click **Schedule Appointment**.
|
|
353
|
+
3. Verify the appointment UI, modal, or dialog opens.
|
|
354
|
+
4. Cancel or close the dialog.
|
|
355
|
+
|
|
356
|
+
**Expected Result:** Appointment flow opens without immediately committing changes and can be cancelled safely.
|
|
357
|
+
|
|
358
|
+
---
|
|
359
|
+
|
|
360
|
+
### TC-25 - Request Appeal Opens And Cancels Safely
|
|
361
|
+
|
|
362
|
+
**Tags:** `@auth`
|
|
363
|
+
|
|
364
|
+
**Steps:**
|
|
365
|
+
1. Open an application record.
|
|
366
|
+
2. Click **Request an Appeal**.
|
|
367
|
+
3. Verify the appeal UI, modal, or dialog opens.
|
|
368
|
+
4. Cancel or close the dialog.
|
|
369
|
+
|
|
370
|
+
**Expected Result:** Appeal flow opens without submitting an appeal until required fields and final confirmation are completed.
|
|
371
|
+
|
|
372
|
+
---
|
|
373
|
+
|
|
374
|
+
### TC-26 - Direct Unauthenticated Access Redirects To Login
|
|
375
|
+
|
|
376
|
+
**Tags:** `@no-auth @smoke`
|
|
377
|
+
|
|
378
|
+
**Steps:**
|
|
379
|
+
1. Clear browser storage or create a new context without storage state.
|
|
380
|
+
2. Navigate directly to `/polkphpapplicant/s/careprogram/CareProgram/Default`.
|
|
381
|
+
|
|
382
|
+
**Expected Result:**
|
|
383
|
+
- User is redirected to `/polkphpapplicant/s/login/`.
|
|
384
|
+
- URL contains a `startURL` pointing back to the requested My Applications page.
|
|
385
|
+
- Login form shows **UserName**, **Password**, **Log In**, **Forgot password?**, and **Sign Up**.
|
|
386
|
+
|
|
387
|
+
---
|
|
388
|
+
|
|
389
|
+
### TC-27 - Login Redirect Returns User To My Applications
|
|
390
|
+
|
|
391
|
+
**Tags:** `@no-auth`
|
|
392
|
+
|
|
393
|
+
**Steps:**
|
|
394
|
+
1. Navigate directly to My Applications without auth.
|
|
395
|
+
2. Complete login with valid credentials.
|
|
396
|
+
3. Wait for post-login navigation.
|
|
397
|
+
|
|
398
|
+
**Expected Result:** User lands on the originally requested My Applications page, not an unrelated dashboard, when `startURL` is present.
|
|
399
|
+
|
|
400
|
+
---
|
|
401
|
+
|
|
402
|
+
### TC-28 - Logout Protects My Applications Route
|
|
403
|
+
|
|
404
|
+
**Tags:** `@auth`
|
|
405
|
+
|
|
406
|
+
**Steps:**
|
|
407
|
+
1. Open My Applications with an authenticated session.
|
|
408
|
+
2. Click **Logout**.
|
|
409
|
+
3. Attempt to navigate back to the My Applications URL.
|
|
410
|
+
|
|
411
|
+
**Expected Result:** User cannot access the list after logout and is redirected to login.
|
|
412
|
+
|
|
413
|
+
---
|
|
414
|
+
|
|
415
|
+
### TC-29 - Invalid Or Unauthorized Application Record Access
|
|
416
|
+
|
|
417
|
+
**Tags:** `@auth`
|
|
418
|
+
|
|
419
|
+
**Steps:**
|
|
420
|
+
1. Open My Applications as Applicant A.
|
|
421
|
+
2. Attempt to navigate directly to an application record ID that does not exist or does not belong to Applicant A.
|
|
422
|
+
|
|
423
|
+
**Expected Result:** User sees a safe not-found/access-denied state or is redirected, and no other applicant's protected information is exposed.
|
|
424
|
+
|
|
425
|
+
---
|
|
426
|
+
|
|
427
|
+
### TC-30 - Applicant With No Applications
|
|
428
|
+
|
|
429
|
+
**Tags:** `@auth`
|
|
430
|
+
|
|
431
|
+
**Precondition:** Use or seed an applicant account with no application records.
|
|
432
|
+
|
|
433
|
+
**Steps:**
|
|
434
|
+
1. Navigate to My Applications.
|
|
435
|
+
2. Wait for list load.
|
|
436
|
+
|
|
437
|
+
**Expected Result:** Page shows the Applications list container and a clear empty state such as **No items to display**. Header/footer and navigation remain available.
|
|
438
|
+
|
|
439
|
+
---
|
|
440
|
+
|
|
441
|
+
### TC-31 - Large Result Set And Virtual Scrolling
|
|
442
|
+
|
|
443
|
+
**Tags:** `@auth`
|
|
444
|
+
|
|
445
|
+
**Precondition:** Applicant has more than 50 application records.
|
|
446
|
+
|
|
447
|
+
**Steps:**
|
|
448
|
+
1. Open My Applications.
|
|
449
|
+
2. Verify the summary indicates `50+ items` or equivalent.
|
|
450
|
+
3. Scroll through the list.
|
|
451
|
+
4. Verify rows continue loading and column headers remain usable.
|
|
452
|
+
|
|
453
|
+
**Expected Result:** Large lists remain performant and row navigation/action controls work for rows loaded after scrolling.
|
|
454
|
+
|
|
455
|
+
---
|
|
456
|
+
|
|
457
|
+
### TC-32 - Duplicate Application Names
|
|
458
|
+
|
|
459
|
+
**Tags:** `@auth`
|
|
460
|
+
|
|
461
|
+
**Precondition:** Applicant has multiple applications with the same visible name.
|
|
462
|
+
|
|
463
|
+
**Steps:**
|
|
464
|
+
1. Open My Applications.
|
|
465
|
+
2. Locate duplicate application names.
|
|
466
|
+
3. Open each duplicate record.
|
|
467
|
+
|
|
468
|
+
**Expected Result:** Each duplicate link navigates to a unique record ID, and record detail data corresponds to the selected row.
|
|
469
|
+
|
|
470
|
+
---
|
|
471
|
+
|
|
472
|
+
### TC-33 - Keyboard Navigation
|
|
473
|
+
|
|
474
|
+
**Tags:** `@auth @accessibility`
|
|
475
|
+
|
|
476
|
+
**Steps:**
|
|
477
|
+
1. Open My Applications.
|
|
478
|
+
2. Use `Tab` and `Shift+Tab` to move through header links, search, list controls, column controls, row links, row action controls, and footer links.
|
|
479
|
+
3. Use `Enter` or `Space` to activate search, menus, and row links.
|
|
480
|
+
4. Dismiss menus with `Escape`.
|
|
481
|
+
|
|
482
|
+
**Expected Result:** Focus is visible, focus order is logical, all interactive controls are keyboard reachable, and menus can be opened and closed from the keyboard.
|
|
483
|
+
|
|
484
|
+
---
|
|
485
|
+
|
|
486
|
+
### TC-34 - Axe Accessibility Baseline
|
|
487
|
+
|
|
488
|
+
**Tags:** `@auth @accessibility`
|
|
489
|
+
|
|
490
|
+
**Steps:**
|
|
491
|
+
1. Open My Applications in an authenticated session.
|
|
492
|
+
2. Run Axe against the rendered page with WCAG 2.x A/AA tags.
|
|
493
|
+
|
|
494
|
+
**Expected Result:** No critical or serious accessibility violations. Exploration on the current authenticated list page returned zero WCAG 2.x A/AA violations.
|
|
495
|
+
|
|
496
|
+
---
|
|
497
|
+
|
|
498
|
+
### TC-35 - Accessible Names And Table Semantics
|
|
499
|
+
|
|
500
|
+
**Tags:** `@auth @accessibility`
|
|
501
|
+
|
|
502
|
+
**Steps:**
|
|
503
|
+
1. Open My Applications.
|
|
504
|
+
2. Verify search input has accessible name **Search this list...**.
|
|
505
|
+
3. Verify icon-only buttons expose usable names or titles, including **List View Controls**, **Refresh**, **Charts**, **Filters**, and column action buttons.
|
|
506
|
+
4. Verify sortable column headers communicate sort state after sorting.
|
|
507
|
+
|
|
508
|
+
**Expected Result:** Screen readers can identify page controls, row links, column actions, disabled controls, and active sort state.
|
|
509
|
+
|
|
510
|
+
---
|
|
511
|
+
|
|
512
|
+
### TC-36 - Responsive Layout
|
|
513
|
+
|
|
514
|
+
**Tags:** `@auth`
|
|
515
|
+
|
|
516
|
+
**Steps:**
|
|
517
|
+
1. Open My Applications at desktop viewport.
|
|
518
|
+
2. Repeat at tablet and mobile viewport sizes.
|
|
519
|
+
3. Verify header navigation, search, list controls, horizontal table scrolling, row actions, and footer.
|
|
520
|
+
4. Open a record detail page at each viewport.
|
|
521
|
+
|
|
522
|
+
**Expected Result:** Content remains readable and usable without overlapping text, clipped essential controls, or inaccessible row actions.
|
|
523
|
+
|
|
524
|
+
---
|
|
525
|
+
|
|
526
|
+
### TC-37 - Browser Console And Network Health
|
|
527
|
+
|
|
528
|
+
**Tags:** `@auth`
|
|
529
|
+
|
|
530
|
+
**Steps:**
|
|
531
|
+
1. Open My Applications.
|
|
532
|
+
2. Monitor console messages and failed network requests during initial load, search, sort, and record navigation.
|
|
533
|
+
|
|
534
|
+
**Expected Result:** No failed application-critical network requests. Console warnings from Salesforce framework code should be reviewed, but test should fail only on product-impacting errors.
|
|
535
|
+
|
|
536
|
+
## Traceability
|
|
537
|
+
|
|
538
|
+
| Area | Covered By |
|
|
539
|
+
|------|------------|
|
|
540
|
+
| Authenticated list load | TC-01, TC-02, TC-03, TC-04 |
|
|
541
|
+
| Search and validation/empty states | TC-05, TC-06, TC-07 |
|
|
542
|
+
| Sorting and columns | TC-08, TC-09, TC-10 |
|
|
543
|
+
| Menus and list controls | TC-11, TC-12, TC-13, TC-14, TC-15, TC-16, TC-17 |
|
|
544
|
+
| Record detail | TC-18, TC-19, TC-20, TC-21, TC-22, TC-23 |
|
|
545
|
+
| Record actions | TC-24, TC-25 |
|
|
546
|
+
| Authentication coverage | TC-26, TC-27, TC-28, TC-29 |
|
|
547
|
+
| Edge cases | TC-30, TC-31, TC-32 |
|
|
548
|
+
| Accessibility and responsive behavior | TC-33, TC-34, TC-35, TC-36 |
|
|
549
|
+
| Observability | TC-37 |
|
|
550
|
+
|
|
551
|
+
## Notes
|
|
552
|
+
|
|
553
|
+
- The `mcp__playwright_test__` planner tools returned `Transport closed` during this planning session, so the plan was saved directly as markdown after local Playwright exploration.
|
|
554
|
+
- Current explored data showed many duplicate **John Doe Application** records and a `50+ items` list summary.
|
|
555
|
+
- Current row action menu exposed **Edit**.
|
|
556
|
+
- Current list view selector exposed **All Applications**, **Appealed Applications**, **Recently Viewed**, and **With Priority Indicator**.
|
|
557
|
+
- Current no-match search showed **No items to display** and helper text about non-searchable fields.
|
|
558
|
+
- Current unauthenticated direct access redirected to login with a `startURL` back to the My Applications route.
|