import { describe, it, expect } from "vitest"; import { render, screen } from "@testing-library/react"; import { MetricsPanel } from "../MetricsPanel"; describe("MetricsPanel", () => { const defaultMetrics = { caseId: "sub-stroke0001", diceScore: 0.847, volumeMl: 15.32, elapsedSeconds: 12.5, }; it("renders results heading", () => { render(); expect( screen.getByRole("heading", { name: /results/i }), ).toBeInTheDocument(); }); it("displays case ID", () => { render(); expect(screen.getByText("sub-stroke0001")).toBeInTheDocument(); }); it("displays dice score with 3 decimal places", () => { render(); expect(screen.getByText("0.847")).toBeInTheDocument(); }); it("displays volume in mL with 2 decimal places", () => { render(); expect(screen.getByText("15.32 mL")).toBeInTheDocument(); }); it("displays elapsed time with 1 decimal place", () => { render(); expect(screen.getByText("12.5s")).toBeInTheDocument(); }); it("hides dice score row when null", () => { render(); expect(screen.queryByText(/dice score/i)).not.toBeInTheDocument(); }); it("hides volume row when null", () => { render(); expect(screen.queryByText(/volume/i)).not.toBeInTheDocument(); }); it("applies card styling", () => { render(); const panel = screen.getByRole("heading", { name: /results/i, }).parentElement; expect(panel).toHaveClass("bg-gray-800", "rounded-lg"); }); });