Skip to content

Commit b3264d4

Browse files
committed
Add a summary table showing the durations of tests (slowest first)
1 parent 3a623d0 commit b3264d4

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed

util/test/rdtest/testresults.js

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,85 @@ document.body.onload = function() {
252252
// move failed tests to the end
253253
[].slice.call(document.getElementsByClassName('failed test')).forEach((x) => {document.body.removeChild(x); document.body.insertBefore(x, summary);})
254254

255+
// do a pure javascript query and add a summary table of test timings
256+
{
257+
var div = document.createElement('div');
258+
div.classList.add("expandable");
259+
260+
var toggle = document.createElement('span');
261+
toggle.classList.add("expandtoggle");
262+
div.appendChild(toggle);
263+
264+
var title = document.createElement('div');
265+
title.classList.add("title");
266+
title.innerHTML = "Test timing summary";
267+
div.appendChild(title);
268+
269+
var contents = document.createElement('div');
270+
contents.classList.add("contents");
271+
div.appendChild(contents);
272+
273+
msgs = [].slice.call(document.getElementsByClassName('message'))
274+
ran = msgs.filter((msg) => msg.innerText.includes("ran in 0:"))
275+
timings = ran.map((msg) => [msg.parentElement.parentElement.id, msg.innerText.replace(/.*ran in /, '').replace(/\..*/, '').split(':').reduce((acc,time) => (60 * acc) + +time)])
276+
timings.sort((a,b) => b[1] - a[1])
277+
278+
var table = document.createElement('table');
279+
280+
var header = document.createElement('tr');
281+
{
282+
var a = document.createElement('th');
283+
a.innerHTML = 'Test Name';
284+
header.appendChild(a);
285+
286+
var a = document.createElement('th');
287+
a.innerHTML = 'Duration';
288+
header.appendChild(a);
289+
}
290+
table.appendChild(header);
291+
292+
var total = 0;
293+
timings.forEach((t) => {
294+
var row = document.createElement('tr');
295+
296+
var a = document.createElement('td');
297+
a.innerHTML = t[0];
298+
row.appendChild(a);
299+
300+
var duration = t[1];
301+
total += duration;
302+
var minutes = Math.floor(duration/60);
303+
var seconds = duration - (60*minutes);
304+
305+
var a = document.createElement('td');
306+
a.innerHTML = String(minutes).padStart(2, 0) + ":" + String(seconds).padStart(2, 0);
307+
row.appendChild(a);
308+
309+
table.appendChild(row);
310+
});
311+
312+
{
313+
var row = document.createElement('tr');
314+
315+
var a = document.createElement('td');
316+
a.innerHTML = "Total";
317+
row.appendChild(a);
318+
319+
var minutes = Math.floor(total/60);
320+
var seconds = total - (60*minutes);
321+
322+
var a = document.createElement('td');
323+
a.innerHTML = String(minutes).padStart(2, 0) + ":" + String(seconds).padStart(2, 0);
324+
row.appendChild(a);
325+
326+
table.appendChild(row);
327+
}
328+
329+
contents.appendChild(table);
330+
331+
document.body.appendChild(div);
332+
}
333+
255334
var toggles = document.getElementsByClassName('expandtoggle');
256335

257336
for(var i=0; i < toggles.length; i++) {

0 commit comments

Comments
 (0)