1 /* Any copyright is dedicated to the Public Domain.
2 http://creativecommons.org/publicdomain/zero/1.0/ */
7 * Tests that early hint status appears to indicate the presence
8 * of early hint notifications by the request.
11 add_task(async
function testEarlyHintStatusCode() {
12 const { tab
, monitor
} = await
initNetMonitor(STATUS_CODES_URL
, {
16 const { document
, store
, windowRequire
} = monitor
.panelWin
;
17 const Actions
= windowRequire("devtools/client/netmonitor/src/actions/index");
18 store
.dispatch(Actions
.batchEnable(false));
20 await
performEarlyHintRequest(monitor
, tab
);
21 const EARLYHINT_REQUEST_URL
= `sjs_early-hint-test-server.sjs?early-hint-pixel.sjs=5ecccd01-dd3f-4bbd-bd3e-0491d7dd78a1`;
23 const earlyRequestItem
= document
.querySelector(".request-list-item");
25 const statusCodes
= earlyRequestItem
.querySelectorAll(
26 ".requests-list-status .status-code"
31 "There are two status codes displayed in the status column"
34 is(statusCodes
[0].innerText
, "103", "The first status is 103 early hint");
35 is(statusCodes
[1].innerText
, "200", "The second status is the 200 OK");
38 earlyRequestItem
.querySelector(".requests-list-file").innerText
,
39 EARLYHINT_REQUEST_URL
,
40 "The url in the displayed request is correct"
43 EventUtils
.sendMouseEvent({ type
: "mousedown" }, earlyRequestItem
);
45 // Wait till all the summary section is loaded
47 document
.querySelector("#headers-panel .tabpanel-summary-value")
49 const panel
= document
.querySelector("#headers-panel");
50 const earlyHintsStatusCode
= panel
.querySelector(
51 ".headers-earlyhint-status .status-code"
54 EventUtils
.sendMouseEvent({ type
: "mouseover" }, earlyHintsStatusCode
);
57 parseInt(earlyHintsStatusCode
.dataset
.code
, 10),
59 "The status summary code is correct."
62 await
teardown(monitor
);
65 add_task(async
function testEarlyHintFilter() {
66 Services
.prefs
.setBoolPref("devtools.netmonitor.persistlog", true);
67 const { tab
, monitor
} = await
initNetMonitor(STATUS_CODES_URL
, {
71 const { document
, store
, windowRequire
} = monitor
.panelWin
;
72 const Actions
= windowRequire("devtools/client/netmonitor/src/actions/index");
73 store
.dispatch(Actions
.batchEnable(false));
75 const waitForEvents
= waitForNetworkEvents(monitor
, 1);
76 tab
.linkedBrowser
.reload();
79 await
performEarlyHintRequest(monitor
, tab
);
80 document
.querySelector(".devtools-filterinput").focus();
82 EventUtils
.sendString("103");
84 document
.querySelector(".devtools-autocomplete-popup"),
85 "Autocomplete Popup Created"
88 testAutocompleteContents(["status-code:103"], document
);
89 EventUtils
.synthesizeKey("KEY_Enter");
91 document
.querySelector(".devtools-filterinput").value
,
93 "Value correctly set after Enter"
97 () => document
.querySelectorAll(".request-list-item").length
== 1
100 const statusCode
= document
.querySelector(
101 ".request-list-item .requests-list-status .status-code"
103 is(statusCode
.innerText
, "103", "The first status is 103 early hint");
105 await
teardown(monitor
);
106 Services
.prefs
.setBoolPref("devtools.netmonitor.persistlog", false);
109 async
function performEarlyHintRequest(monitor
, tab
) {
110 const wait
= waitForNetworkEvents(monitor
, 1);
111 await SpecialPowers
.spawn(tab
.linkedBrowser
, [], async
function () {
112 content
.wrappedJSObject
.performEarlyHintRequest();