Files
tabatago/admin-web/app
Millian Lamiaux 094bd59470 test(admin-web): fix 14 broken vitest tests and exclude e2e from run
- vitest.config.ts: add explicit exclude (e2e/**, playwright-report/**,
  test-results/**) spread with configDefaults.exclude to keep
  node_modules/dist filtering intact
- app/page.test.tsx: waitFor for async stats resolution, replace
  getAllByRole('article') with 'a [data-slot=card]' scoped queries
  (Getting Started card has no icon so we scope to the 3 stat cards inside
  <Link>), drop console.error assertion (production fetchStats destructures
  { count } from the resolved payload without throwing on
  { count: null, error }, so console.error is never called on that path)
- components/workout-form.test.tsx: mock sonner (toast.error/success with
  all methods stubbed) to replace obsolete window.alert assertions, wait for
  the custom Select trainer dropdown to mount before clicking, fill the
  exercise-name-0 input (default exercises state is [{name:""}] which fails
  validation), make insert/update mocks resolve on a macrotask so React can
  render the transient 'Saving...' loading state
- app/login/page.test.tsx: replace getByRole('heading') with getByText
  (shadcn CardTitle renders a <div>, not a semantic heading), extend sonner
  mock with toast.error, fix invalid-credentials mock to return a real
  Error instance (production supabase-js returns AuthError extends Error,
  so the err instanceof Error branch surfaces the real message)
- components/ui/dialog.test.tsx: skip jsdom-incompatible click-outside test
  (Radix Dialog closes via pointerDown on overlay, not reproducible in jsdom;
  covered by the Escape test + Playwright E2E), replace aria-modal assertion
  with role=dialog + aria-labelledby (modern Radix no longer emits aria-modal)

Scope: tests + config only. No production code change.
2026-07-13 15:52:09 +02:00
..