import { fireEvent, render, screen } from "@solidjs/testing-library"; import { describe, expect, it } from "vitest"; import { Popover } from "../../../src/components/popover/index"; describe("Popover", () => { it("content has role=dialog when open", () => { render(() => ( Open Content )); expect(screen.getByRole("dialog")).toBeTruthy(); }); it("trigger has correct ARIA", () => { render(() => ( Open Content )); const trigger = screen.getByText("Open"); expect(trigger.getAttribute("aria-haspopup")).toBe("dialog"); expect(trigger.getAttribute("aria-expanded")).toBe("false"); }); it("click trigger opens", () => { render(() => ( Open Content )); fireEvent.click(screen.getByText("Open")); expect(screen.getByRole("dialog")).toBeTruthy(); }); it("Escape closes", () => { render(() => ( Open Content )); fireEvent.keyDown(document, { key: "Escape" }); expect(screen.queryByRole("dialog")).toBeNull(); }); it("Close button closes", () => { render(() => ( Open X Content )); fireEvent.click(screen.getByText("X")); expect(screen.queryByRole("dialog")).toBeNull(); }); it("controlled mode", () => { render(() => ( {}}> Open Content )); expect(screen.getByRole("dialog")).toBeTruthy(); }); it("content is positioned", () => { render(() => ( Open Content )); expect(screen.getByTestId("content").style.position).toBeTruthy(); }); });