diff --git a/test/golden-chromium/screenshot-device-scale-factor.png b/test/golden-chromium/screenshot-device-scale-factor.png new file mode 100644 index 0000000000..1522c3cdd2 Binary files /dev/null and b/test/golden-chromium/screenshot-device-scale-factor.png differ diff --git a/test/golden-chromium/screenshot-element-mobile-dsf.png b/test/golden-chromium/screenshot-element-mobile-dsf.png new file mode 100644 index 0000000000..55a614d1fb Binary files /dev/null and b/test/golden-chromium/screenshot-element-mobile-dsf.png differ diff --git a/test/golden-firefox/screenshot-device-scale-factor.png b/test/golden-firefox/screenshot-device-scale-factor.png new file mode 100644 index 0000000000..7b9d34c66b Binary files /dev/null and b/test/golden-firefox/screenshot-device-scale-factor.png differ diff --git a/test/golden-utils.js b/test/golden-utils.js index 7ae32399d8..71211dbe02 100644 --- a/test/golden-utils.js +++ b/test/golden-utils.js @@ -56,7 +56,7 @@ function compareImages(actualBuffer, expectedBuffer, mimeType) { }; } const diff = new PNG({width: expected.width, height: expected.height}); - const count = pixelmatch(expected.data, actual.data, diff.data, expected.width, expected.height, {threshold: 0.1}); + const count = pixelmatch(expected.data, actual.data, diff.data, expected.width, expected.height, {threshold: 0.15}); return count > 0 ? { diff: PNG.sync.write(diff) } : null; } diff --git a/test/golden-webkit/screenshot-device-scale-factor.png b/test/golden-webkit/screenshot-device-scale-factor.png new file mode 100644 index 0000000000..e02fdc8946 Binary files /dev/null and b/test/golden-webkit/screenshot-device-scale-factor.png differ diff --git a/test/golden-webkit/screenshot-element-mobile-dsf.png b/test/golden-webkit/screenshot-element-mobile-dsf.png new file mode 100644 index 0000000000..8a965e7e64 Binary files /dev/null and b/test/golden-webkit/screenshot-element-mobile-dsf.png differ diff --git a/test/screenshot.spec.js b/test/screenshot.spec.js index 3ce4b5502c..fba63f0236 100644 --- a/test/screenshot.spec.js +++ b/test/screenshot.spec.js @@ -18,7 +18,7 @@ /** * @type {PageTestSuite} */ -module.exports.describe = function({testRunner, expect, product, FFOX, CHROMIUM, WEBKIT}) { +module.exports.describe = function({testRunner, expect, product, playwright, FFOX, CHROMIUM, WEBKIT, LINUX }) { const {describe, xdescribe, fdescribe} = testRunner; const {it, fit, xit, dit} = testRunner; const {beforeAll, beforeEach, afterAll, afterEach} = testRunner; @@ -217,6 +217,14 @@ module.exports.describe = function({testRunner, expect, product, FFOX, CHROMIUM, expect(screenshot).toBeInstanceOf(Buffer); } }); + it.fail(WEBKIT)('should work with device scale factor', async({browser, server}) => { + const context = await browser.newContext({ viewport: { width: 320, height: 480 }, deviceScaleFactor: 2 }); + const page = await context.newPage(); + await page.goto(server.PREFIX + '/grid.html'); + const screenshot = await page.screenshot(); + expect(screenshot).toBeGolden('screenshot-device-scale-factor.png'); + await context.close(); + }); }); describe('ElementHandle.screenshot', function() { @@ -386,6 +394,16 @@ module.exports.describe = function({testRunner, expect, product, FFOX, CHROMIUM, expect(screenshot).toBeGolden('screenshot-element-mobile.png'); await context.close(); }); + it.fail(WEBKIT && LINUX).skip(FFOX)('should work with device scale factor', async({browser, server}) => { + const context = await browser.newContext({ viewport: { width: 320, height: 480 }, deviceScaleFactor: 2 }); + const page = await context.newPage(); + await page.goto(server.PREFIX + '/grid.html'); + await page.evaluate(() => window.scrollBy(50, 100)); + const elementHandle = await page.$('.box:nth-of-type(3)'); + const screenshot = await elementHandle.screenshot(); + expect(screenshot).toBeGolden('screenshot-element-mobile-dsf.png'); + await context.close(); + }); it('should work for an element with an offset', async({page}) => { await page.setContent('
'); const elementHandle = await page.$('div');