From a15fb63a6e3054239e97fb7d0effdf9b88ae5dc4 Mon Sep 17 00:00:00 2001 From: johnjheejin Date: Sat, 29 Aug 2026 10:44:28 +0900 Subject: [PATCH] test(web): cover target selector persistence --- .../src/__tests__/useClientSettings.test.tsx | 22 ++++++++++ .../web/src/__tests__/useStepsStream.test.tsx | 43 +++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 packages/web/src/__tests__/useClientSettings.test.tsx diff --git a/packages/web/src/__tests__/useClientSettings.test.tsx b/packages/web/src/__tests__/useClientSettings.test.tsx new file mode 100644 index 0000000..a7a8d17 --- /dev/null +++ b/packages/web/src/__tests__/useClientSettings.test.tsx @@ -0,0 +1,22 @@ +import { act, renderHook } from "@testing-library/react"; +import { afterEach, describe, expect, it } from "vitest"; +import { useClientSettings } from "../hooks/useClientSettings"; + +describe("useClientSettings", () => { + afterEach(() => { + localStorage.clear(); + }); + + it("restores the selected target engine after a reload", () => { + const first = renderHook(() => useClientSettings()); + + act(() => { + first.result.current.updateSettings({ targetApp: "antigravity-ide" }); + }); + first.unmount(); + + const reloaded = renderHook(() => useClientSettings()); + + expect(reloaded.result.current.settings.targetApp).toBe("antigravity-ide"); + }); +}); diff --git a/packages/web/src/__tests__/useStepsStream.test.tsx b/packages/web/src/__tests__/useStepsStream.test.tsx index 870dc52..deec489 100644 --- a/packages/web/src/__tests__/useStepsStream.test.tsx +++ b/packages/web/src/__tests__/useStepsStream.test.tsx @@ -166,4 +166,47 @@ describe("useStepsStream", () => { "/api/conversations/cascade-1/ws?targetApp=antigravity-ide", ); }); + + it("keeps the selected engine when reconnecting on resume", async () => { + vi.spyOn(api, "getSteps").mockResolvedValue({ steps: [], offset: 0 }); + + renderHook(() => + useStepsStream( + "cascade-1", + 0, + undefined, + false, + false, + "antigravity-ide", + ), + ); + + await waitFor(() => { + expect(MockWebSocket.instances).toHaveLength(1); + }); + + act(() => { + Object.defineProperty(document, "hidden", { + configurable: true, + value: true, + }); + document.dispatchEvent(new Event("visibilitychange")); + }); + + act(() => { + Object.defineProperty(document, "hidden", { + configurable: true, + value: false, + }); + document.dispatchEvent(new Event("visibilitychange")); + }); + + await waitFor(() => { + expect(MockWebSocket.instances).toHaveLength(2); + }); + + expect(MockWebSocket.instances[1].url).toContain( + "/api/conversations/cascade-1/ws?targetApp=antigravity-ide", + ); + }); });