feat: add admin-web Docker build & push workflow with semantic-release #11
Reference in New Issue
Block a user
Delete Branch "feat/admin-web-docker"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
- 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.d6d5f40359to8236eb35aeThe 'should handle logout errors gracefully' test mocked supabase.auth.signOut to reject (throw), which does not match real supabase-js behaviour (signOut resolves with { error }, never throws). The rejecting mock caused an unhandled promise rejection in the async handleLogout onClick handler: tolerated locally (vitest exit 0) but failing in CI (npx vitest run exits 1). Switch to a realistic resolved-with-error mock and assert the user is still redirected to /login (true graceful handling). No production code change.📱 Prêt à tester !
L'app est déployée sur l'iPhone (USB/WiFi).
📱 Prêt à tester !
L'app est déployée sur l'iPhone (USB/WiFi).
LGTM