emoji-picker-element/test/benchmark/utils.js

32 lines
1.1 KiB
JavaScript

export const raf = () => new Promise(resolve => requestAnimationFrame(resolve))
export const postRaf = () => new Promise(resolve => requestAnimationFrame(() => setTimeout(resolve)))
export const waitForElementWithId = async (root, id) => {
while (!root.getElementById(id)) {
await raf()
}
}
export const waitForPickerInitialLoad = () => {
return new Promise((resolve, reject) => {
const observer = new PerformanceObserver(entries => {
for (const entry of entries.getEntries()) {
if (entry.name === 'initialLoad') {
// test to make sure the picker loaded with no errors
const hasErrors = document.querySelector('emoji-picker') && document.querySelector('emoji-picker')
.shadowRoot.querySelector('.message:not(.gone)')
if (hasErrors) {
const err = new Error('picker is showing an error message')
console.error(err)
reject(err)
} else {
resolve(entry)
}
observer.disconnect()
}
}
})
observer.observe({ entryTypes: ['measure'] })
})
}