From 0077b428fc7254d891abd5554727d5e23d2a69e4 Mon Sep 17 00:00:00 2001 From: Pavel Feldman Date: Tue, 10 Mar 2020 13:16:33 -0700 Subject: [PATCH] feat(webkit): emulate device size (#1318) --- package.json | 2 +- src/webkit/wkPage.ts | 11 +++++++++++ test/emulation.spec.js | 4 ++-- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 325723bd2792c..8d423048a8392 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "playwright": { "chromium_revision": "747023", "firefox_revision": "1041", - "webkit_revision": "1168" + "webkit_revision": "1171" }, "scripts": { "ctest": "cross-env BROWSER=chromium node test/test.js", diff --git a/src/webkit/wkPage.ts b/src/webkit/wkPage.ts index 87e7b9b8617be..c4af14cd7e4d6 100644 --- a/src/webkit/wkPage.ts +++ b/src/webkit/wkPage.ts @@ -145,6 +145,13 @@ export class WKPage implements PageDelegate { promises.push(this._evaluateBindingScript(binding)); if (contextOptions.bypassCSP) promises.push(session.send('Page.setBypassCSP', { enabled: true })); + if (this._page._state.viewportSize) { + promises.push(session.send('Page.setScreenSizeOverride', { + width: this._page._state.viewportSize.width, + height: this._page._state.viewportSize.height, + })); + } + promises.push(session.send('Network.setExtraHTTPHeaders', { headers: this._calculateExtraHTTPHeaders() })); if (contextOptions.offline) promises.push(session.send('Network.setEmulateOfflineState', { offline: true })); @@ -489,6 +496,10 @@ export class WKPage implements PageDelegate { fixedLayout: !!viewport.isMobile, deviceScaleFactor: viewport.deviceScaleFactor || 1 }), + this._session.send('Page.setScreenSizeOverride', { + width: viewport.width, + height: viewport.height, + }), ]; await Promise.all(promises); } diff --git a/test/emulation.spec.js b/test/emulation.spec.js index b67ea2175e28c..084ad6c13b783 100644 --- a/test/emulation.spec.js +++ b/test/emulation.spec.js @@ -38,7 +38,7 @@ module.exports.describe = function({testRunner, expect, playwright, headless, FF expect(await page.evaluate(() => window.innerWidth)).toBe(123); expect(await page.evaluate(() => window.innerHeight)).toBe(456); }); - it.fail(WEBKIT || FFOX)('should emulate device-width media queries', async({page, server}) => { + it.fail(FFOX)('should emulate device-width media queries', async({page, server}) => { expect(page.viewportSize()).toEqual({width: 1280, height: 720}); await page.setViewportSize({width: 200, height: 200}); expect(await page.evaluate(() => matchMedia('(min-device-width: 100px)').matches)).toBe(true); @@ -55,7 +55,7 @@ module.exports.describe = function({testRunner, expect, playwright, headless, FF expect(await page.evaluate(() => matchMedia('(device-width: 200px)').matches)).toBe(false); expect(await page.evaluate(() => matchMedia('(device-width: 500px)').matches)).toBe(true); }); - it.fail(WEBKIT || FFOX)('should emulate device-height media queries', async({page, server}) => { + it.fail(FFOX)('should emulate device-height media queries', async({page, server}) => { expect(page.viewportSize()).toEqual({width: 1280, height: 720}); await page.setViewportSize({width: 200, height: 200}); expect(await page.evaluate(() => matchMedia('(min-device-height: 100px)').matches)).toBe(true);