longtask-promise.html (1353B)
1 <!DOCTYPE HTML> 2 <meta charset=utf-8> 3 <title>LongTask Timing: Promise resolvers</title> 4 <body> 5 6 <script src="/resources/testharness.js"></script> 7 <script src="/resources/testharnessreport.js"></script> 8 <script src="resources/utils.js"></script> 9 10 <h1>Long Task: promise resolvers</h1> 11 <script> 12 function test_promise_long_task(name, promise) { 13 promise_test(async t => { 14 assert_implements(window.PerformanceLongTaskTiming, 'Longtasks are not supported.'); 15 const longTaskPromise = new Promise(resolve => { 16 const observer = new PerformanceObserver(t.step_func(entryList => { 17 observer.disconnect(); 18 resolve(entryList.getEntries()); 19 })); 20 observer.observe({entryTypes: ['longtask']}); 21 }); 22 23 await promise().catch(() => {}); 24 busyWait(); 25 const entries = await longTaskPromise; 26 assert_greater_than_equal(entries.length, 1); 27 }, `Performance longtask entries after a promise: ${name}`); 28 } 29 30 test_promise_long_task("successful fetch", () => fetch("/common/dummy.xml")); 31 test_promise_long_task("Response.text()", () => 32 fetch("/common/dummy.xml").then(r => r.text())); 33 test_promise_long_task("rejected fetch", () => fetch("/common/non-existent.xml")); 34 test_promise_long_task("JSON error", () => fetch("/common/dummy.xml").then(r => r.json())); 35 </script> 36 </body>