import { render, screen, waitFor } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { describe, expect, it } from "vitest"; import { Workbench } from "../../src/components/Workbench"; describe("Minimize workbench", () => { it("minimizes the focused JSON Schema example", async () => { const user = userEvent.setup(); render(); await user.click( screen.getByRole("button", { name: "Minimize reproducer" }), ); await waitFor(() => expect( (screen.getByLabelText("Minimized result") as HTMLTextAreaElement) .value, ).toContain('"id":0'), ); expect(screen.getByText(/bytes ยท \d+ tests/u)).toBeInTheDocument(); }); it("keeps the last complete result after a predicate error", async () => { const user = userEvent.setup(); render(); await user.click( screen.getByRole("button", { name: "Minimize reproducer" }), ); await waitFor(() => expect(screen.getByLabelText("Minimized result")).not.toHaveValue(""), ); const previous = ( screen.getByLabelText("Minimized result") as HTMLTextAreaElement ).value; await user.selectOptions( screen.getByLabelText("Failure predicate"), "contains", ); const marker = screen.getByLabelText("Marker"); await user.clear(marker); await user.type(marker, "NOT PRESENT"); await user.click( screen.getByRole("button", { name: "Minimize reproducer" }), ); await waitFor(() => expect(screen.getByRole("alert")).toHaveTextContent(/retained/u), ); expect(screen.getByLabelText("Minimized result")).toHaveValue(previous); }); });