Files
2026-09-01 13:22:35 +02:00

50 lines
1.7 KiB
TypeScript

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(<Workbench />);
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(<Workbench />);
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);
});
});