From 34e5cfdcbe29bbb5f2f46ba54eb67903abd9274d Mon Sep 17 00:00:00 2001 From: amankumarsingh77 Date: Tue, 28 Jul 2026 20:32:57 +0530 Subject: refactor(test): strip comment noise Removes suite banners, section dividers, and test-id markers that restate the test names. Keeps one-line notes for the deleted-binary fixture order, the never-arriving event consumer, the absent-vs-undefined key distinction, the unexpected-method-echo rationale, and the real-browser teardown and Local State flush quirks. Co-Authored-By: Claude Opus 5 (1M context) --- test/manual/e2e-test.ts | 33 --------------------------------- 1 file changed, 33 deletions(-) (limited to 'test/manual/e2e-test.ts') diff --git a/test/manual/e2e-test.ts b/test/manual/e2e-test.ts index 963efaf..659409f 100644 --- a/test/manual/e2e-test.ts +++ b/test/manual/e2e-test.ts @@ -1,11 +1,3 @@ -/** - * End-to-end integration test: full daemon pipeline. - * - * Starts the daemon (IpcServer + CdpBridge), connects via DaemonTransport, - * exercises the full CDP request/response/event lifecycle. - * - * Run: npx tsx test/manual/e2e-test.ts - */ import { createIpcServer } from "../../src/daemon/server"; import { createCdpBridge, type SendToClient } from "../../src/daemon/bridge"; import { createDaemonTransport } from "../../src/cdp/daemon-transport"; @@ -21,15 +13,12 @@ const check = (cond: boolean, label: string) => { }; async function main() { - // Clean up stale socket try { unlinkSync(DAEMON_SOCKET_PATH); } catch {} - // ── Start daemon ─────────────────────────────────────────────────────── console.log("Starting daemon (IpcServer + CdpBridge)..."); const ipcServer = createIpcServer(); const cdpBridge = createCdpBridge(); - // Wire IpcServer ↔ CdpBridge ipcServer.onMessage((msg, client) => { if (msg.type !== "request") return; const send: SendToClient = (cid, resp) => ipcServer.send(cid, resp); @@ -45,10 +34,7 @@ async function main() { await ipcServer.start(); console.log("Daemon started ✓"); - // The bridge will try to connect to Chrome — might fail, that's ok for - // this test. We'll simulate CDP responses from the server side. - // ── Connect pi client via DaemonTransport ────────────────────────────── console.log("\nConnecting pi client (DaemonTransport)..."); const transport = createDaemonTransport("pi-e2e-test"); @@ -56,17 +42,11 @@ async function main() { check(connectResult.success, `Client connect: ${connectResult.success ? "ok" : connectResult.error.message}`); check(transport.state() === "open", "Transport state is open"); - // ── Test 1: Request → simulated CDP response ─────────────────────────── - // The IpcServer's onMessage handler forwards requests to the bridge. - // The bridge tries to send to Chrome (which may be down). For this test, - // we intercept at the IpcServer level and simulate CDP responses. - // Override the message handler to simulate CDP responses directly. let rawRequests: WireRequest[] = []; ipcServer.onMessage((msg, client) => { if (msg.type === "request") { rawRequests.push(msg); - // Simulate a CDP success response ipcServer.send(client.id, { type: "response", id: msg.id, @@ -85,13 +65,11 @@ async function main() { check(rawRequests.length === 1, "Server received exactly 1 request"); check(rawRequests[0]!.method === "Page.navigate", "Correct method forwarded"); - // ── Test 2: Request with sessionId ───────────────────────────────────── rawRequests.length = 0; const res2 = await transport.request("Runtime.evaluate", { expression: "1+1" }, { sessionId: "session-abc" }); check(res2.success, "Session-scoped request succeeded"); check(rawRequests[0]?.sessionId === "session-abc", "SessionId forwarded correctly"); - // ── Test 3: Multiple parallel requests ───────────────────────────────── rawRequests.length = 0; const [r3a, r3b, r3c] = await Promise.all([ transport.request("Target.getTargets", {}), @@ -101,7 +79,6 @@ async function main() { check(r3a.success && r3b.success && r3c.success, "All 3 parallel requests succeeded"); check(rawRequests.length === 3, "Server received all 3 requests"); - // ── Test 4: Events ───────────────────────────────────────────────────── const eventPromise = new Promise((resolve) => { const timeout = setTimeout(() => resolve(null), 2000); (async () => { @@ -113,7 +90,6 @@ async function main() { })(); }); - // Simulate a CDP event broadcast from the daemon ipcServer.broadcast({ type: "event", method: "Target.targetCreated", @@ -123,33 +99,24 @@ async function main() { const eventMethod = await eventPromise; check(eventMethod === "Target.targetCreated", `Event received: ${eventMethod ?? "TIMEOUT"}`); - // ── Test 5: Session persistence (detach simulation) ──────────────────── - // Simulate a session shutdown: close the transport, then reconnect. - // The transport.close() sends deregister, server cleans up. await transport.close(); check(transport.state() === "closed", "Transport closed"); - // Small delay for server cleanup await new Promise(r => setTimeout(r, 500)); - // Reconnect — simulates next pi session const reconnectResult = await transport.connect(""); check(reconnectResult.success, "Transport reconnected (simulated session restart)"); - // Send a request through the reconnected transport const res4 = await transport.request("Target.getTargets", {}); check(res4.success, "Request after reconnect succeeded"); check(transport.state() === "open", "Transport state is open after reconnect"); - // ── Test 6: Server-side client count ─────────────────────────────────── check(ipcServer.clientCount() === 1, "Server reports 1 connected client"); - // ── Test 7: Client disconnect cleanup ────────────────────────────────── await transport.close(); await new Promise(r => setTimeout(r, 500)); check(ipcServer.clientCount() === 0, "Server reports 0 clients after disconnect"); - // ── Cleanup ──────────────────────────────────────────────────────────── await ipcServer.stop(); console.log("\nDaemon stopped ✓"); -- cgit v1.2.3