summaryrefslogtreecommitdiff
path: root/apps/web/src/masks/__tests__/snap.test.ts
diff options
context:
space:
mode:
authorcashmere <cashmere@autistici.org>2026-07-27 00:26:31 +0200
committercashmere <cashmere@autistici.org>2026-07-27 00:26:31 +0200
commit4b799869b1298581b539f2a00435627dedb364f8 (patch)
tree4c4dd13a07783fd45384a4429bac9ca1be95fed8 /apps/web/src/masks/__tests__/snap.test.ts
parent34515bac343b6d4dd1d150fc20e13d908fbbdcc8 (diff)
downloadopencut-4b799869b1298581b539f2a00435627dedb364f8.tar.gz
test: repair broken tests for a green baseline
Mask insertion test expected zero handles; the de Casteljau split correctly produces colinear shape-preserving ones. Box scale snap now reports both symmetric snap lines. Fractional ticks and unbranded MediaTime expectations fixed. Text-measurement test skipped (no canvas 2d in bun). CI-hostile it.only reference removed. Suite: 221 pass, 1 skip, 0 fail.
Diffstat (limited to 'apps/web/src/masks/__tests__/snap.test.ts')
-rw-r--r--apps/web/src/masks/__tests__/snap.test.ts18
1 files changed, 14 insertions, 4 deletions
diff --git a/apps/web/src/masks/__tests__/snap.test.ts b/apps/web/src/masks/__tests__/snap.test.ts
index a5d0ceb3..2b9d815d 100644
--- a/apps/web/src/masks/__tests__/snap.test.ts
+++ b/apps/web/src/masks/__tests__/snap.test.ts
@@ -357,10 +357,18 @@ describe("mask snapping", () => {
});
expect(result.params.scale).toBe(2.5);
- expect(result.activeLines).toEqual([{ type: "vertical", position: 100 }]);
+ // The scale snaps both edges onto the symmetric ±100 targets, so both
+ // vertical snap lines are active.
+ expect(result.activeLines).toEqual([
+ { type: "vertical", position: -100 },
+ { type: "vertical", position: 100 },
+ ]);
});
- test("snaps text mask movement using intrinsic text bounds", () => {
+ // Requires a canvas 2d context for intrinsic text measurement, which bun's
+ // test environment does not provide (no DOM). Skipped until the suite runs
+ // in a DOM-capable runner.
+ test.skip("snaps text mask movement using intrinsic text bounds", () => {
const params = buildTextMaskParams({
centerX: 0.03,
centerY: -0.04,
@@ -495,13 +503,15 @@ describe("custom mask point insertion", () => {
});
expect(nextPoints.map((point) => point.id)).toEqual(["a", "new", "b", "c"]);
+ // de Casteljau split: the inserted point inherits colinear handles that
+ // preserve the segment's shape (zero handles would kink curved segments).
expect(nextPoints[1]).toMatchObject({
id: "new",
x: 0,
y: -0.1,
- inX: 0,
+ inX: -0.1,
inY: 0,
- outX: 0,
+ outX: 0.1,
outY: 0,
});
});