| (async function(testRunner) { |
| var {page, session, dp} = await testRunner.startHTML(` |
| <head> |
| <style> |
| body { |
| margin: 0; |
| min-height: 1000px; |
| } |
| </style> |
| </head> |
| `, 'Tests that overriding only a single parameter does not affect others.'); |
| |
| function dumpMetrics() { |
| return JSON.stringify({ |
| width: window.innerWidth, |
| height: window.innerHeight, |
| screenWidth: window.screen.width, |
| screenHeight: window.screen.height, |
| screenX: window.screenX, |
| screenY: window.screenY, |
| deviceScaleFactor: window.devicePixelRatio |
| }); |
| } |
| |
| var initialMetrics; |
| |
| async function testPartialOverride(name, value) { |
| var params = {width: 0, height: 0, deviceScaleFactor: 0, mobile: false, fitWindow: false}; |
| if (name === null) { |
| await dp.Emulation.clearDeviceMetricsOverride(); |
| } else { |
| if (name) |
| params[name] = value; |
| await dp.Emulation.setDeviceMetricsOverride(params); |
| } |
| |
| var metrics = JSON.parse(await session.evaluate(dumpMetrics)); |
| var fail = false; |
| for (var key in initialMetrics) { |
| var expected = key === name ? value : initialMetrics[key]; |
| if (metrics[key] !== expected) { |
| testRunner.log('[FAIL]: ' + metrics[key] + ' instead of ' + expected + ' for ' + key); |
| fail = true; |
| } |
| } |
| if (!fail) |
| testRunner.log(name ? ('[PASS]: ' + name + '=' + value) : '[PASS]'); |
| } |
| |
| await testRunner.runTestSuite([ |
| async function collectMetrics() { |
| initialMetrics = JSON.parse(await session.evaluate(dumpMetrics)); |
| }, |
| |
| async function noOverrides() { |
| await testPartialOverride('', 0); |
| }, |
| |
| async function width() { |
| await testPartialOverride('width', 300); |
| }, |
| |
| async function height() { |
| await testPartialOverride('height', 400); |
| }, |
| |
| async function deviceScaleFactor1() { |
| await testPartialOverride('deviceScaleFactor', 1); |
| }, |
| |
| async function deviceScaleFactor2() { |
| await testPartialOverride('deviceScaleFactor', 2); |
| }, |
| |
| async function clear() { |
| await testPartialOverride(null, null); |
| }, |
| |
| async function anotherWidth() { |
| await testPartialOverride('width', 400); |
| }, |
| |
| async function anotherHeight() { |
| await testPartialOverride('height', 300); |
| }, |
| |
| async function deviceScaleFactor3() { |
| await testPartialOverride('deviceScaleFactor', 3); |
| }, |
| |
| async function clear() { |
| await testPartialOverride(null, null); |
| } |
| ]); |
| }) |