import { renderToStaticMarkup } from "react-dom/server"; import { describe, expect, it } from "vitest"; import { BackButton } from "../back-button"; import { CharacterAvatar } from "../character-avatar"; import { UserMessageAvatar } from "../user-message-avatar"; describe("shared Tailwind components", () => { it("renders BackButton link and action variants with Tailwind classes", () => { const linkHtml = renderToStaticMarkup( , ); const actionHtml = renderToStaticMarkup( undefined} variant="ghost" />, ); const darkHtml = renderToStaticMarkup( , ); const unstyledHtml = renderToStaticMarkup( undefined} variant="unstyled" className="custom-back" />, ); expect(linkHtml).toContain('href="/chat"'); expect(linkHtml).toContain('aria-label="Back to chat"'); expect(linkHtml).toContain("inline-flex"); expect(linkHtml).toContain("size-(--responsive-icon-button-size,42px)"); expect(linkHtml).toContain("hover:bg-white"); expect(actionHtml).toContain(" { const html = renderToStaticMarkup( , ); expect(html).toContain("inline-flex"); expect(html).toContain("custom-avatar"); expect(html).toContain("width:48px"); expect(html).toContain("height:48px"); expect(html).toContain("size-full object-cover"); expect(html).toContain("%2Fimages%2Favatar%2Fmaya.png"); }); it("renders UserMessageAvatar custom and fallback images", () => { const userHtml = renderToStaticMarkup( , ); const guestHtml = renderToStaticMarkup(); expect(userHtml).toContain('aria-label="User avatar"'); expect(userHtml).toContain("width:3rem"); expect(userHtml).toContain("height:3rem"); expect(userHtml).toContain("size-full object-cover"); expect(userHtml).toContain("%2Favatar.png"); expect(guestHtml).toContain('aria-label="Guest avatar"'); expect(guestHtml).toContain("%2Fimages%2Favatar%2Fplaceholder.png"); }); });