feat: implement routines feature for child and parent modes
All checks were successful
Chore App Build, Test, and Push Docker Images / build-and-push (push) Successful in 2m23s

- Added backend models for routines, routine items, and schedules.
- Created API endpoints for managing routines and their items.
- Implemented frontend components for routine creation, detail view, and assignment.
- Integrated routines into child view with a scrolling list and approval workflow.
- Added push notifications for routine confirmations and pending approvals.
- Refactored existing components to accommodate new routines functionality.
- Updated tests to cover new routines feature and ensure proper functionality.
This commit is contained in:
2026-04-28 23:30:52 -04:00
parent c840825549
commit 6bf10fda2f
19 changed files with 422 additions and 126 deletions

View File

@@ -3,6 +3,12 @@
import { test, expect } from '@playwright/test'
import { STORAGE_STATE_CC } from '../../e2e-constants'
/** Navigate to the parent children list and wait for the Add Child button to be ready. */
async function gotoParentList(page: import('@playwright/test').Page): Promise<void> {
await page.goto('/')
await expect(page.getByRole('button', { name: 'Add Child' })).toBeVisible({ timeout: 10000 })
}
test.describe('Create Child', () => {
test.describe.configure({ mode: 'serial' })
@@ -17,7 +23,7 @@ test.describe('Create Child', () => {
}
// 1. Open two browser tabs both on /parent (children list)
await page.goto('/')
await gotoParentList(page)
await expect(page).toHaveURL('/parent')
const tab2 = await context.newPage()
@@ -64,7 +70,7 @@ test.describe('Create Child', () => {
}
// 1. Tab 1: parent mode
await page.goto('/')
await gotoParentList(page)
await expect(page).toHaveURL('/parent')
// 2. Tab 2: isolated browser context so removing parentAuth doesn't affect Tab 1