import { fireEvent, render, screen } from "@solidjs/testing-library"; import { describe, expect, it } from "vitest"; import { Drawer } from "../../../src/components/drawer/index"; describe("Drawer", () => { it("closed by default", () => { render(() => ( Title )); expect(screen.queryByRole("dialog")).toBeNull(); }); it("opens with defaultOpen=true", () => { render(() => ( Title )); expect(screen.getByRole("dialog")).toBeTruthy(); }); it("trigger click opens drawer", () => { render(() => ( Open Title )); fireEvent.click(screen.getByText("Open")); expect(screen.getByRole("dialog")).toBeTruthy(); }); it("Close button closes drawer", () => { render(() => ( Title Close )); fireEvent.click(screen.getByText("Close")); expect(screen.queryByRole("dialog")).toBeNull(); }); it("Escape key closes drawer", () => { render(() => ( Title )); fireEvent.keyDown(document, { key: "Escape" }); expect(screen.queryByRole("dialog")).toBeNull(); }); it("content has role=dialog and aria-modal", () => { render(() => ( Title )); const dialog = screen.getByRole("dialog"); expect(dialog.getAttribute("aria-modal")).toBe("true"); }); it("data-side defaults to right", () => { render(() => ( Title )); expect(screen.getByTestId("content").getAttribute("data-side")).toBe("right"); }); it("data-side reflects side prop", () => { render(() => ( Title )); expect(screen.getByTestId("content").getAttribute("data-side")).toBe("left"); }); it("title linked via aria-labelledby", () => { render(() => ( My Drawer )); const dialog = screen.getByRole("dialog"); const title = screen.getByText("My Drawer"); expect(dialog.getAttribute("aria-labelledby")).toBe(title.id); }); });