Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
/* Any copyright is dedicated to the Public Domain.
"use strict";
/* import-globals-from helper-addons.js */
Services.scriptloader.loadSubScript(CHROME_URL_ROOT + "helper-addons.js", this);
const EXTENSION_NAME = "Temporary web extension";
const EXTENSION_ID = "test-devtools@mozilla.org";
// Test that Message component can be closed with the X button
add_task(async function () {
const { document, tab, window } = await openAboutDebugging();
await selectThisFirefoxPage(document, window.AboutDebugging.store);
info("Check that the message can be closed with icon");
let warningMessage = await installExtensionWithWarning(document);
await testCloseMessageWithIcon(warningMessage, document);
await removeTemporaryExtension(EXTENSION_NAME, document);
info("Check that the message can be closed with the button around the icon");
warningMessage = await installExtensionWithWarning(document);
await testCloseMessageWithButton(warningMessage, document);
await removeTemporaryExtension(EXTENSION_NAME, document);
await removeTab(tab);
});
async function testCloseMessageWithIcon(warningMessage, doc) {
const closeIcon = warningMessage.querySelector(
".qa-message-button-close-icon"
);
ok(!!closeIcon, "The warning message has a close icon");
info("Closing the message and waiting for it to disappear");
closeIcon.click();
const target = findDebugTargetByText(EXTENSION_NAME, doc);
await waitUntil(() => target.querySelector(".qa-message") === null);
}
async function testCloseMessageWithButton(warningMessage, doc) {
const closeButton = warningMessage.querySelector(
".qa-message-button-close-button"
);
ok(!!closeButton, "The warning message has a close button");
info("Click on the button and wait for the message to disappear");
EventUtils.synthesizeMouse(closeButton, 1, 1, {}, doc.defaultView);
const target = findDebugTargetByText(EXTENSION_NAME, doc);
await waitUntil(() => target.querySelector(".qa-message") === null);
}
async function installExtensionWithWarning(doc) {
await pushPref("extensions.webextensions.warnings-as-errors", false);
await installTemporaryExtensionFromXPI(
{
id: EXTENSION_ID,
name: EXTENSION_NAME,
extraProperties: {
// This property is not expected in the manifest and should trigger a warning!
wrongProperty: {},
},
},
doc
);
await SpecialPowers.popPrefEnv();
info("Wait until a debug target item appears");
await waitUntil(() => findDebugTargetByText(EXTENSION_NAME, doc));
const target = findDebugTargetByText(EXTENSION_NAME, doc);
const warningMessage = target.querySelector(".qa-message");
ok(
!!warningMessage,
"A warning message is displayed for the installed addon"
);
return warningMessage;
}