Files
UXP/devtools/client/responsive.html/test/browser/browser_screenshot_button.js
T

60 lines
1.6 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
// Test global exit button
const TEST_URL = "data:text/html;charset=utf-8,";
const { OS } = require("resource://gre/modules/osfile.jsm");
function* waitUntilScreenshot() {
return new Promise(Task.async(function* (resolve) {
let { Downloads } = require("resource://gre/modules/Downloads.jsm");
let list = yield Downloads.getList(Downloads.ALL);
let view = {
onDownloadAdded: download => {
download.whenSucceeded().then(() => {
resolve(download.target.path);
list.removeView(view);
});
}
};
yield list.addView(view);
}));
}
addRDMTask(TEST_URL, function* ({ ui: {toolWindow} }) {
let { store, document } = toolWindow;
// Wait until the viewport has been added
yield waitUntilState(store, state => state.viewports.length == 1);
info("Click the screenshot button");
let screenshotButton = document.getElementById("global-screenshot-button");
screenshotButton.click();
let whenScreenshotSucceeded = waitUntilScreenshot();
let filePath = yield whenScreenshotSucceeded;
let image = new Image();
image.src = OS.Path.toFileURI(filePath);
yield once(image, "load");
// We have only one viewport at the moment
let viewport = store.getState().viewports[0];
let ratio = window.devicePixelRatio;
is(image.width, viewport.width * ratio,
"screenshot width has the expected width");
is(image.height, viewport.height * ratio,
"screenshot width has the expected height");
yield OS.File.remove(filePath);
});