import { render, screen } from "@testing-library/react"; import { describe, expect, it } from "vitest"; import { Button } from "./button"; describe("Button", () => { it("uses semibold text for primary buttons", () => { const { rerender } = render(); expect(screen.getByRole("button", { name: "Primary" })).toHaveClass( "font-semibold", ); rerender(); expect(screen.getByRole("button", { name: "Outline" })).toHaveClass( "font-medium", ); expect(screen.getByRole("button", { name: "Outline" })).not.toHaveClass( "font-semibold", ); }); it("supports extra-small link buttons", () => { render( , ); expect(screen.getByRole("button", { name: "Open link" })).toHaveClass( "text-xs", ); }); it("supports extra-small icon buttons", () => { render( , ); expect(screen.getByRole("button", { name: "Open tour" })).toHaveClass( "size-7", ); }); it("renders the bare variant chrome-free (no background or border)", () => { render( , ); const button = screen.getByRole("button", { name: "Toggle sidebar" }); expect(button).toHaveClass("bg-transparent"); expect(button).toHaveClass("border-0"); expect(button).toHaveClass("p-0"); }); });