gecko/browser/devtools/netmonitor/test/browser_net_status-codes.js

156 lines
6.5 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
/**
* Tests if requests display the correct status code and text in the UI.
*/
function test() {
initNetMonitor(STATUS_CODES_URL).then(([aTab, aDebuggee, aMonitor]) => {
info("Starting test... ");
let { document, L10N, NetMonitorView } = aMonitor.panelWin;
let { RequestsMenu, NetworkDetails } = NetMonitorView;
RequestsMenu.lazyUpdate = false;
NetworkDetails._params.lazyEmpty = false;
waitForNetworkEvents(aMonitor, 5).then(() => {
let requestItems = [];
verifyRequestItemTarget(requestItems[0] = RequestsMenu.getItemAtIndex(0),
"GET", STATUS_CODES_SJS + "?sts=100", {
status: 101,
statusText: "Switching Protocols",
type: "plain",
fullMimeType: "text/plain; charset=utf-8",
size: L10N.getFormatStrWithNumbers("networkMenu.sizeKB", 0),
time: true
});
verifyRequestItemTarget(requestItems[1] = RequestsMenu.getItemAtIndex(1),
"GET", STATUS_CODES_SJS + "?sts=200", {
status: 202,
statusText: "Created",
type: "plain",
fullMimeType: "text/plain; charset=utf-8",
size: L10N.getFormatStrWithNumbers("networkMenu.sizeKB", 0.02),
time: true
});
verifyRequestItemTarget(requestItems[2] = RequestsMenu.getItemAtIndex(2),
"GET", STATUS_CODES_SJS + "?sts=300", {
status: 303,
statusText: "See Other",
type: "plain",
fullMimeType: "text/plain; charset=utf-8",
size: L10N.getFormatStrWithNumbers("networkMenu.sizeKB", 0),
time: true
});
verifyRequestItemTarget(requestItems[3] = RequestsMenu.getItemAtIndex(3),
"GET", STATUS_CODES_SJS + "?sts=400", {
status: 404,
statusText: "Not Found",
type: "plain",
fullMimeType: "text/plain; charset=utf-8",
size: L10N.getFormatStrWithNumbers("networkMenu.sizeKB", 0.02),
time: true
});
verifyRequestItemTarget(requestItems[4] = RequestsMenu.getItemAtIndex(4),
"GET", STATUS_CODES_SJS + "?sts=500", {
status: 501,
statusText: "Not Implemented",
type: "plain",
fullMimeType: "text/plain; charset=utf-8",
size: L10N.getFormatStrWithNumbers("networkMenu.sizeKB", 0.02),
time: true
});
// Test summaries...
EventUtils.sendMouseEvent({ type: "mousedown" },
document.querySelectorAll("#details-pane tab")[0]);
EventUtils.sendMouseEvent({ type: "mousedown" }, requestItems[0].target);
testSummary("GET", STATUS_CODES_SJS + "?sts=100", "101", "Switching Protocols");
EventUtils.sendMouseEvent({ type: "mousedown" }, requestItems[1].target);
testSummary("GET", STATUS_CODES_SJS + "?sts=200", "202", "Created");
EventUtils.sendMouseEvent({ type: "mousedown" }, requestItems[2].target);
testSummary("GET", STATUS_CODES_SJS + "?sts=300", "303", "See Other");
EventUtils.sendMouseEvent({ type: "mousedown" }, requestItems[3].target);
testSummary("GET", STATUS_CODES_SJS + "?sts=400", "404", "Not Found");
EventUtils.sendMouseEvent({ type: "mousedown" }, requestItems[4].target);
testSummary("GET", STATUS_CODES_SJS + "?sts=500", "501", "Not Implemented");
// Test params...
EventUtils.sendMouseEvent({ type: "mousedown" },
document.querySelectorAll("#details-pane tab")[2]);
EventUtils.sendMouseEvent({ type: "mousedown" }, requestItems[0].target);
testParamsTab("\"100\"");
EventUtils.sendMouseEvent({ type: "mousedown" }, requestItems[1].target);
testParamsTab("\"200\"");
EventUtils.sendMouseEvent({ type: "mousedown" }, requestItems[2].target);
testParamsTab("\"300\"");
EventUtils.sendMouseEvent({ type: "mousedown" }, requestItems[3].target);
testParamsTab("\"400\"");
EventUtils.sendMouseEvent({ type: "mousedown" }, requestItems[4].target);
testParamsTab("\"500\"");
// We're done here.
teardown(aMonitor).then(finish);
function testSummary(aMethod, aUrl, aStatus, aStatusText) {
let tab = document.querySelectorAll("#details-pane tab")[0];
let tabpanel = document.querySelectorAll("#details-pane tabpanel")[0];
is(tabpanel.querySelector("#headers-summary-url-value").getAttribute("value"),
aUrl, "The url summary value is incorrect.");
is(tabpanel.querySelector("#headers-summary-method-value").getAttribute("value"),
aMethod, "The method summary value is incorrect.");
is(tabpanel.querySelector("#headers-summary-status-circle").getAttribute("code"),
aStatus, "The status summary code is incorrect.");
is(tabpanel.querySelector("#headers-summary-status-value").getAttribute("value"),
aStatus + " " + aStatusText, "The status summary value is incorrect.");
}
function testParamsTab(aStatusParamValue) {
let tab = document.querySelectorAll("#details-pane tab")[2];
let tabpanel = document.querySelectorAll("#details-pane tabpanel")[2];
is(tabpanel.querySelectorAll(".variables-view-scope").length, 1,
"There should be 1 param scope displayed in this tabpanel.");
is(tabpanel.querySelectorAll(".variable-or-property").length, 1,
"There should be 1 param value displayed in this tabpanel.");
is(tabpanel.querySelectorAll(".variables-view-empty-notice").length, 0,
"The empty notice should not be displayed in this tabpanel.");
let paramsScope = tabpanel.querySelectorAll(".variables-view-scope")[0];
is(paramsScope.querySelector(".name").getAttribute("value"),
L10N.getStr("paramsQueryString"),
"The params scope doesn't have the correct title.");
is(paramsScope.querySelectorAll(".variables-view-variable .name")[0].getAttribute("value"),
"sts", "The param name was incorrect.");
is(paramsScope.querySelectorAll(".variables-view-variable .value")[0].getAttribute("value"),
aStatusParamValue, "The param value was incorrect.");
is(tabpanel.querySelector("#request-params-box")
.hasAttribute("hidden"), false,
"The request params box should not be hidden.");
is(tabpanel.querySelector("#request-post-data-textarea-box")
.hasAttribute("hidden"), true,
"The request post data textarea box should be hidden.");
}
});
aDebuggee.performRequests();
});
}