diff --git a/ui/src/ui/views/chat.test.ts b/ui/src/ui/views/chat.test.ts index 8e0e18dcba9..ac3984e6e3d 100644 --- a/ui/src/ui/views/chat.test.ts +++ b/ui/src/ui/views/chat.test.ts @@ -527,6 +527,26 @@ describe("chat view", () => { expect(container.textContent).not.toContain("New session"); }); + it("shows a stop button when aborting is available during tool execution", () => { + const container = document.createElement("div"); + const onAbort = vi.fn(); + render( + renderChat( + createProps({ + canAbort: true, + sending: false, + onAbort, + }), + ), + container, + ); + + const stopButton = container.querySelector('button[title="Stop"]'); + expect(stopButton).not.toBeUndefined(); + stopButton?.dispatchEvent(new MouseEvent("click", { bubbles: true })); + expect(onAbort).toHaveBeenCalledTimes(1); + }); + it("shows a new session button when aborting is unavailable", () => { const container = document.createElement("div"); const onNewSession = vi.fn(); diff --git a/ui/src/ui/views/chat.ts b/ui/src/ui/views/chat.ts index 88a712706f0..a5a87752efd 100644 --- a/ui/src/ui/views/chat.ts +++ b/ui/src/ui/views/chat.ts @@ -1299,7 +1299,7 @@ export function renderChat(props: ChatProps) { ${ - canAbort && (isBusy || props.sending) + canAbort ? html`