/* Any copyright is dedicated to the Public Domain. * http://creativecommons.org/publicdomain/zero/1.0/ */ // Test that screenshot command leads to the proper warning and error messages in the // console when necessary. "use strict"; // The test times out on slow platforms (e.g. linux ccov) requestLongerTimeout(2); // We create a very big page here in order to make the :screenshot command fail on // purpose. const TEST_URI = `data:text/html;charset=utf8,
`; add_task(async function () { await addTab(TEST_URI); const hud = await openConsole(); ok(hud, "web console opened"); await testTruncationWarning(hud); await testDPRWarning(hud); }); async function testTruncationWarning(hud) { info("Check that large screenshots get cut off if necessary"); let onMessages = waitForMessagesByType({ hud, messages: [ { text: "Screenshot copied to clipboard.", typeSelector: ".console-api", }, { text: "The image was cut off to 10000×10000 as the resulting image was too large", typeSelector: ".console-api", }, ], }); // Note, we put the screenshot in the clipboard so we can easily measure the resulting // image. We also pass --dpr 1 so we don't need to worry about different machines having // different screen resolutions. execute(hud, ":screenshot --clipboard --selector .big --dpr 1"); await onMessages; let { width, height } = await getImageSizeFromClipboard(); is(width, 10000, "The resulting image is 10000px wide"); is(height, 10000, "The resulting image is 10000px high"); onMessages = waitForMessageByType( hud, "Screenshot copied to clipboard.", ".console-api" ); execute(hud, ":screenshot --clipboard --selector .small --dpr 1"); await onMessages; ({ width, height } = await getImageSizeFromClipboard()); is(width, 5, "The resulting image is 5px wide"); is(height, 5, "The resulting image is 5px high"); } async function testDPRWarning(hud) { info("Check that DPR is reduced to 1 after failure"); const onMessages = waitForMessagesByType({ hud, messages: [ { text: "Screenshot copied to clipboard.", typeSelector: ".console-api", }, { text: "The image was cut off to 10000×10000 as the resulting image was too large", typeSelector: ".console-api", }, { text: "The device pixel ratio was reduced to 1 as the resulting image was too large", typeSelector: ".console-api", }, ], }); execute(hud, ":screenshot --clipboard --fullpage --dpr 1000"); await onMessages; const { width, height } = await getImageSizeFromClipboard(); is(width, 10000, "The resulting image is 10000px wide"); is(height, 10000, "The resulting image is 10000px high"); }