From 9f2f75dd9281153888776e5d39d4926655c15f2a Mon Sep 17 00:00:00 2001 From: amankumarsingh77 Date: Mon, 27 Jul 2026 23:26:50 +0530 Subject: refactor(domains): drop CDP casts, share the box-model unwrap ref-resolve.ts and snapshot.ts had the same box-model unwrap, both using data.model! to work around an untyped response. Extracted to domains/box.ts; the typed schema makes the assertions unnecessary. Both derived the centre identically (quad corner + half the model width/height), so centreOf keeps that derivation; the shared zero-size rejection moved into boxOf, and snapshot keeps its own off-viewport (x/y < 0) filter. evalInIsolatedTab now goes through evaluateJson with the tab's own sessionId and a caller-supplied guard; both callers evaluate expressions ending in JSON.stringify, so they pass isJsonText rather than a check that checks nothing. Runtime.evaluate/callFunctionOn result casts in form.ts, forms.ts and keyboard.ts are replaced by named guards over the in-page result shapes. Runtime.callFunctionOn's params schema gained arguments/returnByValue/ awaitPromise/userGesture: four domain call sites legitimately pass them and typebox's additionalProperties:true does not widen the static type, so the params type was rejecting valid CDP fields. Params schemas are type-only (only results are compiled), so this is a compile-time widening with no runtime effect. tsc is green again for both tsconfigs. Co-Authored-By: Claude Opus 5 (1M context) --- test/domains/box-test.ts | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 test/domains/box-test.ts (limited to 'test') diff --git a/test/domains/box-test.ts b/test/domains/box-test.ts new file mode 100644 index 0000000..cb930a0 --- /dev/null +++ b/test/domains/box-test.ts @@ -0,0 +1,20 @@ +import { test, describe } from "node:test"; +import assert from "node:assert/strict"; +import { centreOf } from "../../src/domains/box"; + +describe("box centre", () => { + test("computes the centre from a content quad", () => { + const b = centreOf({ content: [10, 20, 110, 20, 110, 70, 10, 70], width: 100, height: 50 }); + assert.equal(b.cx, 60); + assert.equal(b.cy, 45); + assert.equal(b.width, 100); + assert.equal(b.height, 50); + }); + + test("a degenerate zero-size quad yields its own corner, not NaN", () => { + const b = centreOf({ content: [5, 5, 5, 5, 5, 5, 5, 5], width: 0, height: 0 }); + assert.equal(b.cx, 5); + assert.equal(b.cy, 5); + assert.ok(!Number.isNaN(b.cx)); + }); +}); -- cgit v1.2.3