Focus browser automation new tabs

This commit is contained in:
Mohamed Boudra
2026-07-02 18:46:57 +02:00
parent adc0c01782
commit 172de4fbc2
2 changed files with 18 additions and 10 deletions
@@ -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);
@@ -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 });
}