
























@@ -81,6 +81,14 @@ function requireButton(
8181return button;
8282}
838384+function requireElement<T extends Element>(element: T | null | undefined, label: string): T {
85+expect(element).toBeInstanceOf(Element);
86+if (!element) {
87+throw new Error(`Expected ${label} element`);
88+}
89+return element;
90+}
91+8492describe("chat header controls (browser)", () => {
8593it("renders explicit hover tooltip metadata for the top-right action buttons", async () => {
8694const container = document.createElement("div");
@@ -218,16 +226,19 @@ describe("chat header controls (browser)", () => {
218226container.querySelector<HTMLButtonElement>(".chat-controls-mobile-toggle"),
219227"mobile controls toggle",
220228);
221-const dropdown = container.querySelector<HTMLElement>(".chat-controls-dropdown");
229+const dropdown = requireElement(
230+container.querySelector<HTMLElement>(".chat-controls-dropdown"),
231+"mobile controls dropdown",
232+);
222233expect(toggle.getAttribute("aria-expanded")).toBe("false");
223234expect(toggle.getAttribute("aria-controls")).toBe("chat-mobile-controls-dropdown");
224-expect(dropdown?.id).toBe("chat-mobile-controls-dropdown");
225-expect(dropdown?.classList.contains("open")).toBe(false);
235+expect(dropdown.id).toBe("chat-mobile-controls-dropdown");
236+expect(dropdown.classList.contains("open")).toBe(false);
226237227238toggle.click();
228239229240expect(setChatMobileControlsOpen).toHaveBeenCalledWith(true, { trigger: toggle });
230-expect(dropdown?.classList.contains("open")).toBe(false);
241+expect(dropdown.classList.contains("open")).toBe(false);
231242232243render(
233244renderChatMobileToggle(
@@ -240,9 +251,15 @@ describe("chat header controls (browser)", () => {
240251);
241252await Promise.resolve();
242253243-const openToggle = container.querySelector<HTMLButtonElement>(".chat-controls-mobile-toggle");
244-const openDropdown = container.querySelector<HTMLElement>(".chat-controls-dropdown");
245-expect(openToggle?.getAttribute("aria-expanded")).toBe("true");
246-expect(openDropdown?.classList.contains("open")).toBe(true);
254+const openToggle = requireButton(
255+container.querySelector<HTMLButtonElement>(".chat-controls-mobile-toggle"),
256+"open mobile controls toggle",
257+);
258+const openDropdown = requireElement(
259+container.querySelector<HTMLElement>(".chat-controls-dropdown"),
260+"open mobile controls dropdown",
261+);
262+expect(openToggle.getAttribute("aria-expanded")).toBe("true");
263+expect(openDropdown.classList.contains("open")).toBe(true);
247264});
248265});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。