browser_net_column-resize-fit.js (2886B)
1 /* Any copyright is dedicated to the Public Domain. 2 http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 "use strict"; 5 6 /** 7 * Tests resizing of columns in NetMonitor. 8 */ 9 add_task(async function () { 10 // Reset visibleColumns so we only get the default ones 11 // and not all that are set in head.js 12 Services.prefs.clearUserPref("devtools.netmonitor.visibleColumns"); 13 14 // Init network monitor 15 const { monitor } = await initNetMonitor(SIMPLE_URL, { 16 requestCount: 1, 17 }); 18 info("Starting test... "); 19 20 const { document } = monitor.panelWin; 21 22 const visibleColumns = getCurrentVisibleColumns(monitor); 23 24 // Wait for network events (to have some requests in the table) 25 const wait = waitForNetworkEvents(monitor, 1); 26 await reloadBrowser(); 27 await wait; 28 29 info("Testing column resize to fit using double-click on draggable resizer"); 30 const fileHeader = document.querySelector(`#requests-list-file-header-box`); 31 const fileColumnResizer = fileHeader.querySelector(".column-resizer"); 32 33 EventUtils.sendMouseEvent({ type: "dblclick" }, fileColumnResizer); 34 35 // After resize - get fresh prefs for tests. 36 let columnsData = JSON.parse( 37 Services.prefs.getCharPref("devtools.netmonitor.columnsData") 38 ); 39 40 // `File` column before resize: 25%, after resize: 11.25% 41 // `Transferred` column before resize: 10%, after resize: 10% 42 checkColumnsData(columnsData, "file", 12); 43 checkSumOfVisibleColumns(columnsData, visibleColumns); 44 45 info( 46 "Testing column resize to fit using context menu `Resize Column To Fit Content`" 47 ); 48 49 // Resizing `transferred` column. 50 EventUtils.sendMouseEvent( 51 { type: "contextmenu" }, 52 document.querySelector("#requests-list-transferred-button") 53 ); 54 55 await selectContextMenuItem( 56 monitor, 57 "request-list-header-resize-column-to-fit-content" 58 ); 59 60 columnsData = JSON.parse( 61 Services.prefs.getCharPref("devtools.netmonitor.columnsData") 62 ); 63 64 // `Transferred` column before resize: 10%, after resize: 2.97% 65 checkColumnsData(columnsData, "transferred", 3); 66 checkSumOfVisibleColumns(columnsData, visibleColumns); 67 68 // Done: clean up. 69 return teardown(monitor); 70 }); 71 72 function checkColumnsData(columnsData, column, expectedWidth) { 73 const width = getWidthFromPref(columnsData, column); 74 const widthsDiff = Math.abs(width - expectedWidth); 75 Assert.less( 76 widthsDiff, 77 2, 78 `Column ${column} has expected size. Got ${width}, Expected ${expectedWidth}` 79 ); 80 } 81 82 function checkSumOfVisibleColumns(columnsData, visibleColumns) { 83 let sum = 0; 84 visibleColumns.forEach(column => { 85 sum += getWidthFromPref(columnsData, column); 86 }); 87 sum = Math.round(sum); 88 is(sum, 100, "All visible columns cover 100%."); 89 } 90 91 function getWidthFromPref(columnsData, column) { 92 const widthInPref = columnsData.find(function (element) { 93 return element.name === column; 94 }).width; 95 return widthInPref; 96 }