Remove misleading home 'Update' button (reloaded the page without changing any data — looked like a broken update); settings route + notification prefs lint/type-clean; wire sync progress into guidance dialog; sw.test mocks getRegistrations for clean-update register path

This commit is contained in:
Lumen Stage1 2026-10-06 10:12:04 -05:00
commit cd111da42f
10 changed files with 418 additions and 23 deletions

View file

@ -119,12 +119,20 @@ describe("SW registration — page bridge", () => {
it("registers /sw.js with scope / when supported", async () => {
const mockReg = { scope: "/", waiting: null } as unknown as ServiceWorkerRegistration;
const mockRegister = vi.fn().mockResolvedValue(mockReg);
const mockUnregister = vi.fn().mockResolvedValue(true);
Object.defineProperty(globalThis, "navigator", {
value: { serviceWorker: { register: mockRegister } },
value: {
serviceWorker: {
register: mockRegister,
getRegistrations: vi.fn().mockResolvedValue([{ unregister: mockUnregister }]),
},
},
writable: true,
configurable: true,
});
const res = await registerSW();
// clean-update: any pre-existing worker is unregistered before re-registering
expect(mockUnregister).toHaveBeenCalled();
expect(mockRegister).toHaveBeenCalledWith("/sw.js", { scope: "/" });
expect(res.status).toBe("registered");
});
@ -132,7 +140,12 @@ describe("SW registration — page bridge", () => {
it("returns failed when register throws (offline or HTTPS issue)", async () => {
const mockRegister = vi.fn().mockRejectedValue(new Error("HTTPS required"));
Object.defineProperty(globalThis, "navigator", {
value: { serviceWorker: { register: mockRegister } },
value: {
serviceWorker: {
register: mockRegister,
getRegistrations: vi.fn().mockResolvedValue([]),
},
},
writable: true,
configurable: true,
});