/* Any copyright is dedicated to the Public Domain. * http://creativecommons.org/publicdomain/zero/1.0/ */ // Test that screenshot command works properly const TEST_URI = "http://example.com/browser/devtools/client/commandline/" + "test/browser_cmd_screenshot.html"; var FileUtils = (Cu.import("resource://gre/modules/FileUtils.jsm", {})).FileUtils; function test() { return Task.spawn(spawnTest).then(finish, helpers.handleError); } function* spawnTest() { waitForExplicitFinish(); info("RUN TEST: non-private window"); let normWin = yield addWindow({ private: false }); yield addTabWithToolbarRunTests(normWin); normWin.close(); info("RUN TEST: private window"); let pbWin = yield addWindow({ private: true }); yield addTabWithToolbarRunTests(pbWin); pbWin.close(); } function* addTabWithToolbarRunTests(win) { let options = yield helpers.openTab(TEST_URI, { chromeWindow: win }); yield helpers.openToolbar(options); // Test input status yield helpers.audit(options, [ { setup: 'screenshot', check: { input: 'screenshot', markup: 'VVVVVVVVVV', status: 'VALID', args: { } }, }, { setup: 'screenshot abc.png', check: { input: 'screenshot abc.png', markup: 'VVVVVVVVVVVVVVVVVV', status: 'VALID', args: { filename: { value: "abc.png"}, } }, }, { setup: 'screenshot --fullpage', check: { input: 'screenshot --fullpage', markup: 'VVVVVVVVVVVVVVVVVVVVV', status: 'VALID', args: { fullpage: { value: true}, } }, }, { setup: 'screenshot abc --delay 5', check: { input: 'screenshot abc --delay 5', markup: 'VVVVVVVVVVVVVVVVVVVVVVVV', status: 'VALID', args: { filename: { value: "abc"}, delay: { value: 5 }, } }, }, { setup: 'screenshot --selector img#testImage', check: { input: 'screenshot --selector img#testImage', markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV', status: 'VALID', }, }, ]); // Test capture to file let file = FileUtils.getFile("TmpD", [ "TestScreenshotFile.png" ]); yield helpers.audit(options, [ { setup: 'screenshot ' + file.path, check: { args: { filename: { value: "" + file.path }, fullpage: { value: false }, clipboard: { value: false }, chrome: { value: false }, }, }, exec: { output: new RegExp("^Saved to "), }, post: function() { // Bug 849168: screenshot command tests fail in try but not locally // ok(file.exists(), "Screenshot file exists"); if (file.exists()) { file.remove(false); } } }, ]); // Test capture to clipboard let clipid = Ci.nsIClipboard; let clip = Cc["@mozilla.org/widget/clipboard;1"].getService(clipid); let trans = Cc["@mozilla.org/widget/transferable;1"] .createInstance(Ci.nsITransferable); trans.init(null); trans.addDataFlavor("image/png"); yield helpers.audit(options, [ { setup: 'screenshot --fullpage --clipboard', check: { args: { fullpage: { value: true }, clipboard: { value: true }, chrome: { value: false }, }, }, exec: { output: new RegExp("^Copied to clipboard.$"), }, post: function() { clip.getData(trans, clipid.kGlobalClipboard); let str = new Object(); let strLength = new Object(); trans.getTransferData("image/png", str, strLength); ok(str.value, "screenshot exists"); ok(strLength.value > 0, "screenshot has length"); } }, ]); yield helpers.closeToolbar(options); yield helpers.closeTab(options); } function addWindow(windowOptions) { return new Promise(resolve => { let win = OpenBrowserWindow(windowOptions); // This feels hacky, we should refactor it whenDelayedStartupFinished(win, () => { // Would like to get rid of this executeSoon, but without it the url // (TEST_URI) provided in addTabWithToolbarRunTests hasn't loaded executeSoon(() => { resolve(win); }); }); }); }