/* Copyright 2026 Marimo. All rights reserved. */ import { render } from "@testing-library/react"; import { describe, expect, it } from "vitest"; import { ImageOutput } from "../ImageOutput"; const src = "data:image/png;base64,iVBORw0KGgo="; describe("ImageOutput", () => { it("renders numeric dimensions as HTML attributes", () => { // Attributes (not inline styles) let stylesheet rules like // `max-width: 100%; height: auto` shrink the image proportionally, // preserving its aspect ratio in width-constrained containers. const { container } = render( , ); const img = container.querySelector("img"); expect(img).toHaveAttribute("width", "640"); expect(img).toHaveAttribute("height", "480"); expect(img?.style.width).toBe(""); expect(img?.style.height).toBe(""); }); it("renders string dimensions as inline styles", () => { const { container } = render( , ); const img = container.querySelector("img"); expect(img).not.toHaveAttribute("width"); expect(img).not.toHaveAttribute("height"); expect(img?.style.width).toBe("50%"); expect(img?.style.height).toBe("100%"); }); it("supports mixed numeric and string dimensions", () => { const { container } = render( , ); const img = container.querySelector("img"); expect(img).toHaveAttribute("width", "640"); expect(img).not.toHaveAttribute("height"); expect(img?.style.height).toBe("100%"); }); it("renders without dimensions", () => { const { container } = render(); const img = container.querySelector("img"); expect(img).not.toBeNull(); expect(img).not.toHaveAttribute("width"); expect(img).not.toHaveAttribute("height"); expect(img).toHaveAttribute("src", src); }); });