tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

browser_net_footer-summary.js (3531B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 /**
      7 * Test if the summary text displayed in the network requests menu footer is correct.
      8 */
      9 
     10 add_task(async function () {
     11  const {
     12    getFormattedSize,
     13    getFormattedTime,
     14  } = require("resource://devtools/client/netmonitor/src/utils/format-utils.js");
     15 
     16  requestLongerTimeout(2);
     17 
     18  const { tab, monitor } = await initNetMonitor(FILTERING_URL, {
     19    requestCount: 1,
     20  });
     21  info("Starting test... ");
     22 
     23  const { document, store, windowRequire } = monitor.panelWin;
     24  const Actions = windowRequire("devtools/client/netmonitor/src/actions/index");
     25  const { getDisplayedRequestsSummary } = windowRequire(
     26    "devtools/client/netmonitor/src/selectors/index"
     27  );
     28  const l10n = new Localization(["devtools/client/netmonitor.ftl"], true);
     29 
     30  store.dispatch(Actions.batchEnable(false));
     31  testStatus();
     32 
     33  for (let i = 0; i < 2; i++) {
     34    info(`Performing requests in batch #${i}`);
     35    const wait = waitForNetworkEvents(monitor, 8);
     36    await SpecialPowers.spawn(tab.linkedBrowser, [], async function () {
     37      content.wrappedJSObject.performRequests(
     38        '{ "getMedia": true, "getFlash": true }'
     39      );
     40    });
     41    await wait;
     42 
     43    testStatus();
     44 
     45    const buttons = ["html", "css", "js", "xhr", "fonts", "images", "media"];
     46    for (const button of buttons) {
     47      const buttonEl = document.querySelector(
     48        `.requests-list-filter-${button}-button`
     49      );
     50      EventUtils.sendMouseEvent({ type: "click" }, buttonEl);
     51      testStatus();
     52    }
     53  }
     54 
     55  await teardown(monitor);
     56 
     57  function testStatus() {
     58    const state = store.getState();
     59    const totalRequestsCount = state.requests.requests.length;
     60    const requestsSummary = getDisplayedRequestsSummary(state);
     61    info(
     62      `Current requests: ${requestsSummary.count} of ${totalRequestsCount}.`
     63    );
     64 
     65    const countEl = document.querySelector(
     66      ".requests-list-network-summary-count"
     67    );
     68    info(`Current summary count: ${countEl.textContent}`);
     69 
     70    const expectedCount = l10n.formatValueSync(
     71      "network-menu-summary-requests-count",
     72      { requestCount: requestsSummary.count }
     73    );
     74 
     75    is(
     76      countEl.textContent,
     77      expectedCount,
     78      "The current summary count is correct."
     79    );
     80 
     81    if (!totalRequestsCount || !requestsSummary.count) {
     82      return;
     83    }
     84 
     85    const transferEl = document.querySelector(
     86      ".requests-list-network-summary-transfer"
     87    );
     88    info(`Current summary transfer: ${transferEl.textContent}`);
     89 
     90    const expectedTransfer = l10n.formatValueSync(
     91      "network-menu-summary-transferred",
     92      {
     93        formattedContentSize: getFormattedSize(requestsSummary.contentSize),
     94        formattedTransferredSize: getFormattedSize(
     95          requestsSummary.transferredSize
     96        ),
     97      }
     98    );
     99 
    100    is(
    101      transferEl.textContent,
    102      expectedTransfer,
    103      "The current summary transfer is correct."
    104    );
    105 
    106    const finishEl = document.querySelector(
    107      ".requests-list-network-summary-finish"
    108    );
    109    info(`Current summary finish: ${finishEl.textContent}`);
    110 
    111    const expectedFinish = l10n.formatValueSync("network-menu-summary-finish", {
    112      formattedTime: getFormattedTime(requestsSummary.ms),
    113    });
    114 
    115    info(`Computed total bytes: ${requestsSummary.bytes}`);
    116    info(`Computed total ms: ${requestsSummary.ms}`);
    117 
    118    is(
    119      finishEl.textContent,
    120      expectedFinish,
    121      "The current summary finish is correct."
    122    );
    123  }
    124 });