UNPKG

@wdio/devtools-service

Version:

A WebdriverIO service that allows you to run Chrome DevTools commands in your tests

24 lines (23 loc) 1.24 kB
/** * Used by _waitForCPUIdle and executed in the context of the page, updates the ____lastLongTask * property on window to the end time of the last long task. */ export default function registerPerformanceObserverInPage() { window.____lastLongTask = window.performance.now(); const observer = new window.PerformanceObserver(entryList => { const entries = entryList.getEntries(); for (const entry of entries) { if (entry.entryType === 'longtask') { const taskEnd = entry.startTime + entry.duration; window.____lastLongTask = Math.max(window.____lastLongTask, taskEnd); } } }); observer.observe({ entryTypes: ['longtask'] }); // HACK: A PerformanceObserver will be GC'd if there are no more references to it, so attach it to // window to ensure we still receive longtask notifications. See https://crbug.com/742530. // For an example test of this behavior see https://gist.github.com/patrickhulce/69d8bed1807e762218994b121d06fea6. // FIXME COMPAT: This hack isn't neccessary as of Chrome 62.0.3176.0 // https://bugs.chromium.org/p/chromium/issues/detail?id=742530#c7 window.____lhPerformanceObserver = observer; }