import { render, screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { describe, it, expect, vi } from "vitest"; import InstanceListItem from "./InstanceListItem"; import type { Instance } from "../../generated/types"; const mockInstance: Instance = { id: "inst_123", profileId: "prof_456", profileName: "test-profile", port: "9868", headless: false, status: "running", startTime: new Date().toISOString(), attached: false, }; describe("InstanceListItem", () => { it("renders instance name and port", () => { render( {}} />, ); expect(screen.getByText("test-profile")).toBeInTheDocument(); expect(screen.getByText(":9868 ยท 5 tabs")).toBeInTheDocument(); }); it("shows running status badge", () => { render( {}} />, ); expect(screen.getByText("running")).toBeInTheDocument(); }); it("shows error status for errored instances", () => { const errorInstance = { ...mockInstance, status: "error" }; render( {}} />, ); expect(screen.getByText("error")).toBeInTheDocument(); }); it("applies selected styles when selected", () => { render( {}} />, ); const button = screen.getByRole("button"); expect(button).toHaveClass("border-primary"); }); it("calls onClick when clicked", async () => { const handleClick = vi.fn(); render( , ); await userEvent.click(screen.getByRole("button")); expect(handleClick).toHaveBeenCalledTimes(1); }); });