From 255848fcaa974a8baa3014af4a042c7870dc1663 Mon Sep 17 00:00:00 2001 From: FragginWagon Date: Fri, 11 Sep 2026 15:31:52 -0400 Subject: [PATCH] test: cover session expiry messaging --- apps/web/src/pages/LoginPage.stories.js | 9 +++++++++ docs/IMPLEMENTATION-STATUS.md | 1 + 2 files changed, 10 insertions(+) diff --git a/apps/web/src/pages/LoginPage.stories.js b/apps/web/src/pages/LoginPage.stories.js index c5630ec..c531003 100644 --- a/apps/web/src/pages/LoginPage.stories.js +++ b/apps/web/src/pages/LoginPage.stories.js @@ -1,5 +1,6 @@ import LoginPage from './LoginPage.vue'; import { expect, userEvent, within } from '@storybook/test'; +import { storybookRouter } from '../../.storybook/router.js'; export default { title: 'Pages/LoginPage', component: LoginPage }; export const Empty = {}; @@ -20,3 +21,11 @@ export const ErrorFocus = { } }, }; + +export const SessionExpired = { + beforeEach: async () => { await storybookRouter.push({ name: 'login', query: { reason: 'session-expired' } }); }, + play: async ({ canvasElement }) => { + const canvas = within(canvasElement); + await expect(canvas.getByRole('alert')).toHaveTextContent('Your session expired. Sign in again to continue.'); + }, +}; diff --git a/docs/IMPLEMENTATION-STATUS.md b/docs/IMPLEMENTATION-STATUS.md index cb40a55..1bf05c3 100644 --- a/docs/IMPLEMENTATION-STATUS.md +++ b/docs/IMPLEMENTATION-STATUS.md @@ -278,6 +278,7 @@ Remaining roadmap areas are approved external provider credentials/adapters, bro - Login error focus behavior now has Storybook interaction coverage using a deterministic failed-authentication response. - Admin logout now exposes a busy state and disables repeat activation while the session is being revoked. - Expired admin sessions now redirect to login with an accessible explanation that prompts the user to sign in again. +- Session-expired login messaging now has Storybook interaction coverage. ## Local Commands