Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
/* Any copyright is dedicated to the Public Domain.
"use strict";
add_setup(async function () {
await SpecialPowers.pushPrefEnv({
set: [["test.wait300msAfterTabSwitch", true]],
});
});
function startDropServer() {
const server = Cc["@mozilla.org/network/server-socket;1"].createInstance(
Ci.nsIServerSocket
);
info("Using a random port.");
server.init(-1, true, -1);
server.asyncListen({
onSocketAccepted(socket, transport) {
// Close immediately, no response sent.
transport.close(Cr.NS_OK);
},
onStopListening() {},
});
registerCleanupFunction(() => server.close());
return server.port;
}
add_task(async function test_net_empty_response_copy() {
await setSecurityCertErrorsFeltPrivacyToTrue();
const port = startDropServer();
let browser, tab;
let pageLoaded;
await BrowserTestUtils.openNewForegroundTab(
gBrowser,
() => {
gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser, url);
browser = gBrowser.selectedBrowser;
tab = gBrowser.selectedTab;
pageLoaded = BrowserTestUtils.waitForErrorPage(browser);
},
false
);
info("Loading and waiting for the net error.");
await pageLoaded;
Assert.ok("Loaded empty server response.");
await ContentTask.spawn(browser, null, async () => {
await ContentTaskUtils.waitForCondition(
() => content?.document?.querySelector("net-error-card"),
"Wait for empty-response copy to render"
);
const doc = content.document;
const netErrorCard = doc.querySelector("net-error-card").wrappedJSObject;
Assert.ok(netErrorCard, "NetErrorCard supports empty server responses.");
Assert.ok(
netErrorCard.netErrorTitleText,
"NetErrorCard has netErrorTitleText."
);
Assert.ok(netErrorCard.netErrorIntro, "NetErrorCard has netErrorIntro.");
Assert.ok(
netErrorCard.whatCanYouDo,
"NetErrorCard has whatCanYouDo section."
);
Assert.ok(netErrorCard.tryAgainButton, "NetErrorCard has tryAgainButton.");
Assert.equal(
netErrorCard.netErrorTitleText.dataset.l10nId,
"problem-with-this-site-title",
"Using the 'problem with this site' title"
);
Assert.equal(
netErrorCard.netErrorIntro.dataset.l10nId,
"neterror-http-empty-response-description",
"Using the 'empty response' intro."
);
Assert.equal(
netErrorCard.whatCanYouDo.dataset.l10nId,
"neterror-http-empty-response",
"Using the 'empty response' variant of the 'What can you do' copy."
);
Assert.ok(
ContentTaskUtils.isVisible(netErrorCard.tryAgainButton),
"The 'Try Again' button is shown."
);
});
BrowserTestUtils.removeTab(tab);
});