familynido/web/familynido-web/e2e/dashboard.spec.ts
Pablo Fernández a308041d59 Initial commit
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.
2026-05-13 00:23:14 +02:00

22 lines
996 B
TypeScript

import { expect, test } from '@playwright/test';
/**
* Dashboard smoke: visiting /home mounts the widget grid and the per-user
* widget catalogue endpoint responds. We don't assert any specific widget
* because the user can hide them all from /account — but the grid container
* should always be in the DOM so a regression that breaks the widget loop
* (e.g. a renamed signal) gets caught here.
*/
test('dashboard widget grid mounts', async ({ page }) => {
await page.goto('/home');
// The grid is the first <div> inside the main <section> with the
// grid-cols layout — assert it's there.
await expect(page.locator('section .grid.grid-cols-1.md\\:grid-cols-2').first()).toBeVisible();
// The user can also navigate to /account and verify the dashboard
// preferences UI shows up — that's the surface that drives this widget
// grid, so it's worth a sanity check.
await page.goto('/account');
await expect(page.getByText(/widgets del panel/i)).toBeVisible();
});