




















@@ -278,10 +278,12 @@ describe("context notice", () => {
278278expect(lowUsage.compactRecommended).toBe(false);
279279render(renderContextNotice(lowUsageSession, 200_000), container);
280280const lowNotice = container.querySelector<HTMLElement>(".context-notice--usage");
281-expect(lowNotice?.textContent?.replace(/\s+/gu, " ").trim()).toBe(
281+expect(lowNotice).toBeInstanceOf(HTMLElement);
282+expect([...lowNotice!.classList]).toEqual(["context-notice", "context-notice--usage"]);
283+expect(lowNotice!.textContent?.replace(/\s+/gu, " ").trim()).toBe(
282284"23% context used 46k / 200k",
283285);
284-expect(lowNotice?.querySelector(".context-notice__detail")?.textContent).toBe("46k / 200k");
286+expect(lowNotice!.querySelector(".context-notice__detail")?.textContent).toBe("46k / 200k");
285287expect(container.querySelectorAll(".context-notice__meter")).toHaveLength(1);
286288expect(container.querySelector(".context-notice__icon")).toBeNull();
287289expect(container.textContent).not.toContain("757.3k / 200k");
@@ -299,26 +301,29 @@ describe("context notice", () => {
299301expect(getContextNoticeViewModel(session, 200_000)?.compactRecommended).toBe(true);
300302expect(container.textContent).not.toContain("757.3k / 200k");
301303const notice = container.querySelector<HTMLElement>(".context-notice");
302-expect(notice?.textContent?.replace(/\s+/gu, " ").trim()).toBe("95% context used 190k / 200k");
303-expect(notice?.querySelector(".context-notice__detail")?.textContent).toBe("190k / 200k");
304-expect(notice?.classList.contains("context-notice--warning")).toBe(true);
305-expect(notice?.getAttribute("title")).toBe("Session context usage: 190k / 200k (95%)");
306-expect(notice?.style.getPropertyValue("--ctx-color")).toContain("rgb(");
307-expect(notice?.style.getPropertyValue("--ctx-color")).toContain("4, 5, 6");
308-expect(notice?.style.getPropertyValue("--ctx-color")).not.toContain("NaN");
309-expect(notice?.style.getPropertyValue("--ctx-bg")).not.toContain("NaN");
304+expect(notice).toBeInstanceOf(HTMLElement);
305+expect(notice!.textContent?.replace(/\s+/gu, " ").trim()).toBe("95% context used 190k / 200k");
306+expect(notice!.querySelector(".context-notice__detail")?.textContent).toBe("190k / 200k");
307+expect([...notice!.classList]).toEqual(["context-notice", "context-notice--warning"]);
308+expect(notice!.getAttribute("title")).toBe("Session context usage: 190k / 200k (95%)");
309+expect(notice!.style.getPropertyValue("--ctx-color")).toContain("rgb(");
310+expect(notice!.style.getPropertyValue("--ctx-color")).toContain("4, 5, 6");
311+expect(notice!.style.getPropertyValue("--ctx-color")).not.toContain("NaN");
312+expect(notice!.style.getPropertyValue("--ctx-bg")).not.toContain("NaN");
310313311314const icon = container.querySelector<SVGElement>(".context-notice__icon");
312-expect(icon?.tagName.toLowerCase()).toBe("svg");
313-expect(icon?.classList.contains("context-notice__icon")).toBe(true);
314-expect(icon?.getAttribute("width")).toBe("16");
315-expect(icon?.getAttribute("height")).toBe("16");
316-expect(icon?.querySelectorAll("path")).toHaveLength(1);
315+expect(icon).toBeInstanceOf(SVGElement);
316+expect(icon!.tagName.toLowerCase()).toBe("svg");
317+expect([...icon!.classList]).toEqual(["context-notice__icon"]);
318+expect(icon!.getAttribute("width")).toBe("16");
319+expect(icon!.getAttribute("height")).toBe("16");
320+expect(icon!.querySelectorAll("path")).toHaveLength(1);
317321318322const onCompact = vi.fn();
319323render(renderContextNotice(session, 200_000, { onCompact }), container);
320-expect(container.textContent).toContain("Compact");
321-getButton(container, ".context-notice__action").click();
324+const compactButton = getButton(container, ".context-notice__action");
325+expect(compactButton.textContent?.trim()).toBe("Compact");
326+compactButton.click();
322327expect(onCompact).toHaveBeenCalledTimes(1);
323328324329expect(
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。