all repos — sz-chrome-remote-cdp @ master

pi-browser-harness, patched to drive a Chrome on another host over CDP, with castle_cdp_search web search

castle-search/test/endpoint.test.ts (view raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
import assert from "node:assert/strict";
import { test } from "node:test";

import {
  DEFAULT_REMOTE_CDP,
  LOCAL_CDP_PORT,
  describeCdpTarget,
  resolveCdpTarget,
} from "../src/endpoint.ts";

const ok = (resolution: ReturnType<typeof resolveCdpTarget>) => {
  assert.equal(resolution.kind, "ok");
  if (resolution.kind !== "ok") throw new Error("unreachable");
  return resolution.target;
};

test("the built-in default parses — the fallback in resolveCdpTarget is unreachable", () => {
  const target = ok(resolveCdpTarget({}, null));
  assert.deepEqual(target, { host: "10.88.0.25", port: 9223, source: "default" });
  assert.equal(`${target.host}:${target.port}`, DEFAULT_REMOTE_CDP);
});

test("BU_CDP_HTTP wins over a stored target", () => {
  const target = ok(resolveCdpTarget({ BU_CDP_HTTP: "10.88.0.9:9333" }, "10.88.0.25:9223"));
  assert.deepEqual(target, { host: "10.88.0.9", port: 9333, source: "env" });
});

test("a stored target is used when the environment is silent", () => {
  const target = ok(resolveCdpTarget({}, "192.168.1.4:9222"));
  assert.deepEqual(target, { host: "192.168.1.4", port: 9222, source: "stored" });
});

test("an empty BU_CDP_HTTP does not shadow the stored target", () => {
  const target = ok(resolveCdpTarget({ BU_CDP_HTTP: "  " }, "192.168.1.4:9222"));
  assert.equal(target.source, "stored");
});

test("the local aliases all resolve to this machine", () => {
  for (const alias of ["local", "localhost", "off", "none", "0", "no", "LOCAL"]) {
    const target = ok(resolveCdpTarget({ BU_CDP_HTTP: alias }, null));
    assert.deepEqual(target, { host: "127.0.0.1", port: LOCAL_CDP_PORT, source: "env" }, alias);
  }
});

test("IPv6-ish and malformed values are rejected rather than half-parsed", () => {
  for (const raw of ["nonsense", "host:", ":9223", "host:0", "host:65536", "host:notaport"]) {
    const resolution = resolveCdpTarget({ BU_CDP_HTTP: raw }, null);
    assert.equal(resolution.kind, "invalid", raw);
  }
});

test("a host with a port takes the last colon, so hostnames survive", () => {
  const target = ok(resolveCdpTarget({ BU_CDP_HTTP: "castle.local:9223" }, null));
  assert.deepEqual(target, { host: "castle.local", port: 9223, source: "env" });
});

test("describeCdpTarget names where the choice came from", () => {
  assert.equal(
    describeCdpTarget({ host: "10.88.0.25", port: 9223, source: "default" }),
    "10.88.0.25:9223 (built-in default)",
  );
  assert.equal(describeCdpTarget({ host: "h", port: 1, source: "env" }), "h:1 (BU_CDP_HTTP)");
  assert.equal(describeCdpTarget({ host: "h", port: 1, source: "stored" }), "h:1 (/browser-target)");
});