blob: 60605c33b6d68c0e3acc501e74d94420ad6dd7ea (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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);
});
|