image-sequence-of-events.html (1250B)
1 <!DOCTYPE html> 2 <meta charset="utf-8"> 3 <title>Test the sequence of events when reporting image timing.</title> 4 <script src="/resources/testharness.js"></script> 5 <script src="/resources/testharnessreport.js"></script> 6 <body> 7 <script> 8 function test_image_sequence(src, event, t) { 9 const image = document.createElement('img'); 10 const absoluteURL = new URL(src, location.href).toString(); 11 document.body.appendChild(image); 12 t.add_cleanup(() => image.remove()); 13 return new Promise(resolve => { 14 image.addEventListener(event, t.step_func(() => { 15 assert_equals(performance.getEntriesByName(absoluteURL).length, 1); 16 resolve(); 17 })); 18 image.src = src; 19 }); 20 } 21 promise_test(t => test_image_sequence('resources/blue.png', 'load', t), 22 "An image should receive its load event after the ResourceTiming entry is available"); 23 24 promise_test(t => test_image_sequence('resources/nothing-at-all.png', 'error', t), 25 "A non-existent (404) image should receive its error event after the ResourceTiming entry is available"); 26 27 promise_test(t => test_image_sequence('resources/invalid.png', 'error', t), 28 "An invalid image should receive its error event after the ResourceTiming entry is available"); 29 </script>