chore: use pngs by default for screenshots (#797)

1. Use PNG by default.
1. Increase JPG quality from `50` -> `90`.
This commit is contained in:
Max Schmitt
2025-07-31 11:03:19 +02:00
committed by GitHub
parent 6dd44923da
commit 2a86ac74e3
3 changed files with 60 additions and 24 deletions

View File

@@ -24,7 +24,7 @@ import { generateLocator } from './utils.js';
import type * as playwright from 'playwright';
const screenshotSchema = z.object({
raw: z.boolean().optional().describe('Whether to return without compression (in PNG format). Default is false, which returns a JPEG image.'),
type: z.enum(['png', 'jpeg']).default('png').describe('Image format for the screenshot. Default is png.'),
filename: z.string().optional().describe('File name to save the screenshot to. Defaults to `page-{timestamp}.{png|jpeg}` if not specified.'),
element: z.string().optional().describe('Human-readable element description used to obtain permission to screenshot the element. If not provided, the screenshot will be taken of viewport. If element is provided, ref must be provided too.'),
ref: z.string().optional().describe('Exact target element reference from the page snapshot. If not provided, the screenshot will be taken of viewport. If ref is provided, element must be provided too.'),
@@ -52,11 +52,11 @@ const screenshot = defineTabTool({
},
handle: async (tab, params, response) => {
const fileType = params.raw ? 'png' : 'jpeg';
const fileType = params.type || 'png';
const fileName = await outputFile(tab.context.config, params.filename ?? `page-${new Date().toISOString()}.${fileType}`);
const options: playwright.PageScreenshotOptions = {
type: fileType,
quality: fileType === 'png' ? undefined : 50,
quality: fileType === 'png' ? undefined : 90,
scale: 'css',
path: fileName,
...(params.fullPage !== undefined && { fullPage: params.fullPage })