From cad85c5402e7597c034a0f49ca6bae2d2d7b50b1 Mon Sep 17 00:00:00 2001 From: Neil <4138956+nwparker@users.noreply.github.com> Date: Wed, 12 Aug 2026 18:36:31 -0700 Subject: [PATCH] test(renderer): assert parked-pane remount on the runtime-active repos:changed path The local-slice refresh 13632 introduces still has to release panes parked on an unhydrated host; the prior test stubbed the remount but never asserted it. Co-authored-by: Orca --- src/renderer/src/hooks/useIpcEvents.test.ts | 22 +++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/renderer/src/hooks/useIpcEvents.test.ts b/src/renderer/src/hooks/useIpcEvents.test.ts index 7210afaba8b..c19fe942461 100644 --- a/src/renderer/src/hooks/useIpcEvents.test.ts +++ b/src/renderer/src/hooks/useIpcEvents.test.ts @@ -10281,7 +10281,6 @@ describe('runtime host catalog refresh on reposChanged', () => { }) }) - describe('repo catalog refresh on repos:changed', () => { it('skips remote catalog RPCs when refreshing local rows under a runtime', async () => { vi.resetModules() @@ -10289,15 +10288,16 @@ describe('repo catalog refresh on repos:changed', () => { const fetchRepos = vi.fn(() => Promise.resolve()) const fetchProjectGroups = vi.fn(() => Promise.resolve()) const fetchFolderWorkspaces = vi.fn(() => Promise.resolve()) + const remountTerminalTabForRecovery = vi.fn(() => true) const state = { settings: { activeRuntimeEnvironmentId: null as string | null }, - repos: [], - worktreesByRepo: {}, + repos: [{ id: 'repo1', connectionId: 'conn-1' }], + worktreesByRepo: { repo1: [{ id: 'wt-1', repoId: 'repo1' }] }, folderWorkspaces: [], projectGroups: [], - tabsByWorktree: {}, + tabsByWorktree: { 'wt-1': [{ id: 'tab-1', ptyId: null }] }, ptyIdsByTabId: {}, - remountTerminalTabForRecovery: vi.fn(), + remountTerminalTabForRecovery, fetchRepos, fetchProjectGroups, fetchFolderWorkspaces @@ -10337,18 +10337,24 @@ describe('repo catalog refresh on repos:changed', () => { ) vi.stubGlobal('window', { api }) + const { recordTerminalTabParkedOnUnresolvedHost, clearTerminalTabsParkedOnUnresolvedHost } = + await import('@/lib/parked-terminal-host-hydration') + clearTerminalTabsParkedOnUnresolvedHost() + const { useIpcEvents } = await import('./useIpcEvents') useIpcEvents() state.settings.activeRuntimeEnvironmentId = 'env-1' + // Why: the local-slice refresh still has to release panes that parked on an unhydrated host. + recordTerminalTabParkedOnUnresolvedHost('wt-1', 'tab-1') reposChangedListener?.() - await Promise.resolve() - await Promise.resolve() - await Promise.resolve() + await new Promise((resolve) => setTimeout(resolve, 0)) const localOwner = { runtimeEnvironmentId: null } expect(fetchRepos).toHaveBeenCalledWith(localOwner) expect(fetchProjectGroups).toHaveBeenCalledWith(localOwner) expect(fetchFolderWorkspaces).toHaveBeenCalledWith(localOwner) + expect(remountTerminalTabForRecovery).toHaveBeenCalledWith('tab-1') + clearTerminalTabsParkedOnUnresolvedHost() }) })