summaryrefslogtreecommitdiffstats
path: root/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_addons_debug_reload.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_addons_debug_reload.js')
-rw-r--r--devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_addons_debug_reload.js135
1 files changed, 135 insertions, 0 deletions
diff --git a/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_addons_debug_reload.js b/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_addons_debug_reload.js
new file mode 100644
index 0000000000..d6caca64d6
--- /dev/null
+++ b/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_addons_debug_reload.js
@@ -0,0 +1,135 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+"use strict";
+
+/* import-globals-from helper-addons.js */
+Services.scriptloader.loadSubScript(CHROME_URL_ROOT + "helper-addons.js", this);
+
+// There are shutdown issues for which multiple rejections are left uncaught.
+// See bug 1018184 for resolving these issues.
+const { PromiseTestUtils } = ChromeUtils.importESModule(
+ "resource://testing-common/PromiseTestUtils.sys.mjs"
+);
+PromiseTestUtils.allowMatchingRejectionsGlobally(/File closed/);
+
+// Avoid test timeouts that can occur while waiting for the "addon-console-works" message.
+requestLongerTimeout(2);
+
+const ADDON_ID = "test-devtools-webextension@mozilla.org";
+const ADDON_NAME = "test-devtools-webextension";
+
+const L10N = new LocalizationHelper(
+ "devtools/client/locales/toolbox.properties"
+);
+
+// Check that addon browsers can be reloaded via the toolbox reload shortcuts
+add_task(async function testWebExtensionToolboxReload() {
+ await enableExtensionDebugging();
+ const { document, tab, window } = await openAboutDebugging();
+ await selectThisFirefoxPage(document, window.AboutDebugging.store);
+
+ await installTemporaryExtensionFromXPI(
+ {
+ background() {
+ console.log("background script executed " + Math.random());
+ },
+ id: ADDON_ID,
+ name: ADDON_NAME,
+ },
+ document
+ );
+
+ // Select the debugger right away to avoid any noise coming from the inspector.
+ await pushPref("devtools.toolbox.selectedTool", "webconsole");
+ const { devtoolsDocument, devtoolsWindow } = await openAboutDevtoolsToolbox(
+ document,
+ tab,
+ window,
+ ADDON_NAME
+ );
+ const toolbox = getToolbox(devtoolsWindow);
+
+ ok(
+ devtoolsDocument.querySelector(".qa-reload-button"),
+ "Reload button is visible"
+ );
+ ok(
+ !devtoolsDocument.querySelector(".qa-back-button"),
+ "Back button is hidden"
+ );
+ ok(
+ !devtoolsDocument.querySelector(".qa-forward-button"),
+ "Forward button is hidden"
+ );
+ ok(
+ !devtoolsDocument.querySelector(".debug-target-url-form"),
+ "URL form is hidden"
+ );
+ ok(
+ devtoolsDocument.getElementById("toolbox-meatball-menu-noautohide"),
+ "Disable popup autohide button is displayed"
+ );
+ ok(
+ !devtoolsDocument.getElementById(
+ "toolbox-meatball-menu-pseudo-locale-accented"
+ ),
+ "Accented locale is not displayed (only on browser toolbox)"
+ );
+
+ const webconsole = await toolbox.selectTool("webconsole");
+ const { hud } = webconsole;
+
+ info("Wait for the initial background message to appear in the console");
+ const initialMessage = await waitFor(() =>
+ findMessagesByType(hud, "background script executed", ".console-api")
+ );
+ ok(initialMessage, "Found the expected message from the background script");
+
+ const waitForLoadedPanelsReload = await watchForLoadedPanelsReload(toolbox);
+
+ info("Reload the addon using a toolbox reload shortcut");
+ toolbox.win.focus();
+ synthesizeKeyShortcut(L10N.getStr("toolbox.reload.key"), toolbox.win);
+
+ info("Wait until a new background log message is logged");
+ const secondMessage = await waitFor(() => {
+ const newMessage = findMessagesByType(
+ hud,
+ "background script executed",
+ ".console-api"
+ );
+ if (newMessage && newMessage !== initialMessage) {
+ return newMessage;
+ }
+ return false;
+ });
+
+ await waitForLoadedPanelsReload();
+
+ info("Reload via the debug target info bar button");
+ clickReload(devtoolsDocument);
+
+ info("Wait until yet another background log message is logged");
+ await waitFor(() => {
+ const newMessage = findMessagesByType(
+ hud,
+ "background script executed",
+ ".console-api"
+ );
+ return (
+ newMessage &&
+ newMessage !== initialMessage &&
+ newMessage !== secondMessage
+ );
+ });
+
+ await waitForLoadedPanelsReload();
+
+ await closeWebExtAboutDevtoolsToolbox(devtoolsWindow, window);
+ await removeTemporaryExtension(ADDON_NAME, document);
+ await removeTab(tab);
+});
+
+function clickReload(devtoolsDocument) {
+ devtoolsDocument.querySelector(".qa-reload-button").click();
+}