summaryrefslogtreecommitdiffstats
path: root/devtools/client/aboutdebugging/test/browser_addons_install.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/aboutdebugging/test/browser_addons_install.js')
-rw-r--r--devtools/client/aboutdebugging/test/browser_addons_install.js51
1 files changed, 51 insertions, 0 deletions
diff --git a/devtools/client/aboutdebugging/test/browser_addons_install.js b/devtools/client/aboutdebugging/test/browser_addons_install.js
new file mode 100644
index 000000000..4c3a97c9f
--- /dev/null
+++ b/devtools/client/aboutdebugging/test/browser_addons_install.js
@@ -0,0 +1,51 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+"use strict";
+
+const ADDON_ID = "test-devtools@mozilla.org";
+const ADDON_NAME = "test-devtools";
+
+add_task(function* () {
+ let { tab, document } = yield openAboutDebugging("addons");
+ yield waitForInitialAddonList(document);
+
+ // Install this add-on, and verify that it appears in the about:debugging UI
+ yield installAddon({
+ document,
+ path: "addons/unpacked/install.rdf",
+ name: ADDON_NAME,
+ });
+
+ // Install the add-on, and verify that it disappears in the about:debugging UI
+ yield uninstallAddon({document, id: ADDON_ID, name: ADDON_NAME});
+
+ yield closeAboutDebugging(tab);
+});
+
+add_task(function* () {
+ let { tab, document } = yield openAboutDebugging("addons");
+ yield waitForInitialAddonList(document);
+
+ // Start an observer that looks for the install error before
+ // actually doing the install
+ let top = document.querySelector(".addons-top");
+ let promise = waitForMutation(top, { childList: true });
+
+ // Mock the file picker to select a test addon
+ let MockFilePicker = SpecialPowers.MockFilePicker;
+ MockFilePicker.init(null);
+ let file = getSupportsFile("addons/bad/manifest.json");
+ MockFilePicker.returnFiles = [file.file];
+
+ // Trigger the file picker by clicking on the button
+ document.getElementById("load-addon-from-file").click();
+
+ // Now wait for the install error to appear.
+ yield promise;
+
+ // And check that it really is there.
+ let err = document.querySelector(".addons-install-error");
+ isnot(err, null, "Addon install error message appeared");
+
+ yield closeAboutDebugging(tab);
+});