Thu, 22 Jan 2015 13:21:57 +0100
Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6
1 /* Any copyright is dedicated to the Public Domain.
2 http://creativecommons.org/publicdomain/zero/1.0/ */
4 /**
5 * Tests if requests render correct information in the menu UI.
6 */
8 function test() {
9 initNetMonitor(SIMPLE_SJS).then(([aTab, aDebuggee, aMonitor]) => {
10 info("Starting test... ");
12 let { L10N, NetMonitorView } = aMonitor.panelWin;
13 let { RequestsMenu } = NetMonitorView;
15 RequestsMenu.lazyUpdate = false;
17 waitForNetworkEvents(aMonitor, 1)
18 .then(() => teardown(aMonitor))
19 .then(finish);
21 aMonitor.panelWin.once(aMonitor.panelWin.EVENTS.NETWORK_EVENT, () => {
22 is(RequestsMenu.selectedItem, null,
23 "There shouldn't be any selected item in the requests menu.");
24 is(RequestsMenu.itemCount, 1,
25 "The requests menu should not be empty after the first request.");
26 is(NetMonitorView.detailsPaneHidden, true,
27 "The details pane should still be hidden after the first request.");
29 let requestItem = RequestsMenu.getItemAtIndex(0);
30 let target = requestItem.target;
32 is(typeof requestItem.value, "string",
33 "The attached request id is incorrect.");
34 isnot(requestItem.value, "",
35 "The attached request id should not be empty.");
37 is(typeof requestItem.attachment.startedDeltaMillis, "number",
38 "The attached startedDeltaMillis is incorrect.");
39 is(requestItem.attachment.startedDeltaMillis, 0,
40 "The attached startedDeltaMillis should be zero.");
42 is(typeof requestItem.attachment.startedMillis, "number",
43 "The attached startedMillis is incorrect.");
44 isnot(requestItem.attachment.startedMillis, 0,
45 "The attached startedMillis should not be zero.");
47 is(requestItem.attachment.requestHeaders, undefined,
48 "The requestHeaders should not yet be set.");
49 is(requestItem.attachment.requestCookies, undefined,
50 "The requestCookies should not yet be set.");
51 is(requestItem.attachment.requestPostData, undefined,
52 "The requestPostData should not yet be set.");
54 is(requestItem.attachment.responseHeaders, undefined,
55 "The responseHeaders should not yet be set.");
56 is(requestItem.attachment.responseCookies, undefined,
57 "The responseCookies should not yet be set.");
59 is(requestItem.attachment.httpVersion, undefined,
60 "The httpVersion should not yet be set.");
61 is(requestItem.attachment.status, undefined,
62 "The status should not yet be set.");
63 is(requestItem.attachment.statusText, undefined,
64 "The statusText should not yet be set.");
66 is(requestItem.attachment.headersSize, undefined,
67 "The headersSize should not yet be set.");
68 is(requestItem.attachment.contentSize, undefined,
69 "The contentSize should not yet be set.");
71 is(requestItem.attachment.mimeType, undefined,
72 "The mimeType should not yet be set.");
73 is(requestItem.attachment.responseContent, undefined,
74 "The responseContent should not yet be set.");
76 is(requestItem.attachment.totalTime, undefined,
77 "The totalTime should not yet be set.");
78 is(requestItem.attachment.eventTimings, undefined,
79 "The eventTimings should not yet be set.");
81 verifyRequestItemTarget(requestItem, "GET", SIMPLE_SJS);
82 });
84 aMonitor.panelWin.once(aMonitor.panelWin.EVENTS.RECEIVED_REQUEST_HEADERS, () => {
85 let requestItem = RequestsMenu.getItemAtIndex(0);
87 ok(requestItem.attachment.requestHeaders,
88 "There should be a requestHeaders attachment available.");
89 ok(requestItem.attachment.requestHeaders.headers.length >= 6,
90 "The requestHeaders attachment has an incorrect |headers| property.");
91 // Can't test for an exact total number of headers, because it seems to
92 // vary across pgo/non-pgo builds.
93 isnot(requestItem.attachment.requestHeaders.headersSize, 0,
94 "The requestHeaders attachment has an incorrect |headersSize| property.");
95 // Can't test for the exact request headers size because the value may
96 // vary across platforms ("User-Agent" header differs).
98 verifyRequestItemTarget(requestItem, "GET", SIMPLE_SJS);
99 });
101 aMonitor.panelWin.once(aMonitor.panelWin.EVENTS.RECEIVED_REQUEST_COOKIES, () => {
102 let requestItem = RequestsMenu.getItemAtIndex(0);
104 ok(requestItem.attachment.requestCookies,
105 "There should be a requestCookies attachment available.");
106 is(requestItem.attachment.requestCookies.cookies.length, 0,
107 "The requestCookies attachment has an incorrect |cookies| property.");
109 verifyRequestItemTarget(requestItem, "GET", SIMPLE_SJS);
110 });
112 aMonitor.panelWin.once(aMonitor.panelWin.EVENTS.RECEIVED_REQUEST_POST_DATA, () => {
113 ok(false, "Trap listener: this request doesn't have any post data.")
114 });
116 aMonitor.panelWin.once(aMonitor.panelWin.EVENTS.RECEIVED_RESPONSE_HEADERS, () => {
117 let requestItem = RequestsMenu.getItemAtIndex(0);
119 ok(requestItem.attachment.responseHeaders,
120 "There should be a responseHeaders attachment available.");
121 is(requestItem.attachment.responseHeaders.headers.length, 6,
122 "The responseHeaders attachment has an incorrect |headers| property.");
123 is(requestItem.attachment.responseHeaders.headersSize, 173,
124 "The responseHeaders attachment has an incorrect |headersSize| property.");
126 verifyRequestItemTarget(requestItem, "GET", SIMPLE_SJS);
127 });
129 aMonitor.panelWin.once(aMonitor.panelWin.EVENTS.RECEIVED_RESPONSE_COOKIES, () => {
130 let requestItem = RequestsMenu.getItemAtIndex(0);
132 ok(requestItem.attachment.responseCookies,
133 "There should be a responseCookies attachment available.");
134 is(requestItem.attachment.responseCookies.cookies.length, 0,
135 "The responseCookies attachment has an incorrect |cookies| property.");
137 verifyRequestItemTarget(requestItem, "GET", SIMPLE_SJS);
138 });
140 aMonitor.panelWin.once(aMonitor.panelWin.EVENTS.STARTED_RECEIVING_RESPONSE, () => {
141 let requestItem = RequestsMenu.getItemAtIndex(0);
143 is(requestItem.attachment.httpVersion, "HTTP/1.1",
144 "The httpVersion attachment has an incorrect value.");
145 is(requestItem.attachment.status, "200",
146 "The status attachment has an incorrect value.");
147 is(requestItem.attachment.statusText, "Och Aye",
148 "The statusText attachment has an incorrect value.");
149 is(requestItem.attachment.headersSize, 173,
150 "The headersSize attachment has an incorrect value.");
152 verifyRequestItemTarget(requestItem, "GET", SIMPLE_SJS, {
153 status: "200",
154 statusText: "Och Aye"
155 });
156 });
158 aMonitor.panelWin.once(aMonitor.panelWin.EVENTS.UPDATING_RESPONSE_CONTENT, () => {
159 let requestItem = RequestsMenu.getItemAtIndex(0);
161 is(requestItem.attachment.contentSize, "12",
162 "The contentSize attachment has an incorrect value.");
163 is(requestItem.attachment.mimeType, "text/plain; charset=utf-8",
164 "The mimeType attachment has an incorrect value.");
166 verifyRequestItemTarget(requestItem, "GET", SIMPLE_SJS, {
167 type: "plain",
168 fullMimeType: "text/plain; charset=utf-8",
169 size: L10N.getFormatStrWithNumbers("networkMenu.sizeKB", 0.01),
170 });
171 });
173 aMonitor.panelWin.once(aMonitor.panelWin.EVENTS.RECEIVED_RESPONSE_CONTENT, () => {
174 let requestItem = RequestsMenu.getItemAtIndex(0);
176 ok(requestItem.attachment.responseContent,
177 "There should be a responseContent attachment available.");
178 is(requestItem.attachment.responseContent.content.mimeType, "text/plain; charset=utf-8",
179 "The responseContent attachment has an incorrect |content.mimeType| property.");
180 is(requestItem.attachment.responseContent.content.text, "Hello world!",
181 "The responseContent attachment has an incorrect |content.text| property.");
182 is(requestItem.attachment.responseContent.content.size, 12,
183 "The responseContent attachment has an incorrect |content.size| property.");
185 verifyRequestItemTarget(requestItem, "GET", SIMPLE_SJS, {
186 type: "plain",
187 fullMimeType: "text/plain; charset=utf-8",
188 size: L10N.getFormatStrWithNumbers("networkMenu.sizeKB", 0.01),
189 });
190 });
192 aMonitor.panelWin.once(aMonitor.panelWin.EVENTS.UPDATING_EVENT_TIMINGS, () => {
193 let requestItem = RequestsMenu.getItemAtIndex(0);
195 is(typeof requestItem.attachment.totalTime, "number",
196 "The attached totalTime is incorrect.");
197 ok(requestItem.attachment.totalTime >= 0,
198 "The attached totalTime should be positive.");
200 is(typeof requestItem.attachment.endedMillis, "number",
201 "The attached endedMillis is incorrect.");
202 ok(requestItem.attachment.endedMillis >= 0,
203 "The attached endedMillis should be positive.");
205 verifyRequestItemTarget(requestItem, "GET", SIMPLE_SJS, {
206 time: true
207 });
208 });
210 aMonitor.panelWin.once(aMonitor.panelWin.EVENTS.RECEIVED_EVENT_TIMINGS, () => {
211 let requestItem = RequestsMenu.getItemAtIndex(0);
213 ok(requestItem.attachment.eventTimings,
214 "There should be a eventTimings attachment available.");
215 is(typeof requestItem.attachment.eventTimings.timings.blocked, "number",
216 "The eventTimings attachment has an incorrect |timings.blocked| property.");
217 is(typeof requestItem.attachment.eventTimings.timings.dns, "number",
218 "The eventTimings attachment has an incorrect |timings.dns| property.");
219 is(typeof requestItem.attachment.eventTimings.timings.connect, "number",
220 "The eventTimings attachment has an incorrect |timings.connect| property.");
221 is(typeof requestItem.attachment.eventTimings.timings.send, "number",
222 "The eventTimings attachment has an incorrect |timings.send| property.");
223 is(typeof requestItem.attachment.eventTimings.timings.wait, "number",
224 "The eventTimings attachment has an incorrect |timings.wait| property.");
225 is(typeof requestItem.attachment.eventTimings.timings.receive, "number",
226 "The eventTimings attachment has an incorrect |timings.receive| property.");
227 is(typeof requestItem.attachment.eventTimings.totalTime, "number",
228 "The eventTimings attachment has an incorrect |totalTime| property.");
230 verifyRequestItemTarget(requestItem, "GET", SIMPLE_SJS, {
231 time: true
232 });
233 });
235 aDebuggee.location.reload();
236 });
237 }