Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

"use strict";
async function sendMessage(options) {
function background(options) {
browser.runtime.sendMessage(result => {
browser.test.assertEq(undefined, result, "Argument value");
if (options.checkLastError) {
browser.test.assertEq(
"runtime.sendMessage's message argument is missing",
browser.runtime.lastError?.message,
"lastError value"
);
}
browser.test.sendMessage("done");
});
}
let extension = ExtensionTestUtils.loadExtension({
background: `(${background})(${JSON.stringify(options)})`,
});
await extension.startup();
await extension.awaitMessage("done");
await extension.unload();
}
add_task(async function testLastError() {
// Not necessary in browser-chrome tests, but monitorConsole gripes
// if we don't call it.
SimpleTest.waitForExplicitFinish();
// Check that we have no unexpected console messages when lastError is
// checked.
let waitForConsole = new Promise(resolve => {
SimpleTest.monitorConsole(resolve, [
{ message: /message argument is missing/, forbid: true },
]);
});
await sendMessage({ checkLastError: true });
SimpleTest.endMonitorConsole();
await waitForConsole;
// Check that we do have a console message when lastError is not checked.
waitForConsole = new Promise(resolve => {
SimpleTest.monitorConsole(resolve, [
{
message:
/Unchecked lastError value: Error: runtime.sendMessage's message argument is missing/,
},
]);
});
await sendMessage({});
SimpleTest.endMonitorConsole();
await waitForConsole;
});