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(`
FX Preset
`); 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); });