Skip to content

Commit 8ad292e

Browse files
committed
chore: pass args to McpResponse
1 parent 925ebf7 commit 8ad292e

8 files changed

Lines changed: 66 additions & 47 deletions

File tree

src/McpResponse.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
* SPDX-License-Identifier: Apache-2.0
55
*/
66

7+
import type {ParsedArguments} from './cli.js';
78
import {ConsoleFormatter} from './formatters/ConsoleFormatter.js';
89
import {IssueFormatter} from './formatters/IssueFormatter.js';
910
import {NetworkFormatter} from './formatters/NetworkFormatter.js';
@@ -66,6 +67,11 @@ export class McpResponse implements Response {
6667
#listExtensions?: boolean;
6768
#devToolsData?: DevToolsData;
6869
#tabId?: string;
70+
#args: ParsedArguments;
71+
72+
constructor(args: ParsedArguments) {
73+
this.#args = args;
74+
}
6975

7076
attachDevToolsData(data: DevToolsData): void {
7177
this.#devToolsData = data;
@@ -75,10 +81,10 @@ export class McpResponse implements Response {
7581
this.#tabId = tabId;
7682
}
7783

78-
setIncludePages(value: boolean, includeServiceWorkers?: boolean): void {
84+
setIncludePages(value: boolean): void {
7985
this.#includePages = value;
8086

81-
if (includeServiceWorkers) {
87+
if (this.#args.categoryExtensions) {
8288
this.#includeExtensionServiceWorkers = value;
8389
}
8490
}

src/main.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,10 @@ function registerTool(tool: ToolDefinition): void {
203203
const context = await getContext();
204204
logger(`${tool.name} context: resolved`);
205205
await context.detectOpenDevToolsWindows();
206-
const response = args.slim ? new SlimMcpResponse() : new McpResponse();
206+
const response = args.slim
207+
? new SlimMcpResponse(args)
208+
: new McpResponse(args);
209+
207210
await tool.handler(
208211
{
209212
params,

src/tools/ToolDefinition.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ export interface DevToolsData {
6363

6464
export interface Response {
6565
appendResponseLine(value: string): void;
66-
setIncludePages(value: boolean, shouldIncludeExtension?: boolean): void;
66+
setIncludePages(value: boolean): void;
6767
setIncludeNetworkRequests(
6868
value: boolean,
6969
options?: PaginationOptions & {

src/tools/pages.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ export const listPages = defineTool(args => {
2121
},
2222
schema: {},
2323
handler: async (_request, response) => {
24-
response.setIncludePages(true, args?.categoryExtensions);
24+
response.setIncludePages(true);
2525
},
2626
};
2727
});

tests/tools/console.test.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import assert from 'node:assert';
88
import {before, describe, it} from 'node:test';
99

10+
import type {ParsedArguments} from '../../src/cli.js';
1011
import {loadIssueDescriptions} from '../../src/issue-descriptions.js';
1112
import {McpResponse} from '../../src/McpResponse.js';
1213
import {DevTools} from '../../src/third_party/index.js';
@@ -170,7 +171,7 @@ describe('console', () => {
170171
await context.createTextSnapshot();
171172
await issuePromise;
172173
await listConsoleMessages.handler({params: {}}, response, context);
173-
const response2 = new McpResponse();
174+
const response2 = new McpResponse({} as ParsedArguments);
174175
await getConsoleMessage.handler(
175176
{params: {msgid: 1}},
176177
response2,
@@ -225,7 +226,7 @@ describe('console', () => {
225226
response,
226227
context,
227228
);
228-
const response2 = new McpResponse();
229+
const response2 = new McpResponse({} as ParsedArguments);
229230
await getConsoleMessage.handler(
230231
{params: {msgid: id}},
231232
response2,

tests/tools/input.test.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import fs from 'node:fs/promises';
99
import path from 'node:path';
1010
import {describe, it} from 'node:test';
1111

12+
import type {ParsedArguments} from '../../src/cli.js';
1213
import {McpResponse} from '../../src/McpResponse.js';
1314
import {
1415
click,
@@ -514,7 +515,7 @@ describe('input', () => {
514515
await context.createTextSnapshot();
515516

516517
// Fill email
517-
const response1 = new McpResponse();
518+
const response1 = new McpResponse({} as ParsedArguments);
518519
await fill.handler(
519520
{
520521
params: {
@@ -531,7 +532,7 @@ describe('input', () => {
531532
);
532533

533534
// Fill password
534-
const response2 = new McpResponse();
535+
const response2 = new McpResponse({} as ParsedArguments);
535536
await fill.handler(
536537
{
537538
params: {

tests/tools/pages.test.ts

Lines changed: 43 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -44,47 +44,53 @@ describe('pages', () => {
4444
});
4545
for (const categoryExtensions of [true, false]) {
4646
it(`list pages ${categoryExtensions ? 'with' : 'without'} --category-extensions`, async () => {
47-
await withMcpContext(async (response, context) => {
48-
await installExtension.handler(
49-
{params: {path: EXTENSION_PATH}},
50-
response,
51-
context,
52-
);
47+
await withMcpContext(
48+
async (response, context) => {
49+
await installExtension.handler(
50+
{params: {path: EXTENSION_PATH}},
51+
response,
52+
context,
53+
);
5354

54-
const swTarget = await context.browser.waitForTarget(
55-
t =>
56-
t.type() === 'service_worker' &&
57-
t.url().includes('chrome-extension://'),
58-
);
59-
const swUrl = swTarget.url();
55+
const swTarget = await context.browser.waitForTarget(
56+
t =>
57+
t.type() === 'service_worker' &&
58+
t.url().includes('chrome-extension://'),
59+
);
60+
const swUrl = swTarget.url();
6061

61-
response.resetResponseLineForTesting();
62+
response.resetResponseLineForTesting();
6263

63-
const listPageDef = listPages({
64-
categoryExtensions,
65-
} as ParsedArguments);
66-
await listPageDef.handler({params: {}}, response, context);
67-
68-
const result = await response.handle(listPageDef.name, context);
69-
const textContent = result.content.find(c => c.type === 'text') as {
70-
type: 'text';
71-
text: string;
72-
};
73-
assert.ok(textContent);
74-
75-
if (categoryExtensions) {
76-
assert.ok(textContent.text.includes(swUrl));
77-
const structured = result.structuredContent as {
78-
extensionServiceWorkers: Array<{url: string}>;
64+
const listPageDef = listPages({
65+
categoryExtensions,
66+
} as ParsedArguments);
67+
await listPageDef.handler({params: {}}, response, context);
68+
69+
const result = await response.handle(listPageDef.name, context);
70+
const textContent = result.content.find(c => c.type === 'text') as {
71+
type: 'text';
72+
text: string;
7973
};
80-
assert.deepStrictEqual(
81-
structured.extensionServiceWorkers.map(sw => sw.url),
82-
[swUrl],
83-
);
84-
} else {
85-
assert.ok(!textContent.text.includes(swUrl));
86-
}
87-
});
74+
assert.ok(textContent);
75+
76+
if (categoryExtensions) {
77+
assert.ok(textContent.text.includes(swUrl));
78+
const structured = result.structuredContent as {
79+
extensionServiceWorkers: Array<{url: string}>;
80+
};
81+
assert.deepStrictEqual(
82+
structured.extensionServiceWorkers.map(sw => sw.url),
83+
[swUrl],
84+
);
85+
} else {
86+
assert.ok(!textContent.text.includes(swUrl));
87+
}
88+
},
89+
{},
90+
{
91+
categoryExtensions,
92+
} as ParsedArguments,
93+
);
8894
});
8995
}
9096
});

tests/utils.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import type {
1717
} from 'puppeteer-core';
1818
import sinon from 'sinon';
1919

20+
import type {ParsedArguments} from '../src/cli.js';
2021
import {McpContext} from '../src/McpContext.js';
2122
import {McpResponse} from '../src/McpResponse.js';
2223
import {stableIdSymbol} from '../src/PageCollector.js';
@@ -85,9 +86,10 @@ export async function withMcpContext(
8586
autoOpenDevTools?: boolean;
8687
performanceCrux?: boolean;
8788
} = {},
89+
args: ParsedArguments = {} as ParsedArguments,
8890
) {
8991
await withBrowser(async browser => {
90-
const response = new McpResponse();
92+
const response = new McpResponse(args);
9193
if (context) {
9294
context.dispose();
9395
}

0 commit comments

Comments
 (0)