fix(ui): register the service worker in production only
SvelteKit's automatic SW registration also runs under `vite dev`, where the worker intercepted/cached the dev-server e2e suite (42 failures). Disable auto-registration (kit.serviceWorker.register: false) and register the worker manually from the root layout guarded by `!dev`, so `vite dev` and the e2e suite run worker-free while the production build — and the PWA preview test — still install it. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -4,6 +4,7 @@
|
|||||||
import { onMount } from "svelte";
|
import { onMount } from "svelte";
|
||||||
import { goto } from "$app/navigation";
|
import { goto } from "$app/navigation";
|
||||||
import { page } from "$app/state";
|
import { page } from "$app/state";
|
||||||
|
import { dev } from "$app/environment";
|
||||||
import { i18n } from "$lib/i18n/index.svelte";
|
import { i18n } from "$lib/i18n/index.svelte";
|
||||||
import { session } from "$lib/session-store.svelte";
|
import { session } from "$lib/session-store.svelte";
|
||||||
import { eventStream } from "../api/events.svelte";
|
import { eventStream } from "../api/events.svelte";
|
||||||
@@ -21,6 +22,12 @@
|
|||||||
|
|
||||||
onMount(() => {
|
onMount(() => {
|
||||||
void session.init();
|
void session.init();
|
||||||
|
// Production-only service-worker registration (auto-register is off
|
||||||
|
// in svelte.config.js) so `vite dev` and the dev-server e2e suite
|
||||||
|
// run without the worker intercepting requests.
|
||||||
|
if (!dev && "serviceWorker" in navigator) {
|
||||||
|
void navigator.serviceWorker.register("/service-worker.js");
|
||||||
|
}
|
||||||
return () => {
|
return () => {
|
||||||
eventStream.stop();
|
eventStream.stop();
|
||||||
streamSessionId = null;
|
streamSessionId = null;
|
||||||
|
|||||||
@@ -11,5 +11,11 @@ export default {
|
|||||||
fallback: "index.html",
|
fallback: "index.html",
|
||||||
strict: true,
|
strict: true,
|
||||||
}),
|
}),
|
||||||
|
serviceWorker: {
|
||||||
|
// Registered manually in the root layout for production only.
|
||||||
|
// SvelteKit's auto-registration also runs under `vite dev`, where
|
||||||
|
// the worker would intercept and cache the dev-server e2e suite.
|
||||||
|
register: false,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user