Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test has a WPT meta file that expects 1 subtest issues.
- This WPT test may be referenced by the following Test IDs:
- /largest-contentful-paint/animated/observe-animated-image.tentative.html - WPT Dashboard Interop Dashboard
<!DOCTYPE HTML>
<html>
<head>
<meta charset=utf-8>
<title>Largest Contentful Paint: observe image.</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="../resources/largest-contentful-paint-helpers.js"></script>
</head>
<body>
<script>
promise_test(async () => {
assert_implements(window.LargestContentfulPaint,
"LargestContentfulPaint is not implemented");
const beforeLoad = performance.now();
// Offsets inside `anim-gr.png`:
// IHDR: 8..33
// acTL: 33..53
// fcTL (1st frame): 53..91
// IDAT (1st frame): 91..254
// fcTL (2nd frame): 254..292
// fcTL payload starts at offset 262
// fdAT (2nd frame): 292..448
// fdAT payload starts at offset 304
//
// The HTTP request below will stall for 2 seconds after all pixels of
// the 1st frame are available, but before any 2nd frame pixels are
// available. The test will verify that LargestContentfulPaint fires
// "immediately", without waiting for the rest of the bytes.
//
// one) is used in the test.
const url = window.location.origin +
`/images/anim-gr.png?pipe=trickle(304:d${delay_pipe_value})`;
const entry = await load_and_observe(url);
const size = 100 * 50; // `anim-gr.png` is 100 by 50.
checkImage(entry, url, 'image_id', size, beforeLoad, ["animated"]);
}, "Same origin animated image is observable and has a first frame.");
</script>
</body>
</html>