1 /* Any copyright is dedicated to the Public Domain.
2 http://creativecommons.org/publicdomain/zero/1.0/ */
7 * Tests if showing raw headers works.
10 add_task(async
function () {
11 const { tab
, monitor
} = await
initNetMonitor(POST_DATA_URL
, {
14 info("Starting test... ");
16 const { document
, store
, windowRequire
} = monitor
.panelWin
;
17 const Actions
= windowRequire("devtools/client/netmonitor/src/actions/index");
18 const { getSortedRequests
} = windowRequire(
19 "devtools/client/netmonitor/src/selectors/index"
22 store
.dispatch(Actions
.batchEnable(false));
25 await
performRequests(monitor
, tab
, 2);
27 let wait
= waitForDOM(document
, "#headers-panel .accordion-item", 2);
28 EventUtils
.sendMouseEvent(
29 { type
: "mousedown" },
30 document
.querySelectorAll(".request-list-item")[0]
34 wait
= waitForDOM(document
, "#responseHeaders textarea.raw-headers", 1);
35 EventUtils
.sendMouseEvent({ type
: "click" }, getRawHeadersToggle("RESPONSE"));
38 wait
= waitForDOM(document
, "#requestHeaders textarea.raw-headers", 1);
39 EventUtils
.sendMouseEvent({ type
: "click" }, getRawHeadersToggle("REQUEST"));
42 testRawHeaderToggleStyle(true);
43 testShowRawHeaders(getSortedRequests(store
.getState())[0]);
45 EventUtils
.sendMouseEvent({ type
: "click" }, getRawHeadersToggle("RESPONSE"));
46 EventUtils
.sendMouseEvent({ type
: "click" }, getRawHeadersToggle("REQUEST"));
48 testRawHeaderToggleStyle(false);
49 testHideRawHeaders(document
);
51 return teardown(monitor
);
54 * Tests that checked is applied correctly
57 * flag indicating whether toggle is checked or not
59 function testRawHeaderToggleStyle(checked
) {
60 const rawHeadersRequestToggle
= getRawHeadersToggle("REQUEST");
61 const rawHeadersResponseToggle
= getRawHeadersToggle("RESPONSE");
65 rawHeadersRequestToggle
.checked
,
67 "The 'Raw Request Headers' toggle should be 'checked'"
70 rawHeadersResponseToggle
.checked
,
72 "The 'Raw Response Headers' toggle should be 'checked'"
76 rawHeadersRequestToggle
.checked
,
78 "The 'Raw Request Headers' toggle should NOT be 'checked'"
81 rawHeadersResponseToggle
.checked
,
83 "The 'Raw Response Headers' toggle should NOT be 'checked'"
89 * Tests that raw headers were displayed correctly
91 function testShowRawHeaders(data
) {
92 // Request headers are rendered first, so it is element with index 1
93 const requestHeaders
= document
.querySelectorAll("textarea.raw-headers")[1]
95 for (const header
of data
.requestHeaders
.headers
) {
97 requestHeaders
.includes(header
.name
+ ": " + header
.value
),
98 "textarea contains request headers"
101 // Response headers are rendered first, so it is element with index 0
102 const responseHeaders
= document
.querySelectorAll("textarea.raw-headers")[0]
104 for (const header
of data
.responseHeaders
.headers
) {
106 responseHeaders
.includes(header
.name
+ ": " + header
.value
),
107 "textarea contains response headers"
113 * Tests that raw headers textareas are hidden
115 function testHideRawHeaders() {
117 !document
.querySelector(".raw-headers-container"),
118 "raw request headers textarea is empty"
123 * Returns the 'Raw Headers' button
125 function getRawHeadersToggle(rawHeaderType
) {
126 if (rawHeaderType
=== "RESPONSE") {
127 // Response header is first displayed
128 return document
.querySelectorAll(".devtools-checkbox-toggle")[0];
130 return document
.querySelectorAll(".devtools-checkbox-toggle")[1];