diff --git a/apps/web/src/pages/AdminInventoryPage.stories.js b/apps/web/src/pages/AdminInventoryPage.stories.js index 9b59018..ecb44b8 100644 --- a/apps/web/src/pages/AdminInventoryPage.stories.js +++ b/apps/web/src/pages/AdminInventoryPage.stories.js @@ -1,5 +1,16 @@ import AdminInventoryPage from './AdminInventoryPage.vue'; +import { expect, within } from '@storybook/test'; export default { title: 'Pages/AdminInventoryPage', component: AdminInventoryPage }; export const Inventory = {}; + +export const ActionAnnouncements = { + play: async ({ canvasElement }) => { + const canvas = within(canvasElement); + const status = canvasElement.querySelector('[aria-live="polite"]'); + await expect(status).toBeTruthy(); + await expect(status).toHaveAttribute('aria-live', 'polite'); + await expect(status).toHaveClass('sr-only'); + }, +}; diff --git a/docs/IMPLEMENTATION-STATUS.md b/docs/IMPLEMENTATION-STATUS.md index bf2ea2c..3478df0 100644 --- a/docs/IMPLEMENTATION-STATUS.md +++ b/docs/IMPLEMENTATION-STATUS.md @@ -269,6 +269,7 @@ Remaining roadmap areas are approved external provider credentials/adapters, bro - Per-item image limits are now enforced atomically for seller image creation and uploads, using `inventory.maxImagesPerItem` (default 10); concurrent inserts are serialized on the physical inventory item and return `IMAGE_COUNT_LIMIT_REACHED` at the configured cap. - Admin navigation now includes a keyboard-visible skip link to the main content region, with Storybook interaction coverage. - Admin inventory bulk archive, pricing refresh, tag, and retry actions now announce successful outcomes through a polite live region. +- Admin inventory action announcements now have Storybook interaction coverage verifying the live-region contract. ## Local Commands