log times it takes for snapshotting and screenshotting

This commit is contained in:
Tommy D. Rossi
2026-02-03 15:37:08 +01:00
parent a3c874ac4c
commit 0819067dc0
+9 -1
View File
@@ -1253,9 +1253,9 @@ export async function screenshotWithAccessibilityLabels({ page, locator, interac
collector: ScreenshotResult[] collector: ScreenshotResult[]
logger?: { info?: (...args: unknown[]) => void; error?: (...args: unknown[]) => void } logger?: { info?: (...args: unknown[]) => void; error?: (...args: unknown[]) => void }
}): Promise<void> { }): Promise<void> {
const log = logger?.info ?? logger?.error
const showLabelsStart = Date.now() const showLabelsStart = Date.now()
const { snapshot, labelCount } = await showAriaRefLabels({ page, locator, interactiveOnly, wsUrl, logger }) const { snapshot, labelCount } = await showAriaRefLabels({ page, locator, interactiveOnly, wsUrl, logger })
const log = logger?.info ?? logger?.error
if (log) { if (log) {
log(`showAriaRefLabels: ${Date.now() - showLabelsStart}ms`) log(`showAriaRefLabels: ${Date.now() - showLabelsStart}ms`)
} }
@@ -1287,14 +1287,19 @@ export async function screenshotWithAccessibilityLabels({ page, locator, interac
const clipHeight = sharp ? viewport.height : Math.min(viewport.height, MAX_DIMENSION) const clipHeight = sharp ? viewport.height : Math.min(viewport.height, MAX_DIMENSION)
// Take viewport screenshot with scale: 'css' to ignore device pixel ratio // Take viewport screenshot with scale: 'css' to ignore device pixel ratio
const screenshotStart = Date.now()
const rawBuffer = await page.screenshot({ const rawBuffer = await page.screenshot({
type: 'jpeg', type: 'jpeg',
quality: 80, quality: 80,
scale: 'css', scale: 'css',
clip: { x: 0, y: 0, width: clipWidth, height: clipHeight }, clip: { x: 0, y: 0, width: clipWidth, height: clipHeight },
}) })
if (log) {
log(`page.screenshot: ${Date.now() - screenshotStart}ms`)
}
// Resize with sharp if available, otherwise use clipped raw buffer // Resize with sharp if available, otherwise use clipped raw buffer
const resizeStart = Date.now()
const buffer = await (async () => { const buffer = await (async () => {
if (!sharp) { if (!sharp) {
logger?.error?.('[playwriter] sharp not available, using clipped screenshot (max', MAX_DIMENSION, 'px)') logger?.error?.('[playwriter] sharp not available, using clipped screenshot (max', MAX_DIMENSION, 'px)')
@@ -1315,6 +1320,9 @@ export async function screenshotWithAccessibilityLabels({ page, locator, interac
return rawBuffer return rawBuffer
} }
})() })()
if (log) {
log(`screenshot resize: ${Date.now() - resizeStart}ms`)
}
// Save to file // Save to file
fs.writeFileSync(screenshotPath, buffer) fs.writeFileSync(screenshotPath, buffer)