1 · Zustand
2 · Sofort anzeigen
Seite: lebt nur, solange der Tab offen ist; Klick geht an die Seite. Service Worker: Klick landet im Worker (notificationclick), auch wenn der Tab geschlossen wurde.
3 · Verzögert (Tab in den Hintergrund legen, minimieren oder verdecken)
Ein Timer der Seite, danach showNotification(). Das Protokoll zeigt die tatsächliche Verspätung (Chrome drosselt Timer in Hintergrund-Tabs) und ob der Tab dabei sichtbar war. Ein verworfener Tab („Speicher sparen“) löst gar nicht aus.
4 · Push lokal simulieren
Ohne Server: DevTools öffnen → Application → Service workers → Feld Push → Text oder JSON {"title":"…","body":"…"} eingeben → Push. Der Worker zeigt daraus eine Benachrichtigung. So prüft man die Anzeige-Kette ohne FCM.