import { expect, test } from "@playwright/test";
import { expectToolcraftExportedArtifact } from "./browser-acceptance-outcome-helpers";
import {
expectToolcraftDiscreteSliderMarkers,
expectToolcraftSegmentedControlCellsPreservePadding,
getToolcraftFieldByLabel,
} from "./performance-helpers";
test("discrete slider layout accepts one interior marker and rejects none", async ({
page,
}) => {
await page.setContent(`
`);
await expectToolcraftDiscreteSliderMarkers(page, "canvas.renderScale");
await page.setContent(`
`);
await expect(
expectToolcraftDiscreteSliderMarkers(page, "canvas.renderScale"),
).rejects.toThrow(/at least one interior marker/);
});
test("segmented layout helper catches paddingless or colliding cells", async ({ page }) => {
await page.setContent(`
`);
await expectToolcraftSegmentedControlCellsPreservePadding(page, "FX Preset");
await page.setContent(`
FX Preset
`);
await expect(
expectToolcraftSegmentedControlCellsPreservePadding(page, "FX Preset"),
).rejects.toThrow(/must preserve cell padding/);
});
test("performance helpers match control labels literally", async ({ page }) => {
await page.setContent(`
Size (px)
Size px
`);
await expect(await getToolcraftFieldByLabel(page, "Size (px)")).toHaveAttribute(
"data-testid",
"literal-label",
);
});
test("export acceptance rejects a verifier that does not return an artifact observation", async () => {
await expect(
expectToolcraftExportedArtifact(
async () => new Uint8Array([1, 2, 3]),
async () => ({}),
{ requirementId: "image-export-artifact" },
),
).rejects.toThrow(/artifact inspection/i);
await expect(
expectToolcraftExportedArtifact(
async () => undefined,
async () => ({ byteLength: 1 }),
{ requirementId: "missing-export-artifact" },
),
).rejects.toThrow(/non-empty export artifact/i);
});