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/) +})