11 KiB
E2E Test Plan — Bug Fixes 1.0.6 Set 1
Covers the bug fixes from .github/specs/bugs-1.0.6-01/bugs-1.0.6-set01.md. Each section proposes new E2E specs or additions to existing specs.
1. Assign View Shows Child Name
File: e2e/mode_parent/task-assignment/assign-title-shows-child-name.spec.ts
Project: chromium-task-assignment
Seed: Create an isolated child with a known name via API. Create at least one chore, reward, kindness, and penalty task.
1.1. "Assign Chores" heading contains child name
- Navigate to
/parent/{childId}/assign-chores?name={childName} - Verify the heading text includes the child's name
1.2. "Assign Rewards" heading contains child name
- Navigate to
/parent/{childId}/assign-rewards?name={childName} - Verify heading
1.3. "Assign Kindnesses" heading contains child name
- Navigate to
/parent/{childId}/assign-kindness?name={childName} - Verify heading
1.4. "Assign Penalties" heading contains child name
- Navigate to
/parent/{childId}/assign-penalties?name={childName} - Verify heading
2. General Chore Approval — No COMPLETED Stamp
File: e2e/mode_parent/task-activation/general-chore-no-completed.spec.ts
Project: chromium-task-activation
Seed: Create an isolated child, one general (unscheduled) chore, and one scheduled chore. Assign both to the child.
2.1. Approving a general chore awards points
- Click general chore → confirm in dialog → approve
- Verify child's points increase by chore value
2.2. General chore does NOT show COMPLETED stamp after approval
- After approval, verify the chore card does not contain "COMPLETED" text
2.3. General chore can be triggered again immediately after approval
- Click the same general chore again
- Verify the confirmation dialog re-appears (chore is re-triggerable)
2.4. Scheduled chore DOES show COMPLETED after approval (contrast)
- Trigger and approve the scheduled chore
- Verify "COMPLETED" stamp is visible on that card
3. Extend Time Removes TOO LATE Banner
Existing file: e2e/mode_parent/chore-scheduler/extend-time.spec.ts
The existing spec already has tests for "Extend Time removes TOO LATE badge" and "gray styling removed." The bug fix ensures refresh() is called immediately, so the existing tests should pass without page reload. If not already asserted:
3.1. TOO LATE disappears without page reload (addition to existing spec)
- After clicking "Extend Time," assert TOO LATE text is hidden within 3 seconds
- Do NOT call
page.reload()between extension and assertion
4. Notification Card Overflow
File: e2e/mode_parent/notifications/notification-card-overflow.spec.ts
Project: chromium-task-activation or new chromium-notifications
Seed: Create child + a chore with a very long name (50+ characters). Assign and trigger it so a notification is created.
4.1. Notification icon stays within card boundaries
- Navigate to notifications view
- Get the bounding box of the notification card and its icon
- Assert the icon's bounding box is fully contained within the card's bounding box
4.2. Long notification text does not visually overflow
- Assert the card element has appropriate overflow CSS (
overflow: hiddenor similar) - Optionally use
toHaveScreenshot()for visual regression
Note: This test benefits from visual regression testing (expect(page).toHaveScreenshot()) more than functional assertions, since overflow is inherently visual.
5. Override SSE Updates Child View
File: e2e/mode_parent/task-modification/override-sse-child-update.spec.ts
Project: chromium-task-modification
Seed: Create child + one chore, one kindness, one penalty. Assign all to the child.
5.1. Changing chore override points updates child view in real time
- Open child view in the browser (
goToChildView) - Via API, set a point override on the chore:
PUT /api/child/{id}/task/{taskId}/override - Without page reload, verify the chore card displays the new point value
5.2. Changing kindness override points updates child view
- Same pattern for kindness task — set override via API, assert child view updates
5.3. Changing penalty override points updates child view
- Same pattern for penalty task
5.4. Deleting an override reverts child view to original points
- Remove the override via API
- Verify child view reverts to original point value without reload
6. Scroll to Edited Task After Save
File: e2e/mode_parent/task-modification/scroll-to-edited-task.spec.ts
Project: chromium-task-modification
Seed: Create child + 10–15 chores and 5+ rewards (enough to require both vertical and horizontal scrolling). Assign all to the child.
6.1. Edited chore card scrolls into viewport after override save
- Navigate to parent child view
- Open override modal on a chore that requires scrolling to reach
- Save a new point value
- Assert the edited card
toBeInViewport()after the list refreshes
6.2. Edited reward card scrolls into viewport after override save
- Open override modal on a distant reward
- Save, assert card
toBeInViewport()
7. Task Sorting — Parent Mode
File: e2e/mode_parent/task-sorting/parent-sort-order.spec.ts
Project: New chromium-task-sorting or chromium-chore-scheduler
Seed: Create child + 5 chores in different states:
- A pending chore (child triggered, not yet approved)
- A general (unscheduled) chore
- An expired scheduled chore (today, deadline in the past → TOO LATE)
- A completed scheduled chore (triggered + approved)
- A chore scheduled on a non-today day (unscheduled for today)
Also create 2+ rewards: one with a pending request, one without.
7.1. Parent chore sort: pending → general → expired → completed → unscheduled
- Navigate to parent child view
- Read all chore card names in DOM order
- Assert the order matches: pending chore first, then general, then expired, then completed, then unscheduled-today
7.2. Parent reward sort: pending requests appear first
- Read all reward card names in DOM order
- Assert the pending-request reward appears before other rewards
8. Task Sorting — Child Mode
File: e2e/mode_parent/task-sorting/child-sort-order.spec.ts
Project: Same as §7
Seed: Same child + tasks as §7, plus rewards with varying costs.
8.1. Child chore sort: scheduled today (earliest deadline first) → general → pending
- Switch to child view (
goToChildView) - Read all visible chore card names in DOM order
- Assert: scheduled-today chores first (sorted by deadline), then general, then pending
- Non-today chores should be hidden in child mode
8.2. Child reward sort: pending first, then ascending by points needed
- Read all reward card names in DOM order
- Assert: pending reward first, remaining sorted by ascending cost/points-needed
9. Notification Click Navigates and Scrolls to Task
File: e2e/mode_parent/notifications/notification-click-scroll.spec.ts
Project: chromium-task-activation or new chromium-notifications
Seed: Create child + many chores (10+). Trigger one chore to create a pending notification. The triggered chore should be far enough in the list to require scrolling.
9.1. Clicking a chore notification navigates to parent child view
- Navigate to notifications page
- Click the pending chore notification
- Verify URL matches
/parent/{childId}withscrollToandentityTypequery params
9.2. Target chore card is scrolled into viewport after navigation
- After navigation from notification click, assert the target chore card
toBeInViewport()
9.3. Works for reward notifications too
- Request a reward → navigate to notifications → click → verify reward card is in viewport
10. Pending Status Resets on Task/Reward Modification
File: e2e/mode_parent/task-modification/pending-reset-on-edit.spec.ts
Project: chromium-task-modification
Seed: Create child + one chore + one reward. Assign both. Create a chore schedule.
10.1. Editing chore points clears pending status
- Trigger the chore (creates pending confirmation)
- Verify chore card shows pending state
- Edit the parent task's points via API:
POST /api/task/{taskId}/editwith new points - Refresh or wait for SSE — verify the chore card no longer shows pending state
10.2. Changing chore schedule clears pending status
- Trigger the chore again
- Set a new schedule via API:
PUT /api/child/{childId}/task/{taskId}/schedule - Verify pending is cleared
10.3. Editing reward cost clears pending reward request
- Request the reward (creates pending request)
- Edit the reward's cost via API
- Verify the reward card no longer shows pending state
10.4. Completed chores remain completed after point edit
- Complete and approve a scheduled chore so it shows COMPLETED
- Edit the parent task's points
- Verify the chore still shows COMPLETED stamp
10.5. Editing task name only (no point change) does NOT clear pending
- Trigger the chore
- Edit the task name only (points unchanged) via API
- Verify the chore still shows pending state
Summary
| # | Area | Spec File | Tests | Priority |
|---|---|---|---|---|
| 1 | Assign view child name | task-assignment/assign-title-shows-child-name.spec.ts |
4 | Medium |
| 2 | General chore no COMPLETED | task-activation/general-chore-no-completed.spec.ts |
4 | High |
| 3 | Extend time TOO LATE | Existing chore-scheduler/extend-time.spec.ts |
0–1 | Low |
| 4 | Notification overflow | notifications/notification-card-overflow.spec.ts |
2 | Low |
| 5 | Override SSE child update | task-modification/override-sse-child-update.spec.ts |
4 | High |
| 6 | Scroll to edited task | task-modification/scroll-to-edited-task.spec.ts |
2 | Medium |
| 7 | Parent sort order | task-sorting/parent-sort-order.spec.ts |
2 | High |
| 8 | Child sort order | task-sorting/child-sort-order.spec.ts |
2 | High |
| 9 | Notification click scroll | notifications/notification-click-scroll.spec.ts |
3 | Medium |
| 10 | Pending reset on edit | task-modification/pending-reset-on-edit.spec.ts |
5 | High |
Recommended implementation order: #2, #10, #7, #8, #5, #9, #6, #1, #3, #4
Notes:
- Bug #1 (uppercase verification code) is omitted from this E2E plan because reaching the PIN setup step requires email delivery; this is better covered by a component-level test on
ParentPinSetup.vue. - Bug #4 (extend time) is largely already covered by the existing
extend-time.spec.ts— only a minor addition may be needed. - Bug #5 (notification overflow) is best validated through visual regression (
toHaveScreenshot()) rather than functional assertions.