// @vitest-environment jsdom import { act } from "react"; import { createRoot } from "react-dom/client"; import { afterEach, beforeEach, describe, expect, it } from "vitest"; import { ToastProvider, useToastActions, useToastState } from "./ToastContext"; // eslint-disable-next-line @typescript-eslint/no-explicit-any (globalThis as any).IS_REACT_ACT_ENVIRONMENT = true; describe("ToastContext", () => { let container: HTMLDivElement; beforeEach(() => { container = document.createElement("div"); document.body.appendChild(container); }); afterEach(() => { document.body.innerHTML = ""; }); it("does not rerender action-only consumers when toast state changes", () => { const root = createRoot(container); let actionOnlyRenderCount = 0; let pushToastRef: ((input: { title: string }) => string | null) | null = null; let clearToastsRef: (() => void) | null = null; function ActionOnlyConsumer() { actionOnlyRenderCount += 1; const { pushToast, clearToasts } = useToastActions(); pushToastRef = pushToast; clearToastsRef = clearToasts; return null; } function ToastCount() { const toasts = useToastState(); return