diff --git a/src/webkit/wkPage.ts b/src/webkit/wkPage.ts index 68b00cb783..aba87fc33a 100644 --- a/src/webkit/wkPage.ts +++ b/src/webkit/wkPage.ts @@ -315,11 +315,12 @@ export class WKPage implements PageDelegate { } async setViewport(viewport: types.Viewport): Promise { - if (viewport.isMobile || viewport.isLandscape || viewport.hasTouch) + if (viewport.isLandscape || viewport.hasTouch) throw new Error('Not implemented'); const width = viewport.width; const height = viewport.height; - await this._pageProxySession.send('Emulation.setDeviceMetricsOverride', { width, height, fixedLayout: false, deviceScaleFactor: viewport.deviceScaleFactor || 1 }); + const fixedLayout = !!viewport.isMobile; + await this._pageProxySession.send('Emulation.setDeviceMetricsOverride', {width, height, fixedLayout, deviceScaleFactor: viewport.deviceScaleFactor || 1 }); } setCacheEnabled(enabled: boolean): Promise { diff --git a/test/emulation.spec.js b/test/emulation.spec.js index 3a872240c3..0c26ed3167 100644 --- a/test/emulation.spec.js +++ b/test/emulation.spec.js @@ -94,6 +94,16 @@ module.exports.describe = function({testRunner, expect, playwright, FFOX, CHROME await page.setViewport(iPhone.viewport); expect((await event2).text()).toBe('2'); }); + it.skip(FFOX)('default mobile viewports to 980 width', async({page, server}) => { + await page.setViewport({width: 320, height: 480, isMobile: true}); + await page.goto(server.PREFIX + '/empty.html'); + expect(await page.evaluate(() => window.innerWidth)).toBe(980); + }); + it.skip(FFOX)('respect meta viewport tag', async({page, server}) => { + await page.setViewport({width: 320, height: 480, isMobile: true}); + await page.goto(server.PREFIX + '/mobile.html'); + expect(await page.evaluate(() => window.innerWidth)).toBe(320); + }); }); describe('Page.emulate', function() {