зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1151368
- Add test for DevTools request blocking. r=Honza
Differential Revision: https://phabricator.services.mozilla.com/D26582 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
4c41f2a87f
Коммит
f6228d736f
|
@ -70,6 +70,7 @@ support-files =
|
|||
[browser_net_api-calls.js]
|
||||
[browser_net_background_update.js]
|
||||
[browser_net_autoscroll.js]
|
||||
[browser_net_block.js]
|
||||
[browser_net_cached-status.js]
|
||||
skip-if = verify
|
||||
[browser_net_cause.js]
|
||||
|
|
|
@ -0,0 +1,100 @@
|
|||
/* Any copyright is dedicated to the Public Domain.
|
||||
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
* Test blocking and unblocking a request.
|
||||
*/
|
||||
|
||||
add_task(async function() {
|
||||
const { tab, monitor } = await initNetMonitor(SIMPLE_URL);
|
||||
info("Starting test... ");
|
||||
|
||||
const { document, store, windowRequire, parent } = monitor.panelWin;
|
||||
const {
|
||||
getSelectedRequest,
|
||||
} = windowRequire("devtools/client/netmonitor/src/selectors/index");
|
||||
const parentDocument = parent.document;
|
||||
const Actions = windowRequire("devtools/client/netmonitor/src/actions/index");
|
||||
store.dispatch(Actions.batchEnable(false));
|
||||
|
||||
// Reload to have one request in the list
|
||||
let waitForEvents = waitForNetworkEvents(monitor, 1);
|
||||
BrowserTestUtils.loadURI(tab.linkedBrowser, SIMPLE_URL);
|
||||
await waitForEvents;
|
||||
|
||||
// Capture normal request
|
||||
let normalRequestState;
|
||||
let normalRequestSize;
|
||||
{
|
||||
const firstRequest = document.querySelectorAll(".request-list-item")[0];
|
||||
const waitForHeaders = waitUntil(() => document.querySelector(".headers-overview"));
|
||||
EventUtils.sendMouseEvent({ type: "mousedown" }, firstRequest);
|
||||
await waitForHeaders;
|
||||
normalRequestState = getSelectedRequest(store.getState());
|
||||
normalRequestSize =
|
||||
firstRequest.querySelector(".requests-list-transferred").textContent;
|
||||
info("Captured normal request");
|
||||
// Mark as blocked
|
||||
EventUtils.sendMouseEvent({ type: "contextmenu" }, firstRequest);
|
||||
const contextBlock = parentDocument.querySelector("#request-list-context-block-url");
|
||||
contextBlock.click();
|
||||
info("Set request to blocked");
|
||||
}
|
||||
|
||||
// Reload to have one request in the list
|
||||
info("Reloading to check block");
|
||||
// We can't use the normal waiting methods because a canceled request won't send all
|
||||
// the extra update packets.
|
||||
waitForEvents = waitForNetworkEvents(monitor, 1);
|
||||
tab.linkedBrowser.reload();
|
||||
await waitForEvents;
|
||||
|
||||
// Capture blocked request, then unblock
|
||||
let blockedRequestState;
|
||||
let blockedRequestSize;
|
||||
{
|
||||
const firstRequest = document.querySelectorAll(".request-list-item")[0];
|
||||
blockedRequestSize =
|
||||
firstRequest.querySelector(".requests-list-transferred").textContent;
|
||||
EventUtils.sendMouseEvent({ type: "mousedown" }, firstRequest);
|
||||
blockedRequestState = getSelectedRequest(store.getState());
|
||||
info("Captured blocked request");
|
||||
// Mark as unblocked
|
||||
EventUtils.sendMouseEvent({ type: "contextmenu" }, firstRequest);
|
||||
const contextUnblock =
|
||||
parentDocument.querySelector("#request-list-context-unblock-url");
|
||||
contextUnblock.click();
|
||||
info("Set request to unblocked");
|
||||
}
|
||||
|
||||
// Reload to have one request in the list
|
||||
info("Reloading to check unblock");
|
||||
waitForEvents = waitForNetworkEvents(monitor, 1);
|
||||
tab.linkedBrowser.reload();
|
||||
await waitForEvents;
|
||||
|
||||
// Capture unblocked request
|
||||
let unblockedRequestState;
|
||||
let unblockedRequestSize;
|
||||
{
|
||||
const firstRequest = document.querySelectorAll(".request-list-item")[0];
|
||||
unblockedRequestSize =
|
||||
firstRequest.querySelector(".requests-list-transferred").textContent;
|
||||
EventUtils.sendMouseEvent({ type: "mousedown" }, firstRequest);
|
||||
unblockedRequestState = getSelectedRequest(store.getState());
|
||||
info("Captured unblocked request");
|
||||
}
|
||||
|
||||
ok(!normalRequestState.blockedReason, "Normal request is not blocked");
|
||||
ok(!normalRequestSize.includes("blocked"), "Normal request has a size");
|
||||
|
||||
ok(blockedRequestState.blockedReason, "Blocked request is blocked");
|
||||
ok(blockedRequestSize.includes("blocked"), "Blocked request shows reason as size");
|
||||
|
||||
ok(!unblockedRequestState.blockedReason, "Unblocked request is not blocked");
|
||||
ok(!unblockedRequestSize.includes("blocked"), "Unblocked request has a size");
|
||||
|
||||
return teardown(monitor);
|
||||
});
|
Загрузка…
Ссылка в новой задаче