import type { ReactNode } from "react"; import { renderToStaticMarkup } from "react-dom/server"; import { describe, expect, it, vi } from "vitest"; import { getCharacterBySlug } from "@/data/constants/character"; import { CharacterProvider } from "@/providers/character-provider"; import { BrowserHintOverlay } from "../browser-hint-overlay"; import { ChatHeader } from "../chat-header"; import { ChatInsufficientCreditsBanner } from "../chat-insufficient-credits-banner"; import { ChatInputTextField } from "../chat-input-text-field"; import { ChatSendButton } from "../chat-send-button"; import { HistoryUnlockDialog } from "../history-unlock-dialog"; import { ImageBubble } from "../image-bubble"; import { InsufficientCreditsDialog } from "../insufficient-credits-dialog"; import { MessageAvatar } from "../message-avatar"; import { PrivateMessageCard } from "../private-message-card"; import { PwaInstallDialog } from "../pwa-install-dialog"; import { TextBubble } from "../text-bubble"; vi.mock("@/router/use-app-navigator", () => ({ useAppNavigator: () => ({ openSubscription: vi.fn(), }), })); describe("chat Tailwind components", () => { it("renders MessageAvatar AI and user branches with image utilities", () => { const aiHtml = renderWithCharacter(); const userHtml = renderWithCharacter( , ); expect(aiHtml).toContain("size-(--chat-avatar-size,43px)"); expect(aiHtml).toContain("size-full object-cover"); expect(aiHtml).toContain("%2Fimages%2Favatar%2Felio.png"); expect(userHtml).toContain('aria-label="User avatar"'); expect(userHtml).toContain("%2Fuser-avatar.png"); }); it("renders message avatar actions with explicit destinations", () => { const aiHtml = renderWithCharacter( undefined} />, ); const userHtml = renderWithCharacter( undefined} />, ); expect(aiHtml).toContain('