test_performance_server_timing.html (1956B)
1 <!-- 2 Any copyright is dedicated to the Public Domain. 3 http://creativecommons.org/publicdomain/zero/1.0/ 4 --> 5 <!DOCTYPE html> 6 <html> 7 <head> 8 <meta charset=utf-8> 9 <title>Test for PerformanceServerTiming</title> 10 <script src="/resources/testharness.js"></script> 11 <script src="/resources/testharnessreport.js"></script> 12 </head> 13 <body> 14 <div id="log"></div> 15 <script> 16 function makeXHR(aUrl) { 17 var xmlhttp = new XMLHttpRequest(); 18 xmlhttp.open("get", aUrl, true); 19 xmlhttp.send(); 20 } 21 22 // Note that |responseServerTiming| and |trailerServerTiming| SHOULD be synced with 23 // the ones in serverTiming.sjs. 24 var responseServerTiming = [{metric:"metric1", duration:"123.4", description:"description1"}, 25 {metric:"metric2", duration:"456.78", description:"description2"}]; 26 var trailerServerTiming = [{metric:"metric3", duration:"789.11", description:"description3"}, 27 {metric:"metric4", duration:"1112.13", description:"description4"}]; 28 29 function checkServerTimingContent(serverTiming) { 30 var expectedResult = responseServerTiming.concat(trailerServerTiming); 31 assert_equals(serverTiming.length, expectedResult.length); 32 33 for (var i = 0; i < expectedResult.length; i++) { 34 assert_equals(serverTiming[i].name, expectedResult[i].metric); 35 assert_equals(serverTiming[i].description, expectedResult[i].description); 36 assert_equals(serverTiming[i].duration, parseFloat(expectedResult[i].duration)); 37 } 38 } 39 40 promise_test(t => { 41 var promise = new Promise(resolve => { 42 performance.clearResourceTimings(); 43 44 var observer = new PerformanceObserver(list => resolve(list)); 45 observer.observe({entryTypes: ['resource']}); 46 t.add_cleanup(() => observer.disconnect()); 47 }); 48 49 makeXHR("serverTiming.sjs"); 50 51 return promise.then(list => { 52 assert_equals(list.getEntries().length, 1); 53 checkServerTimingContent(list.getEntries()[0].serverTiming); 54 }); 55 }, "server-timing test"); 56 57 </script> 58 </body>