feat(sprint-6): Phase 6 — Notifications (WebSocket) + PWA
- WebSocket: Spring STOMP + SockJS, NotificationService, persistent notifications table - NotificationController: GET/PUT endpoints for notification management - Frontend: notification bell with unread badge, dropdown panel, real-time via STOMP - PWA: manifest.json, service worker (manual sw.js), offline page, install prompt - PWA icons (192+512), dark theme colors, standalone display - Full i18n (de/en) for notifications and PWA - Flyway V10 migration for notifications table - spring-boot-starter-websocket dependency added
This commit is contained in:
@@ -26,7 +26,9 @@ test.describe("Staff Management", () => {
|
||||
|
||||
// If redirected to login, that's expected without a running backend
|
||||
if (page.url().includes("/login")) {
|
||||
console.log(" ℹ️ Redirected to login (no session) — expected without backend")
|
||||
console.log(
|
||||
" ℹ️ Redirected to login (no session) — expected without backend"
|
||||
)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -53,7 +55,9 @@ test.describe("Staff Management", () => {
|
||||
|
||||
// Sheet/dialog should open with form fields
|
||||
const hasEmailField =
|
||||
(await page.locator('input[type="email"], input[name="email"]').count()) > 0
|
||||
(await page
|
||||
.locator('input[type="email"], input[name="email"]')
|
||||
.count()) > 0
|
||||
expect(hasEmailField).toBe(true)
|
||||
}
|
||||
})
|
||||
@@ -69,7 +73,8 @@ test.describe("Staff Management", () => {
|
||||
|
||||
// Check for table or list structure
|
||||
const hasTable = (await page.locator("table").count()) > 0
|
||||
const hasList = (await page.locator('[role="list"], [data-testid*="staff"]').count()) > 0
|
||||
const hasList =
|
||||
(await page.locator('[role="list"], [data-testid*="staff"]').count()) > 0
|
||||
|
||||
expect(hasTable || hasList).toBe(true)
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user