feat: Implement routines feature with CRUD operations and child assignment
All checks were successful
Chore App Build, Test, and Push Docker Images / build-and-push (push) Successful in 3m0s
All checks were successful
Chore App Build, Test, and Push Docker Images / build-and-push (push) Successful in 3m0s
- Add backend routines management with add, get, update, delete, and list functionalities. - Create models for Routine, RoutineItem, RoutineSchedule, and RoutineExtension. - Develop event types for routine confirmation and modification. - Implement frontend components for routine assignment, confirmation dialog, and routine management views. - Add unit tests for routine API and integration tests for routine CRUD flow. - Create end-to-end test plan for routines feature covering parent and child interactions.
This commit is contained in:
120
frontend/e2e/plans/routines-feature.plan.md
Normal file
120
frontend/e2e/plans/routines-feature.plan.md
Normal file
@@ -0,0 +1,120 @@
|
||||
# Routines Feature E2E Plan
|
||||
|
||||
## Application Overview
|
||||
|
||||
The routines feature adds a new parent-defined checklist entity that sits between chores and rewards in child mode. A routine is confirmed as a whole (not per-item), then approved or rejected by the parent. Routine visibility and state are schedule-aware, include deadline extension support, and support per-child point overrides.
|
||||
|
||||
This plan is intentionally implementation-driven so we can incrementally add tests as each phase ships.
|
||||
|
||||
---
|
||||
|
||||
## Coverage Areas
|
||||
|
||||
### 1. Parent Routine Library Management
|
||||
|
||||
File target: e2e/mode_parent/routines/routine-library.spec.ts
|
||||
|
||||
1. Parent can create a routine with name, points, image.
|
||||
2. Parent can add multiple routine items and persist item order.
|
||||
3. Parent can edit routine metadata and item metadata.
|
||||
4. Parent can delete a routine item.
|
||||
5. Parent can delete a routine and it disappears from routine library list.
|
||||
|
||||
### 2. Parent Child Assignment and Management
|
||||
|
||||
File target: e2e/mode_parent/routines/routine-assignment.spec.ts
|
||||
|
||||
1. Parent can assign routine to a child from assignable list.
|
||||
2. Parent can remove routine assignment from child.
|
||||
3. Parent can set/replace full routine assignment list for a child.
|
||||
4. Parent can set routine point override and child-facing value reflects override.
|
||||
5. Parent can set routine schedule and update it later.
|
||||
6. Parent can extend routine deadline for today.
|
||||
|
||||
### 3. Child Routine Rendering and Navigation
|
||||
|
||||
File target: e2e/mode_child/routines/routine-visibility.spec.ts
|
||||
|
||||
1. Routines list renders between chores and rewards.
|
||||
2. Clicking a routine opens routine detail route (/child/:id/routine/:routineId).
|
||||
3. Detail view shows routine image, title, points, and non-interactive item list.
|
||||
4. Back navigation returns to child main view.
|
||||
|
||||
### 4. Child Routine Confirmation Flow
|
||||
|
||||
File target: e2e/mode_child/routines/routine-confirmation.spec.ts
|
||||
|
||||
1. Child can mark routine Done; routine becomes pending.
|
||||
2. Child can cancel a pending routine confirmation.
|
||||
3. Child cannot submit duplicate pending confirmations.
|
||||
4. Approved-today routine shows completed state on child UI.
|
||||
5. Rejected routine returns to available state.
|
||||
|
||||
### 5. Parent Pending Confirmation Flow
|
||||
|
||||
File target: e2e/mode_parent/routines/routine-approval.spec.ts
|
||||
|
||||
1. Routine confirmation appears in parent notification/pending list.
|
||||
2. Parent can approve routine; child points increase by default routine points.
|
||||
3. Parent can reject routine; child points do not change.
|
||||
4. Parent can reset approved/rejected routine to clear completion state.
|
||||
5. If routine override exists, approval uses override points instead of base points.
|
||||
|
||||
### 6. Routine Scheduling and Deadline Behavior
|
||||
|
||||
File target: e2e/mode_child/routines/routine-schedule.spec.ts
|
||||
|
||||
1. Day-based schedules only show routines on scheduled days.
|
||||
2. Interval schedules show/hide routines on expected interval dates.
|
||||
3. Routine with deadline in the past displays TOO LATE and blocks Done.
|
||||
4. Extending deadline removes TOO LATE state for that day.
|
||||
5. Changing schedule resets stale pending status.
|
||||
|
||||
### 7. Cascade and Data Integrity
|
||||
|
||||
File target: e2e/mode_parent/routines/routine-cascade.spec.ts
|
||||
|
||||
1. Deleting routine removes it from all assigned children.
|
||||
2. Deleting routine removes routine items.
|
||||
3. Deleting routine removes routine schedules and extensions.
|
||||
4. Deleting routine removes routine point overrides.
|
||||
5. Deleting child removes child routine schedules/extensions/overrides.
|
||||
|
||||
### 8. SSE Reactivity
|
||||
|
||||
File target: e2e/multi-session/routines/routine-sse.spec.ts
|
||||
|
||||
1. Parent routine add/edit/delete updates child assignment views without refresh.
|
||||
2. Child routine pending/approved/rejected/reset updates parent notification UI without refresh.
|
||||
3. Schedule/extension changes update child routine card state without refresh.
|
||||
4. Override changes update points display without refresh.
|
||||
|
||||
---
|
||||
|
||||
## Test Data and Execution Notes
|
||||
|
||||
1. Use API seeding in beforeAll and cleanup in afterAll per spec file.
|
||||
2. Use stable role/label-based locators only.
|
||||
3. Avoid /auth/login navigation in tests; rely on global storageState.
|
||||
4. For time-sensitive schedule tests, set deterministic times (or use clock controls where practical).
|
||||
|
||||
---
|
||||
|
||||
## Unit Test Expansion Checklist
|
||||
|
||||
### Backend unit tests to add during implementation
|
||||
|
||||
1. Routine CRUD API validation and ownership checks.
|
||||
2. Routine item CRUD and ordering behavior.
|
||||
3. Child routine assignment list and assignable-list filtering.
|
||||
4. Routine confirmation approve/reject/reset state transitions.
|
||||
5. Routine schedule and extension endpoints (including duplicate extension conflict).
|
||||
6. Routine deletion cascades (items/schedules/extensions/overrides/child assignments).
|
||||
|
||||
### Frontend unit tests to add during implementation
|
||||
|
||||
1. API helper coverage for routine endpoints.
|
||||
2. ScheduleModal entityType routing behavior for task vs routine.
|
||||
3. Child routine list sorting/filtering utility behavior.
|
||||
4. Routine detail confirmation UI state transitions.
|
||||
5. Parent pending confirmation card rendering for entity_type='routine'.
|
||||
Reference in New Issue
Block a user