summaryrefslogtreecommitdiffstats
path: root/devtools/client/responsive.html/test/browser/browser_screenshot_button.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/responsive.html/test/browser/browser_screenshot_button.js')
-rw-r--r--devtools/client/responsive.html/test/browser/browser_screenshot_button.js59
1 files changed, 59 insertions, 0 deletions
diff --git a/devtools/client/responsive.html/test/browser/browser_screenshot_button.js b/devtools/client/responsive.html/test/browser/browser_screenshot_button.js
new file mode 100644
index 000000000..60605c33b
--- /dev/null
+++ b/devtools/client/responsive.html/test/browser/browser_screenshot_button.js
@@ -0,0 +1,59 @@
+/* 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);
+});