MCPcopy Create free account
hub / github.com/ChromeDevTools/chrome-devtools-mcp / startMockServer

Function startMockServer

tests/e2e/telemetry.test.ts:28–107  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

26}
27
28async function startMockServer(): Promise<MockServerContext> {
29 const events: ChromeDevToolsMcpExtension[] = [];
30 let waitingResolvers: Array<{
31 predicate: (event: ChromeDevToolsMcpExtension) => boolean;
32 resolve: (event: ChromeDevToolsMcpExtension) => void;
33 }> = [];
34 let watchdogPid: number | undefined;
35
36 const server = http.createServer((req, res) => {
37 if (req.method === 'POST') {
38 const pidHeader = req.headers['x-watchdog-pid'];
39 if (pidHeader && !Array.isArray(pidHeader)) {
40 watchdogPid = parseInt(pidHeader, 10);
41 }
42
43 let body = '';
44 req.on('data', chunk => {
45 body += chunk.toString();
46 });
47 req.on('end', () => {
48 try {
49 const parsed = JSON.parse(body);
50 // Extract internal log events
51 if (parsed.log_event) {
52 for (const logEvent of parsed.log_event) {
53 if (logEvent.source_extension_json) {
54 const ext = JSON.parse(
55 logEvent.source_extension_json,
56 ) as ChromeDevToolsMcpExtension;
57 events.push(ext);
58
59 // Check if any waiters are satisfied
60 waitingResolvers = waitingResolvers.filter(
61 ({predicate, resolve}) => {
62 if (predicate(ext)) {
63 resolve(ext);
64 return false;
65 }
66 return true;
67 },
68 );
69 }
70 }
71 }
72 } catch (err) {
73 console.error('Failed to parse mock server request', err);
74 }
75 res.writeHead(200, {'Content-Type': 'application/json'});
76 res.end(JSON.stringify({next_request_wait_millis: 100}));
77 });
78 } else {
79 res.writeHead(404);
80 res.end();
81 }
82 });
83
84 await new Promise<void>(resolve => {
85 server.listen(0, '127.0.0.1', () => resolve());

Callers 1

runTelemetryTestFunction · 0.85

Calls 5

resolveFunction · 0.85
toStringMethod · 0.45
parseMethod · 0.45
errorMethod · 0.45
findMethod · 0.45

Tested by

no test coverage detected