Files
zn-ai/packages/electron-chrome-extensions/spec/chrome-webNavigation-spec.ts
2025-11-15 22:41:50 +08:00

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)
})
})