@@ -3,12 +3,22 @@ import { app, BrowserWindow } from 'electron'
33import { emittedOnce } from './events-helpers'
44
55import { useExtensionBrowser , useServer } from './hooks'
6+ import { ChromeExtensionImpl } from '../dist/types/browser/impl'
67
78describe ( '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} )
0 commit comments