| <!DOCTYPE HTML> |
| <meta name="timeout" content="long"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <!-- |
| Navigation timing, LCP and paint timing entries are only emitted during initial |
| load, not after a bfcache navigation. Therefore we only verify the existence of |
| navigation id, not the increment. |
| --> |
| |
| <body> |
| <p>This text is to trigger a LCP entry emission.</p> |
| <script> |
| async function NavigationIdsFromLCP() { |
| return new Promise(resolve => { |
| new PerformanceObserver((entryList) => { |
| resolve(entryList.getEntries()); |
| }).observe({ type: 'largest-contentful-paint', buffered: true }); |
| }) |
| } |
| |
| promise_test(async t => { |
| // Assert navigation id exists in LCP entries and and are all the same. |
| const navigationIdsOfLCP = (await NavigationIdsFromLCP()).map(e => e.navigationId); |
| assert_true(navigationIdsOfLCP.every(e => e == navigationIdsOfLCP[0]), |
| 'Navigation Ids of LCP entries should be the same at initial navigation'); |
| |
| // Assert navigation id exists in a NavigationTiming entry. |
| const navigationIdOfNavigationTiming = |
| performance.getEntriesByType('navigation')[0].navigationId; |
| assert_true(!!navigationIdOfNavigationTiming, |
| 'Navigation Id of a navigation timing entry should exist at initial navigation'); |
| |
| // Assert navigation id exists in PaintTiming entries and are all the same. |
| const navigationIdsOfPaintTiming = |
| performance.getEntriesByType('paint').map(e => e.navigationId); |
| assert_true(navigationIdsOfPaintTiming.every(e => |
| e == navigationIdsOfPaintTiming[0]), |
| 'Navigation Id of PaintTiming entries should be the same as the initial navigation.'); |
| |
| // Assert navigation ids are all the same. |
| const navigationIdsOfAll = |
| navigationIdsOfLCP.concat(navigationIdsOfPaintTiming, navigationIdOfNavigationTiming); |
| assert_true(navigationIdsOfAll.every(e => e == navigationIdsOfAll[0]), |
| 'Navigation Id of all entries should be the same as the initial navigation.'); |
| |
| }, 'Navigation Ids should exist and are all the same as the initial navigation.'); |
| </script> |
| </body> |