MCPcopy
hub / github.com/ChromeDevTools/chrome-devtools-mcp / performEvaluation

Function performEvaluation

src/tools/script.ts:144–180  ·  view source on GitHub ↗
(
  evaluatable: Evaluatable,
  fnString: string,
  args: Array<JSHandle<unknown>>,
  response: Response,
  options?: {filePath: string; context: Context},
)

Source from the content-addressed store, hash-verified

142});
143
144const performEvaluation = async (
145 evaluatable: Evaluatable,
146 fnString: string,
147 args: Array<JSHandle<unknown>>,
148 response: Response,
149 options?: {filePath: string; context: Context},
150) => {
151 const fn = await evaluatable.evaluateHandle(`(${fnString})`);
152 try {
153 const result = await evaluatable.evaluate(
154 async (fn, ...args) => {
155 // @ts-expect-error no types for function fn
156 return JSON.stringify(await fn(...args));
157 },
158 fn,
159 ...args,
160 );
161 if (options?.filePath) {
162 const data = new TextEncoder().encode(result ?? 'undefined');
163 const {filename} = await options.context.saveFile(
164 data,
165 options.filePath,
166 '.json',
167 );
168 response.appendResponseLine(
169 `Script ran on page. Output saved to ${filename}.`,
170 );
171 } else {
172 response.appendResponseLine('Script ran on page and returned:');
173 response.appendResponseLine('```json');
174 response.appendResponseLine(`${result}`);
175 response.appendResponseLine('```');
176 }
177 } finally {
178 void fn.dispose();
179 }
180};
181
182const getPageOrFrame = async (
183 page: Page,

Callers 1

script.tsFile · 0.85

Calls 4

evaluateMethod · 0.80
saveFileMethod · 0.80
appendResponseLineMethod · 0.65
disposeMethod · 0.45

Tested by

no test coverage detected