add test proving viewport screenshot dimensions are correct without clip param
In connectOverCDP mode, Playwright already falls back to querying window.innerWidth/innerHeight for viewport size (screenshotter.ts _originalViewportSize). This test confirms the screenshot dimensions match exactly with just scale:'css' and no manual clip, proving the clip in screenshotWithAccessibilityLabels is redundant. The test goes through the full extension CDP path: Playwright → relay server → extension WS → chrome.debugger
This commit is contained in:
@@ -138,6 +138,45 @@ describe('Snapshot & Screenshot Tests', () => {
|
|||||||
await page.close()
|
await page.close()
|
||||||
}, 60000)
|
}, 60000)
|
||||||
|
|
||||||
|
it('should match window.innerWidth/Height without clip param', async () => {
|
||||||
|
// Proves that in connectOverCDP mode, Playwright already queries
|
||||||
|
// window.innerWidth/innerHeight for viewport screenshots, so passing
|
||||||
|
// a manual clip is redundant.
|
||||||
|
const browserContext = getBrowserContext()
|
||||||
|
const serviceWorker = await getExtensionServiceWorker(browserContext)
|
||||||
|
|
||||||
|
const page = await browserContext.newPage()
|
||||||
|
await page.goto('https://example.com/')
|
||||||
|
await page.bringToFront()
|
||||||
|
|
||||||
|
await serviceWorker.evaluate(async () => {
|
||||||
|
await globalThis.toggleExtensionForActiveTab()
|
||||||
|
})
|
||||||
|
await new Promise(r => setTimeout(r, 100))
|
||||||
|
|
||||||
|
const browser = await chromium.connectOverCDP(getCdpUrl({ port: TEST_PORT }))
|
||||||
|
const cdpPage = browser.contexts()[0].pages().find(p => p.url().includes('example.com'))
|
||||||
|
expect(cdpPage).toBeDefined()
|
||||||
|
|
||||||
|
// Get actual browser viewport via JS
|
||||||
|
const actualViewport = await cdpPage!.evaluate(() => ({
|
||||||
|
width: window.innerWidth,
|
||||||
|
height: window.innerHeight,
|
||||||
|
}))
|
||||||
|
console.log('Actual viewport (window.inner*):', actualViewport)
|
||||||
|
|
||||||
|
// Plain screenshot with scale:'css', NO clip
|
||||||
|
const screenshot = await cdpPage!.screenshot({ scale: 'css' })
|
||||||
|
const dimensions = imageSize(screenshot)
|
||||||
|
console.log('Screenshot dimensions (no clip):', dimensions)
|
||||||
|
|
||||||
|
expect(dimensions.width).toBe(actualViewport.width)
|
||||||
|
expect(dimensions.height).toBe(actualViewport.height)
|
||||||
|
|
||||||
|
await browser.close()
|
||||||
|
await page.close()
|
||||||
|
}, 60000)
|
||||||
|
|
||||||
it('should capture element screenshot with correct coordinates', async () => {
|
it('should capture element screenshot with correct coordinates', async () => {
|
||||||
const browserContext = getBrowserContext()
|
const browserContext = getBrowserContext()
|
||||||
const serviceWorker = await getExtensionServiceWorker(browserContext)
|
const serviceWorker = await getExtensionServiceWorker(browserContext)
|
||||||
|
|||||||
Reference in New Issue
Block a user