diff --git a/src/tools/screenshot.ts b/src/tools/screenshot.ts index d8d3dfcf..4312c02a 100644 --- a/src/tools/screenshot.ts +++ b/src/tools/screenshot.ts @@ -62,10 +62,13 @@ export const screenshot = defineTool({ pageOrHandle = context.getSelectedPage(); } + const format = request.params.format; + const quality = format === 'png' ? undefined : request.params.quality; + const screenshot = await pageOrHandle.screenshot({ - type: request.params.format, + type: format, fullPage: request.params.fullPage, - quality: request.params.quality, + quality, optimizeForSpeed: true, // Bonus: optimize encoding for speed }); diff --git a/tests/tools/screenshot.test.ts b/tests/tools/screenshot.test.ts index c5b3a460..ebf207e1 100644 --- a/tests/tools/screenshot.test.ts +++ b/tests/tools/screenshot.test.ts @@ -30,6 +30,25 @@ describe('screenshot', () => { ); }); }); + it('ignores quality', async () => { + await withBrowser(async (response, context) => { + const fixture = screenshots.basic; + const page = context.getSelectedPage(); + await page.setContent(fixture.html); + await screenshot.handler( + {params: {format: 'png', quality: 0}}, + response, + context, + ); + + assert.equal(response.images.length, 1); + assert.equal(response.images[0].mimeType, 'image/png'); + assert.equal( + response.responseLines.at(0), + "Took a screenshot of the current page's viewport.", + ); + }); + }); it('with jpeg', async () => { await withBrowser(async (response, context) => { await screenshot.handler({params: {format: 'jpeg'}}, response, context);