Backed out 2 changesets (bug 1943998) for causing wd failures @ phases.py CLOSED...
[gecko.git] / devtools / client / netmonitor / test / browser_net_jsonp.js
blob887e7c5bf3de9efef8603d2aa9841a2839942299
1 /* Any copyright is dedicated to the Public Domain.
2 http://creativecommons.org/publicdomain/zero/1.0/ */
4 "use strict";
6 /**
7 * Tests if JSONP responses are handled correctly.
8 */
10 add_task(async function () {
11 const {
12 L10N,
13 } = require("resource://devtools/client/netmonitor/src/utils/l10n.js");
15 const { tab, monitor } = await initNetMonitor(JSONP_URL, { requestCount: 1 });
16 info("Starting test... ");
18 const { document, store, windowRequire } = monitor.panelWin;
19 const Actions = windowRequire("devtools/client/netmonitor/src/actions/index");
20 const { getDisplayedRequests, getSortedRequests } = windowRequire(
21 "devtools/client/netmonitor/src/selectors/index"
24 store.dispatch(Actions.batchEnable(false));
26 // Execute requests.
27 await performRequests(monitor, tab, 2);
29 const requestItems = document.querySelectorAll(".request-list-item");
30 for (const requestItem of requestItems) {
31 requestItem.scrollIntoView();
32 const requestsListStatus = requestItem.querySelector(".status-code");
33 EventUtils.sendMouseEvent({ type: "mouseover" }, requestsListStatus);
34 await waitUntil(() => requestsListStatus.title);
35 await waitForDOMIfNeeded(requestItem, ".requests-list-timings-total");
38 verifyRequestItemTarget(
39 document,
40 getDisplayedRequests(store.getState()),
41 getSortedRequests(store.getState())[0],
42 "GET",
43 CONTENT_TYPE_SJS + "?fmt=jsonp&jsonp=$_0123Fun",
45 status: 200,
46 statusText: "OK",
47 type: "json",
48 fullMimeType: "text/json; charset=utf-8",
49 size: L10N.getFormatStrWithNumbers("networkMenu.sizeB", 41),
50 time: true,
53 verifyRequestItemTarget(
54 document,
55 getDisplayedRequests(store.getState()),
56 getSortedRequests(store.getState())[1],
57 "GET",
58 CONTENT_TYPE_SJS + "?fmt=jsonp2&jsonp=$_4567Sad",
60 status: 200,
61 statusText: "OK",
62 type: "json",
63 fullMimeType: "text/json; charset=utf-8",
64 size: L10N.getFormatStrWithNumbers("networkMenu.sizeB", 54),
65 time: true,
69 info("Testing first request");
70 let wait = waitForDOM(document, "#response-panel .data-header");
71 let waitForPropsView = waitForDOM(
72 document,
73 "#response-panel .properties-view",
77 store.dispatch(Actions.toggleNetworkDetails());
78 clickOnSidebarTab(document, "response");
79 await Promise.all([wait, waitForPropsView]);
81 testJsonSectionInResponseTab(`"Hello JSONP!"`);
83 wait = waitForDOM(document, "#response-panel .CodeMirror-code");
84 let rawResponseToggle = document.querySelector(
85 "#response-panel .raw-data-toggle-input .devtools-checkbox-toggle"
87 clickElement(rawResponseToggle, monitor);
88 await wait;
90 testResponseTab("$_0123Fun");
92 info("Testing second request");
94 wait = waitForDOM(document, "#response-panel .data-header");
95 EventUtils.sendMouseEvent(
96 { type: "mousedown" },
97 document.querySelectorAll(".request-list-item")[1]
100 await wait;
102 waitForPropsView = waitForDOM(
103 document,
104 "#response-panel .properties-view",
107 rawResponseToggle = document.querySelector(
108 "#response-panel .raw-data-toggle-input .devtools-checkbox-toggle"
110 clickElement(rawResponseToggle, monitor);
112 await waitForPropsView;
114 testJsonSectionInResponseTab(`"Hello weird JSONP!"`);
116 wait = waitForDOM(document, "#response-panel .CodeMirror-code");
117 rawResponseToggle = document.querySelector(
118 "#response-panel .raw-data-toggle-input .devtools-checkbox-toggle"
120 clickElement(rawResponseToggle, monitor);
121 await wait;
123 testResponseTab("$_4567Sad");
125 await teardown(monitor);
127 function testJsonSectionInResponseTab(greeting) {
128 const tabpanel = document.querySelector("#response-panel");
130 tabpanel.querySelectorAll(".treeRow").length,
132 "There should be 1 json properties displayed in this tabpanel."
135 const labels = tabpanel.querySelectorAll("tr .treeLabelCell .treeLabel");
136 const values = tabpanel.querySelectorAll("tr .treeValueCell .objectBox");
139 labels[0].textContent,
140 "greeting",
141 "The first json property name was incorrect."
144 values[0].textContent,
145 greeting,
146 "The first json property value was incorrect."
150 function testResponseTab(func) {
151 const tabpanel = document.querySelector("#response-panel");
154 tabpanel.querySelector(".response-error-header") === null,
155 true,
156 "The response error header doesn't have the intended visibility."
159 tabpanel.querySelector(".data-label").textContent,
160 L10N.getFormatStr("jsonpScopeName", func),
161 "The response json view has the intened visibility and correct title."
164 tabpanel.querySelector(".CodeMirror-code") === null,
165 false,
166 "The response editor has the intended visibility."
169 tabpanel.querySelector(".responseImageBox") === null,
170 true,
171 "The response image box doesn't have the intended visibility."
174 tabpanel.querySelectorAll(".empty-notice").length,
176 "The empty notice should not be displayed in this tabpanel."