Files
sousa-gecko/devtools/client/netmonitor/test/browser_net_columns_time.js
T
Alexandre Poirot 25c8ad77e8 Bug 2007539 - [devtools] Reload pages as Firefox does in DevTools tests. r=devtools-reviewers,nchevobbe
The `gBrowser.reloadTab` method was doing a very light reload,
which could preserve iframe overriden locations.
The new method ensures we load the original HTML content back,
this seems to also have an impact on keep-alive which is not longer guaranteed.

Only supports reloading the currently selected tab, to better replicate
real user scenarios. But also to comply to `BrowserCommands.reload`,
which only supports reloading the selected tab.

Also tune the har test, now that requests are really cancelled
and we may try to fetch reponse content for such request.

Differential Revision: https://phabricator.services.mozilla.com/D277433
2026-01-20 20:44:46 +00:00

63 lines
1.9 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
/**
* Tests for timings columns. Note that the column
* header is visible only if there are requests in the list.
*/
add_task(async function () {
const { monitor } = await initNetMonitor(SIMPLE_URL, {
requestCount: 1,
});
info("Starting test... ");
const { document, store, windowRequire } = monitor.panelWin;
const Actions = windowRequire("devtools/client/netmonitor/src/actions/index");
store.dispatch(Actions.batchEnable(false));
const visibleColumns = store.getState().ui.columns;
const wait = waitForNetworkEvents(monitor, 1);
await reloadSelectedTab();
await wait;
// Hide the waterfall column to make sure timing data are fetched
// by the other timing columns ("endTime", "responseTime", "duration",
// "latency").
// Note that all these timing columns are based on the same
// `RequestListColumnTime` component.
if (visibleColumns.waterfall) {
await hideColumn(monitor, "waterfall");
}
["endTime", "responseTime", "duration", "latency"].forEach(async column => {
if (!visibleColumns[column]) {
await showColumn(monitor, column);
}
});
const onNetworkEvents = waitForNetworkEvents(monitor, 1);
await reloadSelectedTab();
await onNetworkEvents;
// There should be one request in the list.
const requestItems = document.querySelectorAll(".request-list-item");
is(requestItems.length, 1, "There must be one visible item");
const item = requestItems[0];
const types = ["end", "response", "duration", "latency"];
for (const t of types) {
info("Check the timing column for type: " + t);
await waitUntil(() => {
const node = item.querySelector(".requests-list-" + t + "-time");
const value = parseInt(node.textContent, 10);
return value >= 0;
});
}
await teardown(monitor);
});