


















@@ -37,6 +37,15 @@ function createProps(overrides: Partial<ChatRunControlsProps> = {}): ChatRunCont
3737};
3838}
393940+function getButton(container: Element, selector: string): HTMLButtonElement {
41+const button = container.querySelector<HTMLButtonElement>(selector);
42+expect(button).toBeInstanceOf(HTMLButtonElement);
43+if (!(button instanceof HTMLButtonElement)) {
44+throw new Error(`Expected button matching ${selector}`);
45+}
46+return button;
47+}
48+4049describe("chat run controls", () => {
4150it("switches between idle and abort actions", () => {
4251const container = document.createElement("div");
@@ -57,11 +66,11 @@ describe("chat run controls", () => {
5766container,
5867);
596860-const queueButton = container.querySelector<HTMLButtonElement>('button[title="Queue"]');
61-const stopButton = container.querySelector<HTMLButtonElement>('button[title="Stop"]');
62-expect(queueButton?.disabled).toBe(true);
63-expect(stopButton?.title).toBe("Stop");
64-stopButton?.click();
69+const queueButton = getButton(container, 'button[title="Queue"]');
70+const stopButton = getButton(container, 'button[title="Stop"]');
71+expect(queueButton.disabled).toBe(true);
72+expect(stopButton.title).toBe("Stop");
73+stopButton.click();
6574expect(onAbort).toHaveBeenCalledTimes(1);
6675expect(container.textContent).not.toContain("New session");
6776@@ -81,16 +90,14 @@ describe("chat run controls", () => {
8190container,
8291);
839284-const newSessionButton = container.querySelector<HTMLButtonElement>(
85-'button[title="New session"]',
86-);
87-expect(newSessionButton?.title).toBe("New session");
88-newSessionButton?.click();
93+const newSessionButton = getButton(container, 'button[title="New session"]');
94+expect(newSessionButton.title).toBe("New session");
95+newSessionButton.click();
8996expect(onNewSession).toHaveBeenCalledTimes(1);
909791-const sendButton = container.querySelector<HTMLButtonElement>('button[title="Send"]');
92-expect(sendButton?.title).toBe("Send");
93-sendButton?.click();
98+const sendButton = getButton(container, 'button[title="Send"]');
99+expect(sendButton.title).toBe("Send");
100+sendButton.click();
94101expect(onStoreDraft).toHaveBeenCalledWith(" run this ");
95102expect(onSend).toHaveBeenCalledTimes(1);
96103expect(container.textContent).not.toContain("Stop");
@@ -112,9 +119,9 @@ describe("chat run controls", () => {
112119container,
113120);
114121115-const queueButton = container.querySelector<HTMLButtonElement>('button[title="Queue"]');
116-expect(queueButton?.disabled).toBe(false);
117-queueButton?.click();
122+const queueButton = getButton(container, 'button[title="Queue"]');
123+expect(queueButton.disabled).toBe(false);
124+queueButton.click();
118125expect(onStoreDraft).toHaveBeenCalledWith(" follow up ");
119126expect(onSend).toHaveBeenCalledTimes(1);
120127});
@@ -133,9 +140,9 @@ describe("chat run controls", () => {
133140container,
134141);
135142136-const stopButton = container.querySelector<HTMLButtonElement>('button[title="Stop"]');
137-expect(stopButton?.disabled).toBe(false);
138-stopButton?.click();
143+const stopButton = getButton(container, 'button[title="Stop"]');
144+expect(stopButton.disabled).toBe(false);
145+stopButton.click();
139146expect(onAbort).toHaveBeenCalledTimes(1);
140147});
141148});
@@ -290,7 +297,7 @@ describe("context notice", () => {
290297const onCompact = vi.fn();
291298render(renderContextNotice(session, 200_000, { onCompact }), container);
292299expect(container.textContent).toContain("Compact");
293-container.querySelector<HTMLButtonElement>(".context-notice__action")?.click();
300+getButton(container, ".context-notice__action").click();
294301expect(onCompact).toHaveBeenCalledTimes(1);
295302296303expect(
@@ -348,8 +355,11 @@ describe("side result render", () => {
348355expect(container.querySelectorAll(".chat-side-result")).toHaveLength(1);
349356350357const button = container.querySelector<HTMLButtonElement>(".chat-side-result__dismiss");
351-expect(button).not.toBeNull();
352-button?.click();
358+expect(button).toBeInstanceOf(HTMLButtonElement);
359+if (!(button instanceof HTMLButtonElement)) {
360+throw new Error("Expected side result dismiss button");
361+}
362+button.click();
353363expect(onDismissSideResult).toHaveBeenCalledTimes(1);
354364355365render(
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。