From a270ff51da58f6a695ceda639bbb84a1608f2cb1 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 29 Oct 2026 13:53:39 +0000 Subject: [PATCH] =?UTF-8?q?Kundenansicht=20neu=20P10:=20Service=20Worker?= =?UTF-8?q?=20legt=20die=20wei=C3=9Fe=20Offline-Seite=20neu=20ab=20(Cache?= =?UTF-8?q?=20v2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- public/sw.js | 2 +- test/knOfflineCache.test.js | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 test/knOfflineCache.test.js diff --git a/public/sw.js b/public/sw.js index 357d8ba..430ec98 100644 --- a/public/sw.js +++ b/public/sw.js @@ -1,7 +1,7 @@ // Service Worker des Kundenbereichs: macht die App installierbar (Homescreen) und zeigt ohne // Internet eine Offline-Seite. Kundendaten (Seiten, API, PDFs) werden bewusst NICHT // zwischengespeichert - alles kommt immer frisch vom Server. Bei Aenderungen CACHE hochzaehlen. -const CACHE = 'kb-offline-v1' +const CACHE = 'kb-offline-v2' const OFFLINE_URL = '/offline.html' self.addEventListener('install', (event) => { diff --git a/test/knOfflineCache.test.js b/test/knOfflineCache.test.js new file mode 100644 index 0000000..fc944cc --- /dev/null +++ b/test/knOfflineCache.test.js @@ -0,0 +1,12 @@ +import { test } from 'node:test' +import assert from 'node:assert/strict' +import { readFileSync } from 'node:fs' + +// P10 Task 12: Nach dem Umschalten liegt unter /offline.html die weiße Seite. Der Service Worker legt sie nur beim Installieren ab, und +// installiert wird nur, wenn sich sw.js ändert: darum Cache v2. Die alten Caches löscht activate. +const sw = readFileSync(new URL('../public/sw.js', import.meta.url), 'utf8') +test('sw.js: Cache v2, Offline-Seite unverändert, alte Caches werden gelöscht', () => { + assert.match(sw, /const CACHE = 'kb-offline-v2'/); assert.doesNotMatch(sw, /kb-offline-v1/) + assert.match(sw, /const OFFLINE_URL = '\/offline\.html'/); assert.match(sw, /cache\.add\(new Request\(OFFLINE_URL, \{ cache: 'reload' \}\)\)/) + assert.match(sw, /if \(key !== CACHE\) await caches\.delete\(key\)/); assert.doesNotMatch(sw, /auftrag/) +})