diff --git a/packages/app/src/browser-automation/handler.test.ts b/packages/app/src/browser-automation/handler.test.ts index e147b95e1..2e72a4726 100644 --- a/packages/app/src/browser-automation/handler.test.ts +++ b/packages/app/src/browser-automation/handler.test.ts @@ -125,7 +125,7 @@ describe("mountBrowserAutomationHandler", () => { useWorkspaceLayoutStore.setState({ layoutByWorkspace: {} }); }); - test("creates an unfocused workspace browser tab for browser_new_tab", async () => { + test("creates a focused workspace browser tab for browser_new_tab", async () => { const client = new FakeDaemonClient(); const setWorkspaceActiveBrowser = vi.fn(async () => undefined); const setAgentActiveBrowser = vi.fn(async () => undefined); @@ -164,25 +164,32 @@ describe("mountBrowserAutomationHandler", () => { if (!payload?.ok) throw new Error("expected success"); expect(payload.result.command).toBe("new_tab"); if (payload.result.command !== "new_tab") throw new Error("expected new_tab result"); + const browserId = payload.result.browserId; expect(payload.result.url).toBe("https://example.com"); - expect(useWorkspaceLayoutStore.getState().getWorkspaceTabs(workspaceKey)).toContainEqual( - expect.objectContaining({ target: { kind: "browser", browserId: payload.result.browserId } }), - ); + const browserTab = useWorkspaceLayoutStore + .getState() + .getWorkspaceTabs(workspaceKey) + .find((tab) => tab.target.kind === "browser" && tab.target.browserId === browserId); + expect(browserTab).toBeDefined(); const layout = useWorkspaceLayoutStore.getState().layoutByWorkspace[workspaceKey]; expect(layout?.root.kind).toBe("pane"); if (layout?.root.kind !== "pane") throw new Error("expected root pane"); - expect(layout.root.pane.focusedTabId).toBe(focusedTabId); + expect(layout.root.pane.focusedTabId).toBe(browserTab?.tabId); + expect(layout.root.pane.focusedTabId).not.toBe(focusedTabId); expect(registerWorkspaceBrowser).toHaveBeenCalledWith({ - browserId: payload.result.browserId, + browserId, workspaceId: "wks_workspace_a", }); expect(setAgentActiveBrowser).toHaveBeenCalledWith({ agentId: "agent-1", - browserId: payload.result.browserId, + browserId, + }); + expect(setWorkspaceActiveBrowser).toHaveBeenCalledWith({ + browserId, + workspaceId: "wks_workspace_a", }); - expect(setWorkspaceActiveBrowser).not.toHaveBeenCalled(); expect(ensureResidentBrowserWebview).toHaveBeenCalledWith({ - browserId: payload.result.browserId, + browserId, url: "https://example.com", }); expect(executeAutomationCommand).toHaveBeenCalledTimes(1); diff --git a/packages/app/src/browser-automation/handler.ts b/packages/app/src/browser-automation/handler.ts index 32e675370..b122d846d 100644 --- a/packages/app/src/browser-automation/handler.ts +++ b/packages/app/src/browser-automation/handler.ts @@ -178,12 +178,13 @@ async function openBrowserTabForRequest(params: { message: "Cannot create a browser tab without a workspace context.", }); } - useWorkspaceLayoutStore.getState().openTabInBackground(workspaceKey, { + useWorkspaceLayoutStore.getState().openTabFocused(workspaceKey, { kind: "browser", browserId, }); await browserHost?.registerWorkspaceBrowser?.({ browserId, workspaceId }); + await browserHost?.setWorkspaceActiveBrowser?.({ browserId, workspaceId }); if (request.agentId) { await browserHost?.setAgentActiveBrowser?.({ agentId: request.agentId, browserId }); }