| // Copyright 2021 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| (async function(testRunner) { |
| const {page, session, dp} = await testRunner.startWithFrameControl( |
| 'Tests screenshot with overridden device scale factor'); |
| |
| await dp.Runtime.enable(); |
| await dp.HeadlessExperimental.enable(); |
| |
| dp.Emulation.enable(); |
| await dp.Emulation.setDeviceMetricsOverride({ |
| deviceScaleFactor: 2, |
| width: 100, |
| height: 100, |
| screenHeight: 100, |
| screenWidth: 100, |
| mobile: true, |
| viewport: {x: 0, y: 0, width: 100, height: 100, scale: 1} |
| }); |
| |
| const RendererTestHelper = |
| await testRunner.loadScript('../helpers/renderer-test-helper.js'); |
| const {httpInterceptor, frameNavigationHelper, virtualTimeController} = |
| await (new RendererTestHelper(testRunner, dp, page)).init(); |
| |
| httpInterceptor.addResponse(`http://example.com/`, `<!doctype html> |
| <html> |
| <meta name=viewport content="width=device-width"> |
| <style> |
| html, body { width: 100%; height: 100%; margin:0; padding:0; } |
| div { |
| width: 100%; height: 100%; margin:0; padding:0; |
| background-size: 100% 100%; |
| background-color: blue; |
| } |
| </style> |
| <body> |
| <div></div> |
| </body> |
| </html> |
| `); |
| |
| await virtualTimeController.initialize(100); |
| await frameNavigationHelper.navigate('http://example.com/'); |
| await virtualTimeController.grantTime(500); |
| const ctx = await virtualTimeController.captureScreenshot(); |
| // We use a screen and viewport of 100x100 DIP, which is 200 physical pixels |
| // due to deviceScaleFactor of 2. Make sure the screenshot is not clipped. |
| let rgba = ctx.getImageData(175, 175, 1, 1).data; |
| testRunner.log(`rgba @(175,175) ${rgba}`); |
| testRunner.completeTest(); |
| }) |