diff --git a/test/browsercontext.spec.js b/test/browsercontext.spec.js index 949376381e..17b8236e1c 100644 --- a/test/browsercontext.spec.js +++ b/test/browsercontext.spec.js @@ -93,11 +93,18 @@ module.exports.describe = function({testRunner, expect, playwright, CHROME, WEBK ]); expect(browser.browserContexts().length).toBe(1); }); - it('should set the default viewport', async({ newPage }) => { + it('should propagate default viewport to the page', async({ newPage }) => { const page = await newPage({ viewport: { width: 456, height: 789 } }); + expect(page.viewport().width).toBe(456); + expect(page.viewport().height).toBe(789); expect(await page.evaluate('window.innerWidth')).toBe(456); expect(await page.evaluate('window.innerHeight')).toBe(789); }); + it.skip(WEBKIT)('should propagate default mediaType and colorScheme to the page', async({ newPage }) => { + const page = await newPage({ mediaType: 'print', colorScheme: 'dark' }); + expect(await page.evaluate(() => matchMedia('print').matches)).toBe(true); + expect(await page.evaluate(() => matchMedia('(prefers-color-scheme: dark)').matches)).toBe(true); + }); it('should take fullPage screenshots when default viewport is null', async({server, newPage}) => { const page = await newPage({ viewport: null }); await page.goto(server.PREFIX + '/grid.html'); @@ -111,6 +118,19 @@ module.exports.describe = function({testRunner, expect, playwright, CHROME, WEBK expect(sizeBefore.width).toBe(sizeAfter.width); expect(sizeBefore.height).toBe(sizeAfter.height); }); + it('should restore default viewport after fullPage screenshot', async({ newPage }) => { + const page = await newPage({ viewport: { width: 456, height: 789 } }); + expect(page.viewport().width).toBe(456); + expect(page.viewport().height).toBe(789); + expect(await page.evaluate('window.innerWidth')).toBe(456); + expect(await page.evaluate('window.innerHeight')).toBe(789); + const screenshot = await page.screenshot({ fullPage: true }); + expect(screenshot).toBeInstanceOf(Buffer); + expect(page.viewport().width).toBe(456); + expect(page.viewport().height).toBe(789); + expect(await page.evaluate('window.innerWidth')).toBe(456); + expect(await page.evaluate('window.innerHeight')).toBe(789); + }); }); describe('BrowserContext({setUserAgent})', function() { @@ -125,7 +145,7 @@ module.exports.describe = function({testRunner, expect, playwright, CHROME, WEBK server.waitForRequest('/empty.html'), page.goto(server.EMPTY_PAGE), ]); - expect(request.headers['user-agent']).toBe('foobar'); + expect(request.headers['user-agent']).toBe('foobar'); } }); it('should work for subframes', async({newPage, server}) => { @@ -139,7 +159,7 @@ module.exports.describe = function({testRunner, expect, playwright, CHROME, WEBK server.waitForRequest('/empty.html'), utils.attachFrame(page, 'frame1', server.EMPTY_PAGE), ]); - expect(request.headers['user-agent']).toBe('foobar'); + expect(request.headers['user-agent']).toBe('foobar'); } }); it('should emulate device user-agent', async({newPage, server}) => { diff --git a/test/playwright.spec.js b/test/playwright.spec.js index d1c23190af..34470ab7b9 100644 --- a/test/playwright.spec.js +++ b/test/playwright.spec.js @@ -127,7 +127,7 @@ module.exports.describe = ({testRunner, product, playwrightPath}) => { state.newPage = async (options) => { const context = await state.newContext(options); - return await context.newPage(options); + return await context.newPage(); }; }); diff --git a/test/screenshot.spec.js b/test/screenshot.spec.js index ae1728c786..bf496a6f2e 100644 --- a/test/screenshot.spec.js +++ b/test/screenshot.spec.js @@ -91,6 +91,14 @@ module.exports.describe = function({testRunner, expect, product, FFOX, CHROME, W }); expect(screenshot).toBeGolden('screenshot-grid-fullpage.png'); }); + it('should restore viewport after fullPage screenshot', async({page, server}) => { + await page.setViewport({width: 500, height: 500}); + await page.goto(server.PREFIX + '/grid.html'); + const screenshot = await page.screenshot({ fullPage: true }); + expect(screenshot).toBeInstanceOf(Buffer); + expect(page.viewport().width).toBe(500); + expect(page.viewport().height).toBe(500); + }); it('should run in parallel in multiple pages', async({page, server, context}) => { const N = 2; const pages = await Promise.all(Array(N).fill(0).map(async() => {