41 lines
1.2 KiB
TypeScript
41 lines
1.2 KiB
TypeScript
import { expect } from 'chai'
|
|
import { ipcMain } from 'electron'
|
|
|
|
import { useExtensionBrowser, useServer } from './hooks'
|
|
|
|
describe('chrome.webNavigation', () => {
|
|
const server = useServer()
|
|
const browser = useExtensionBrowser({ url: server.getUrl, extensionName: 'chrome-webNavigation' })
|
|
|
|
// TODO: for some reason 'onCommitted' will sometimes not arrive
|
|
it.skip('emits events in the correct order', async () => {
|
|
const expectedEventLog = [
|
|
'onBeforeNavigate',
|
|
'onCommitted',
|
|
'onDOMContentLoaded',
|
|
'onCompleted',
|
|
]
|
|
|
|
const eventsPromise = new Promise((resolve) => {
|
|
const eventLog: string[] = []
|
|
ipcMain.on('logEvent', (e, eventName) => {
|
|
if (eventLog.length === 0 && eventName !== 'onBeforeNavigate') {
|
|
// ignore events that come in late from initial load
|
|
return
|
|
}
|
|
|
|
eventLog.push(eventName)
|
|
|
|
if (eventLog.length === expectedEventLog.length) {
|
|
resolve(eventLog)
|
|
}
|
|
})
|
|
})
|
|
|
|
await browser.window.webContents.loadURL(`${server.getUrl()}`)
|
|
|
|
const eventLog = await eventsPromise
|
|
expect(eventLog).to.deep.equal(expectedEventLog)
|
|
})
|
|
})
|