1 /* Any copyright is dedicated to the Public Domain.
2 http://creativecommons.org/publicdomain/zero/1.0/ */
7 * Test that WS messages can be navigated between using the keyboard.
10 add_task(async
function () {
11 const { tab
, monitor
} = await
initNetMonitor(WS_PAGE_URL
, {
14 info("Starting test... ");
16 const { document
, store
, windowRequire
} = monitor
.panelWin
;
17 const Actions
= windowRequire("devtools/client/netmonitor/src/actions/index");
19 store
.dispatch(Actions
.batchEnable(false));
21 // Wait for WS connections to be established + send messages
22 const onNetworkEvents
= waitForNetworkEvents(monitor
, 1);
23 await SpecialPowers
.spawn(tab
.linkedBrowser
, [], async () => {
24 await content
.wrappedJSObject
.openConnection(0);
28 .forEach((_
, index
) => {
29 content
.wrappedJSObject
.sendData(index
);
32 await onNetworkEvents
;
34 const requests
= document
.querySelectorAll(".request-list-item");
35 is(requests
.length
, 1, "There should be one request");
37 // Wait for all sent/received messages to be displayed in DevTools
38 const wait
= waitForDOM(
40 "#messages-view .message-list-table .message-list-item",
44 // Select the first request
45 EventUtils
.sendMouseEvent({ type
: "mousedown" }, requests
[0]);
47 // Click on the "Response" panel
48 clickOnSidebarTab(document
, "response");
51 // Get all messages present in the "Response" panel
52 const frames
= document
.querySelectorAll(
53 "#messages-view .message-list-table .message-list-item"
56 // Check expected results
57 is(frames
.length
, 10, "There should be ten frames");
58 // Wait for next tick to do async stuff (The MessagePayload component uses the async function getMessagePayload)
61 const waitForSelected
= waitForDOM(
63 // The first message is actually the second child, there is a hidden row.
64 `.message-list-item:nth-child(${2}).selected`
66 EventUtils
.sendMouseEvent({ type
: "mousedown" }, frames
[0]);
67 await waitForSelected
;
69 const checkSelected
= messageRowNumber
=> {
71 Array
.from(frames
).findIndex(el
=> el
.matches(".selected")),
73 `Message ${messageRowNumber} should be selected.`
77 // Need focus for keyboard shortcuts to work
82 EventUtils
.sendKey("DOWN", window
);
85 EventUtils
.sendKey("UP", window
);
88 EventUtils
.sendKey("PAGE_DOWN", window
);
91 EventUtils
.sendKey("PAGE_UP", window
);
94 EventUtils
.sendKey("END", window
);
97 EventUtils
.sendKey("HOME", window
);
100 // Close WS connection
101 await SpecialPowers
.spawn(tab
.linkedBrowser
, [], async () => {
102 await content
.wrappedJSObject
.closeConnection();
105 await
teardown(monitor
);