From 95454735bf1e3126030a01620cb64c0bb27b6bee Mon Sep 17 00:00:00 2001 From: Pavel Feldman Date: Wed, 16 Jul 2025 18:32:07 -0700 Subject: [PATCH] chore: remove image reply special case in cursor (#680) --- README.md | 10 ++++------ config.d.ts | 2 +- src/config.ts | 2 +- src/context.ts | 4 +--- src/program.ts | 2 +- tests/screenshot.spec.ts | 29 ----------------------------- 6 files changed, 8 insertions(+), 41 deletions(-) diff --git a/README.md b/README.md index 6932df1..582d79a 100644 --- a/README.md +++ b/README.md @@ -205,9 +205,7 @@ Playwright MCP server supports following arguments. They can be provided in the --isolated keep the browser profile in memory, do not save it to disk. --image-responses whether to send image responses to the client. - Can be "allow", "omit", or "auto". Defaults to - "auto", which sends images if the client can - display them. + Can be "allow" or "omit", Defaults to "allow". --no-sandbox disable the sandbox for all process types that are normally sandboxed. --output-dir path to the directory for output files. @@ -346,10 +344,10 @@ npx @playwright/mcp@latest --config path/to/config.json }; /** - * Whether to send image responses to the client. Can be "allow", "omit", or "auto". - * Defaults to "auto", images are omitted for Cursor clients and sent for all other clients. + * Whether to send image responses to the client. Can be "allow" or "omit". + * Defaults to "allow". */ - imageResponses?: 'allow' | 'omit' | 'auto'; + imageResponses?: 'allow' | 'omit'; } ``` diff --git a/config.d.ts b/config.d.ts index 7a654f9..024c29a 100644 --- a/config.d.ts +++ b/config.d.ts @@ -110,5 +110,5 @@ export type Config = { /** * Whether to send image responses to the client. Can be "allow", "omit", or "auto". Defaults to "auto", which sends images if the client can display them. */ - imageResponses?: 'allow' | 'omit' | 'auto'; + imageResponses?: 'allow' | 'omit'; }; diff --git a/src/config.ts b/src/config.ts index a0b7685..b702218 100644 --- a/src/config.ts +++ b/src/config.ts @@ -37,7 +37,7 @@ export type CLIOptions = { host?: string; ignoreHttpsErrors?: boolean; isolated?: boolean; - imageResponses?: 'allow' | 'omit' | 'auto'; + imageResponses?: 'allow' | 'omit'; sandbox: boolean; outputDir?: string; port?: number; diff --git a/src/context.ts b/src/context.ts index f63a250..d252291 100644 --- a/src/context.ts +++ b/src/context.ts @@ -52,11 +52,9 @@ export class Context { } clientSupportsImages(): boolean { - if (this.config.imageResponses === 'allow') - return true; if (this.config.imageResponses === 'omit') return false; - return !this.clientVersion?.name.includes('cursor'); + return true; } modalStates(): ModalState[] { diff --git a/src/program.ts b/src/program.ts index 8d0da62..27c42b6 100644 --- a/src/program.ts +++ b/src/program.ts @@ -39,7 +39,7 @@ program .option('--host ', 'host to bind server to. Default is localhost. Use 0.0.0.0 to bind to all interfaces.') .option('--ignore-https-errors', 'ignore https errors') .option('--isolated', 'keep the browser profile in memory, do not save it to disk.') - .option('--image-responses ', 'whether to send image responses to the client. Can be "allow", "omit", or "auto". Defaults to "auto", which sends images if the client can display them.') + .option('--image-responses ', 'whether to send image responses to the client. Can be "allow" or "omit", Defaults to "allow".') .option('--no-sandbox', 'disable the sandbox for all process types that are normally sandboxed.') .option('--output-dir ', 'path to the directory for output files.') .option('--port ', 'port to listen on for SSE transport.') diff --git a/tests/screenshot.spec.ts b/tests/screenshot.spec.ts index b83e10a..9a63098 100644 --- a/tests/screenshot.spec.ts +++ b/tests/screenshot.spec.ts @@ -201,32 +201,3 @@ test('browser_take_screenshot (imageResponses=omit)', async ({ startClient, serv ], }); }); - -test('browser_take_screenshot (cursor)', async ({ startClient, server }, testInfo) => { - const outputDir = testInfo.outputPath('output'); - - const { client } = await startClient({ - clientName: 'cursor:vscode', - config: { outputDir }, - }); - - expect(await client.callTool({ - name: 'browser_navigate', - arguments: { url: server.HELLO_WORLD }, - })).toContainTextContent(`Navigate to http://localhost`); - - await client.callTool({ - name: 'browser_take_screenshot', - }); - - expect(await client.callTool({ - name: 'browser_take_screenshot', - })).toEqual({ - content: [ - { - text: expect.stringContaining(`Screenshot viewport and save it as`), - type: 'text', - }, - ], - }); -});