Skip to content

Commit 1135fdd

Browse files
committed
test: tabs.onUpdated
1 parent 2063067 commit 1135fdd

File tree

2 files changed

+36
-0
lines changed

2 files changed

+36
-0
lines changed

packages/electron-chrome-extensions/spec/chrome-tabs-spec.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,22 @@ import { app, BrowserWindow } from 'electron'
33
import { emittedOnce } from './events-helpers'
44

55
import { useExtensionBrowser, useServer } from './hooks'
6+
import { ChromeExtensionImpl } from '../dist/types/browser/impl'
67

78
describe('chrome.tabs', () => {
9+
let assignTabDetails: ChromeExtensionImpl['assignTabDetails']
10+
811
const server = useServer()
912
const browser = useExtensionBrowser({
1013
url: server.getUrl,
1114
extensionName: 'rpc',
15+
assignTabDetails(details, tab) {
16+
assignTabDetails?.(details, tab)
17+
},
18+
})
19+
20+
afterEach(() => {
21+
assignTabDetails = undefined
1222
})
1323

1424
describe('get()', () => {
@@ -265,4 +275,25 @@ describe('chrome.tabs', () => {
265275
expect(tabDetails.url).to.equal(secondTab.getURL())
266276
})
267277
})
278+
279+
describe('onUpdated', () => {
280+
it('emits on "tab-updated" event', async () => {
281+
const p = browser.crx.eventOnce('tabs.onUpdated')
282+
283+
// Wait for tabs.onUpdated listener to be set
284+
await new Promise((resolve) => setTimeout(resolve, 10))
285+
286+
assignTabDetails = (details) => {
287+
details.discarded = true
288+
}
289+
290+
browser.webContents.emit('tab-updated')
291+
292+
const [_tabId, changeInfo, _tabDetails] = await p
293+
expect(changeInfo).to.be.an('object')
294+
expect(Object.keys(changeInfo)).to.have.lengthOf(1)
295+
expect(changeInfo).to.haveOwnProperty('discarded')
296+
expect(changeInfo.discarded).to.equal(true)
297+
})
298+
})
268299
})

packages/electron-chrome-extensions/spec/hooks.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { AddressInfo } from 'net'
55
import { ElectronChromeExtensions } from '../'
66
import { emittedOnce } from './events-helpers'
77
import { addCrxPreload, createCrxSession, waitForBackgroundScriptEvaluated } from './crx-helpers'
8+
import { ChromeExtensionImpl } from '../dist/types/browser/impl'
89

910
export const useServer = () => {
1011
const emptyPage = `<!DOCTYPE html>
@@ -49,6 +50,7 @@ export const useExtensionBrowser = (opts: {
4950
file?: string
5051
extensionName: string
5152
openDevTools?: boolean
53+
assignTabDetails?: ChromeExtensionImpl['assignTabDetails']
5254
}) => {
5355
let w: Electron.BrowserWindow
5456
let extensions: ElectronChromeExtensions
@@ -72,6 +74,9 @@ export const useExtensionBrowser = (opts: {
7274
if (details.url) await tab.loadURL(details.url)
7375
return [tab, w!]
7476
},
77+
assignTabDetails(details, tab) {
78+
opts.assignTabDetails?.(details, tab)
79+
},
7580
})
7681

7782
extension = await customSession.loadExtension(path.join(fixtures, opts.extensionName))

0 commit comments

Comments
 (0)