diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /devtools/client/netmonitor/test/browser_net_streaming-response.js | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'devtools/client/netmonitor/test/browser_net_streaming-response.js')
-rw-r--r-- | devtools/client/netmonitor/test/browser_net_streaming-response.js | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/devtools/client/netmonitor/test/browser_net_streaming-response.js b/devtools/client/netmonitor/test/browser_net_streaming-response.js new file mode 100644 index 0000000000..854c496ca4 --- /dev/null +++ b/devtools/client/netmonitor/test/browser_net_streaming-response.js @@ -0,0 +1,89 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +/** + * Tests if reponses from streaming content types (MPEG-DASH, HLS) are + * displayed as XML or plain text + */ + +add_task(async function () { + const { tab, monitor } = await initNetMonitor(CUSTOM_GET_URL, { + requestCount: 1, + }); + + info("Starting test... "); + const { document, store, windowRequire } = monitor.panelWin; + const Actions = windowRequire("devtools/client/netmonitor/src/actions/index"); + const { getDisplayedRequests, getSortedRequests } = windowRequire( + "devtools/client/netmonitor/src/selectors/index" + ); + + store.dispatch(Actions.batchEnable(false)); + + const REQUESTS = [ + ["hls-m3u8", /^#EXTM3U/], + ["mpeg-dash", /^<\?xml/], + ]; + + let wait = waitForNetworkEvents(monitor, REQUESTS.length); + for (const [fmt] of REQUESTS) { + const url = CONTENT_TYPE_SJS + "?fmt=" + fmt; + await SpecialPowers.spawn( + tab.linkedBrowser, + [{ url }], + async function (args) { + content.wrappedJSObject.performRequests(1, args.url); + } + ); + } + await wait; + + const requestItems = document.querySelectorAll(".request-list-item"); + for (const requestItem of requestItems) { + requestItem.scrollIntoView(); + const requestsListStatus = requestItem.querySelector(".status-code"); + EventUtils.sendMouseEvent({ type: "mouseover" }, requestsListStatus); + await waitUntil(() => requestsListStatus.title); + await waitForDOMIfNeeded(requestItem, ".requests-list-timings-total"); + } + + REQUESTS.forEach(([fmt], i) => { + verifyRequestItemTarget( + document, + getDisplayedRequests(store.getState()), + getSortedRequests(store.getState())[i], + "GET", + CONTENT_TYPE_SJS + "?fmt=" + fmt, + { + status: 200, + statusText: "OK", + } + ); + }); + + wait = waitForDOM(document, "#response-panel"); + store.dispatch(Actions.toggleNetworkDetails()); + clickOnSidebarTab(document, "response"); + await wait; + + store.dispatch(Actions.selectRequest(null)); + + await selectIndexAndWaitForSourceEditor(monitor, 0); + // the hls-m3u8 part + testEditorContent(REQUESTS[0]); + + await selectIndexAndWaitForSourceEditor(monitor, 1); + // the mpeg-dash part + testEditorContent(REQUESTS[1]); + + return teardown(monitor); + + function testEditorContent([fmt, textRe]) { + ok( + getCodeMirrorValue(monitor).match(textRe), + "The text shown in the source editor for " + fmt + " is correct." + ); + } +}); |