FamilyNido — a self-hosted PWA for a single household: shared calendar, chores, meals, school agenda, health records and a family wall. One instance per family, deployable with `docker compose` on any home server. Stack: .NET 10 (ASP.NET Core Minimal APIs) + EF Core 10 + PostgreSQL 16 on the backend, Angular 21 (standalone, signals, zoneless) + Tailwind CSS v4 on the frontend, SignalR for realtime, optional OIDC alongside local credentials, integration via a versioned `/api/v1/**` public API. See README.md for the module overview and how to deploy. |
||
|---|---|---|
| .. | ||
| a11y.spec.ts | ||
| account-language.spec.ts | ||
| auth-b.setup.ts | ||
| auth.setup.ts | ||
| calendar.spec.ts | ||
| dashboard.spec.ts | ||
| fixtures.ts | ||
| i18n.spec.ts | ||
| invitations.spec.ts | ||
| meals.spec.ts | ||
| multi-user-tasks.b.spec.ts | ||
| README.md | ||
| shell.spec.ts | ||
| tasks.spec.ts | ||
| wall.spec.ts | ||
FamilyNido E2E tests (Playwright)
Smoke tests for the four critical user flows: app shell + nav, task create/complete, wall publish, dashboard widgets. They target a running deployment — the suite does not start the API or the database.
Prerequisites
- A running FamilyNido instance. Either the dev compose
(
docker compose -f deploy/docker-compose.dev.yml up -d) or the prod stack on a real domain. - A test user with a local password. PocketID flows aren't scriptable
from Playwright, but the local-credentials login (
POST /api/auth/local/login) is. Set up the user once via the regular UI:- Log in via PocketID with the user you'd like to use for tests.
- Go to
/account→ "Establecer contraseña local" and pick a password.
- Browsers installed by Playwright. First time only:
npx playwright install --with-deps chromium
Configuration
Set three env vars (or put them in a .env.e2e consumed by your shell):
export E2E_BASE_URL=http://localhost:5173
export E2E_USER_EMAIL=tu-email@example.com
export E2E_USER_PASSWORD=elPasswordQueAcabasDePoner
E2E_BASE_URL defaults to http://localhost:5173 (the dev server proxy)
when unset.
Running
# All tests, headless
npm run e2e
# With Playwright's UI for debugging
npm run e2e:ui
Each spec is idempotent — tasks and wall posts created during a run are also cleaned up at the end. Re-running the suite back-to-back should always pass.
Layout
e2e/
auth.setup.ts # Fires once before every project; logs in via API.
shell.spec.ts # /home + every primary tab loads.
tasks.spec.ts # Create + complete + archive.
wall.spec.ts # Publish + delete.
dashboard.spec.ts # Widget grid mounts.
.auth/state.json # Generated; .gitignored. Don't commit.
Adding new tests
- Stay idempotent: any data the test creates must be removed by its end.
- Prefer role-based locators (
getByRole,getByPlaceholder) over CSS classes — they survive Tailwind churn better. - If a test needs admin-only privileges, document it; the test user must
be
Adminfor now (we don't model multiple test identities yet).