feat: update ready keeps showing even after updating

Task #61 completed by ClaudeQueue

ClaudeQueue
This commit is contained in:
Claude Worker
2026-07-01 17:40:50 +00:00
parent 42ff13b135
commit 8018060d26
6 changed files with 237 additions and 15 deletions

View File

@@ -76,7 +76,7 @@ function loadSw(initialCacheKeys) {
}
test('activate does NOT broadcast on a fresh install (only the current-version cache exists)', async () => {
const sw = loadSw(['ytplayer-v1.0.3']); // default VERSION fallback in sw.js is 'v1.0.3'
const sw = loadSw(['ytplayer-v1.0.4']); // default VERSION fallback in sw.js is 'v1.0.4'
await sw.triggerActivate();
assert.deepStrictEqual(sw.clientMessages, [], 'no update banner should be triggered on first-ever install');
@@ -84,7 +84,7 @@ test('activate does NOT broadcast on a fresh install (only the current-version c
});
test('activate DOES broadcast when an older versioned shell cache is present (genuine update)', async () => {
const sw = loadSw(['ytplayer-v1.0.3', 'ytplayer-v1.0.2']);
const sw = loadSw(['ytplayer-v1.0.4', 'ytplayer-v1.0.2']);
await sw.triggerActivate();
assert.strictEqual(sw.clientMessages.length, 1, 'a genuine version bump should notify clients once');
@@ -93,25 +93,25 @@ test('activate DOES broadcast when an older versioned shell cache is present (ge
});
test('activate never deletes the utility caches (thumbs/fonts), broadcast or not', async () => {
const sw = loadSw(['ytplayer-v1.0.3', 'ytplayer-thumbs', 'ytplayer-fonts']);
const sw = loadSw(['ytplayer-v1.0.4', 'ytplayer-thumbs', 'ytplayer-fonts']);
await sw.triggerActivate();
assert.deepStrictEqual(sw.clientMessages, [], 'utility caches alone are not a version bump');
assert.deepStrictEqual(sw.deleted, [], 'utility caches must survive activate');
assert.deepStrictEqual(
sw.cacheStoreRemaining().sort(),
['ytplayer-fonts', 'ytplayer-thumbs', 'ytplayer-v1.0.3'].sort()
['ytplayer-fonts', 'ytplayer-thumbs', 'ytplayer-v1.0.4'].sort()
);
});
test('activate reports an update and still preserves utility caches together', async () => {
const sw = loadSw(['ytplayer-v1.0.3', 'ytplayer-v1.0.2', 'ytplayer-thumbs', 'ytplayer-fonts']);
const sw = loadSw(['ytplayer-v1.0.4', 'ytplayer-v1.0.2', 'ytplayer-thumbs', 'ytplayer-fonts']);
await sw.triggerActivate();
assert.strictEqual(sw.clientMessages.length, 1);
assert.deepStrictEqual(sw.deleted, ['ytplayer-v1.0.2']);
assert.deepStrictEqual(
sw.cacheStoreRemaining().sort(),
['ytplayer-fonts', 'ytplayer-thumbs', 'ytplayer-v1.0.3'].sort()
['ytplayer-fonts', 'ytplayer-thumbs', 'ytplayer-v1.0.4'].sort()
);
});