From d1b3ae8086ca990ee06b5dc4f45597244ff5f12e Mon Sep 17 00:00:00 2001 From: Jinwoo-H Date: Mon, 7 Sep 2026 18:55:37 -0400 Subject: [PATCH] test: align hook notification fixtures with mobile delivery --- .../src/hooks/agent-hook-completion-fresh-working.test.ts | 8 +++++--- .../hooks/ipc-events-agent-status-store-test-fixtures.ts | 4 ++++ .../hooks/ipc-events-agent-status-window-test-fixtures.ts | 1 + 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/renderer/src/hooks/agent-hook-completion-fresh-working.test.ts b/src/renderer/src/hooks/agent-hook-completion-fresh-working.test.ts index 006a848fdab..fef0a2c95fc 100644 --- a/src/renderer/src/hooks/agent-hook-completion-fresh-working.test.ts +++ b/src/renderer/src/hooks/agent-hook-completion-fresh-working.test.ts @@ -12,7 +12,7 @@ type MockStoreState = { settings: { experimentalTerminalAttention: boolean notifications: { enabled: boolean; agentTaskComplete: boolean } - } + } | null ptyIdsByTabId: Record suppressedPtyExitIds: Record tabsByWorktree: Record @@ -71,12 +71,14 @@ describe('agent hook completion fresh-working gate', () => { afterEach(() => vi.useRealTimers()) - it('stays gated through a stamped working completion after re-enable', async () => { + it('waits for fresh working after settings hydration before dispatching completion', async () => { const { observeAgentHookCompletionForNotification, syncAgentHookCompletionNotificationSettings } = await import('./agent-hook-completion-notifications') + const hydratedSettings = mockStoreState.settings + mockStoreState.settings = null syncAgentHookCompletionNotificationSettings() observeAgentHookCompletionForNotification({ paneKey: PANE_KEY, @@ -84,7 +86,7 @@ describe('agent hook completion fresh-working gate', () => { payload: { ...working(), stateStartedAt: 1_000 } }) - mockStoreState.settings.notifications.agentTaskComplete = true + mockStoreState.settings = hydratedSettings syncAgentHookCompletionNotificationSettings() observeAgentHookCompletionForNotification({ paneKey: PANE_KEY, diff --git a/src/renderer/src/hooks/ipc-events-agent-status-store-test-fixtures.ts b/src/renderer/src/hooks/ipc-events-agent-status-store-test-fixtures.ts index 609b3fb562c..96bca500d21 100644 --- a/src/renderer/src/hooks/ipc-events-agent-status-store-test-fixtures.ts +++ b/src/renderer/src/hooks/ipc-events-agent-status-store-test-fixtures.ts @@ -167,6 +167,10 @@ export function buildStoreState(overrides: StoreLike): StoreLike { updateTabTitles: vi.fn(), runtimePaneTitlesByTabId: {}, terminalLayoutsByTabId: {}, + ptyIdsByTabId: {}, + suppressedPtyExitIds: {}, + markWorktreeUnread: vi.fn(), + markAgentCompletionPaneUnread: vi.fn(), agentStatusByPaneKey: {}, setAgentStatuses: vi.fn(() => []), recordAgentProviderSession: vi.fn(), diff --git a/src/renderer/src/hooks/ipc-events-agent-status-window-test-fixtures.ts b/src/renderer/src/hooks/ipc-events-agent-status-window-test-fixtures.ts index 5b50e3d0520..e1b5f548996 100644 --- a/src/renderer/src/hooks/ipc-events-agent-status-window-test-fixtures.ts +++ b/src/renderer/src/hooks/ipc-events-agent-status-window-test-fixtures.ts @@ -127,6 +127,7 @@ export function buildWindowApi(args: { onDetectedPortsChanged: () => () => {}, ...args.ssh }, + notifications: { dispatch: vi.fn(async () => ({ delivered: false })) }, agentStatus: { onSet: args.onSet, onClear: args.onClear ?? vi.fn(() => () => {}),