import { renderToStaticMarkup } from "react-dom/server"; import { describe, expect, it } from "vitest"; import type { IssueWorkProduct } from "@paperclipai/shared"; import { IssueOutputSection } from "./IssueOutputSection"; function makeWorkProduct(overrides: Partial & { id: string }): IssueWorkProduct { return { companyId: "company-1", projectId: null, issueId: "issue-1", executionWorkspaceId: null, runtimeServiceId: null, type: "artifact", provider: "paperclip", externalId: null, title: "output", url: null, status: "active", reviewState: "none", isPrimary: false, healthStatus: "unknown", summary: null, metadata: null, createdByRunId: null, createdAt: new Date("2026-05-30T12:00:00Z"), updatedAt: new Date("2026-05-30T12:00:00Z"), ...overrides, } as IssueWorkProduct; } const UUIDS: Record = { "att-1": "11111111-1111-4111-8111-111111111111", "att-vid": "22222222-2222-4222-8222-222222222222", "att-pdf": "33333333-3333-4333-8333-333333333333", }; function metadata(key: string, contentType: string, filename: string) { const attachmentId = UUIDS[key] ?? key; return { attachmentId, contentType, byteSize: 19_293_798, contentPath: `/api/attachments/${attachmentId}/content`, openPath: `/api/attachments/${attachmentId}/content`, downloadPath: `/api/attachments/${attachmentId}/content?download=1`, originalFilename: filename, }; } describe("IssueOutputSection", () => { it("renders a playable, downloadable video as the primary output", () => { const markup = renderToStaticMarkup( , ); // Native video player present expect(markup).toContain(" { const markup = renderToStaticMarkup( , ); expect(markup).toBe(""); }); it("renders the primary card plus an Also produced list for multiple outputs", () => { const markup = renderToStaticMarkup( , ); expect(markup).toContain("Also produced"); expect(markup).toContain("summary.mp4"); expect(markup).toContain("talking-points.pdf"); // PDF glyph tile label appears for the secondary row expect(markup).toContain("PDF"); }); it("surfaces an output with failed/invalid attachment metadata without crashing", () => { const markup = renderToStaticMarkup( , }), ]} />, ); expect(markup).toContain("broken-output.mp4"); expect(markup).toContain("metadata is unavailable"); // No video element and no download link can be built from invalid metadata expect(markup).not.toContain("