diff --git a/apps/pwa/src/components/CalendarShell.test.tsx b/apps/pwa/src/components/CalendarShell.test.tsx index e5a61f5..33c4497 100644 --- a/apps/pwa/src/components/CalendarShell.test.tsx +++ b/apps/pwa/src/components/CalendarShell.test.tsx @@ -217,4 +217,14 @@ describe('CalendarShell — CAL-03 render smoke', () => { renderWithClient() // Error renders asynchronously after query settles }) + + it('renders dead-end AuthSplash when redirect guard is already exhausted (D-11)', async () => { + // Simulate the one-shot guard having already fired (prior redirect attempt) + sessionStorage.setItem('familysync.loginRedirectAttempted', '1') + ;(fetchMe as Mock).mockRejectedValue(new Error('401')) + renderWithClient() + // After the auth error and the guard is exhausted, dead-end copy must be visible + const tapToRetry = await screen.findByText(/Tap here to try again/i) + expect(tapToRetry).toBeDefined() + }) })