diff --git a/spec/api-browser-view-spec.ts b/spec/api-browser-view-spec.ts index 93a0f830a0ab..6cf339dd3657 100644 --- a/spec/api-browser-view-spec.ts +++ b/spec/api-browser-view-spec.ts @@ -1,4 +1,4 @@ -import { BrowserView, BrowserWindow, screen, webContents } from 'electron/main'; +import { BrowserView, BrowserWindow, screen, session, webContents } from 'electron/main'; import { expect } from 'chai'; @@ -11,24 +11,29 @@ import { closeWindow } from './lib/window-helpers'; describe('BrowserView module', () => { const fixtures = path.resolve(__dirname, 'fixtures'); + const ses = session.fromPartition(crypto.randomUUID()); let w: BrowserWindow; let view: BrowserView; + const getSessionWebContents = () => + webContents.getAllWebContents().filter(wc => wc.session === ses); + beforeEach(() => { - expect(webContents.getAllWebContents().length).to.equal(0, 'expected no webContents to exist'); + expect(getSessionWebContents().length).to.equal(0, 'expected no webContents to exist'); w = new BrowserWindow({ show: false, width: 400, height: 400, webPreferences: { - backgroundThrottling: false + backgroundThrottling: false, + session: ses } }); }); afterEach(async () => { - if (!w.isDestroyed()) { + if (w && !w.isDestroyed()) { const p = once(w.webContents, 'destroyed'); await closeWindow(w); w = null as any; @@ -42,7 +47,7 @@ describe('BrowserView module', () => { await p; } - expect(webContents.getAllWebContents().length).to.equal(0, 'expected no webContents to exist'); + expect(getSessionWebContents().length).to.equal(0, 'expected no webContents to exist'); }); it('sets the correct class name on the prototype', () => { @@ -50,7 +55,7 @@ describe('BrowserView module', () => { }); it('can be created with an existing webContents', async () => { - const wc = (webContents as typeof ElectronInternal.WebContents).create({ sandbox: true }); + const wc = (webContents as typeof ElectronInternal.WebContents).create({ session: ses, sandbox: true }); await wc.loadURL('about:blank'); view = new BrowserView({ webContents: wc } as any); diff --git a/spec/api-utility-process-spec.ts b/spec/api-utility-process-spec.ts index e27eae06f884..b17a6f70a830 100644 --- a/spec/api-utility-process-spec.ts +++ b/spec/api-utility-process-spec.ts @@ -144,21 +144,36 @@ describe('utilityProcess module', () => { }); describe('app \'child-process-gone\' event', () => { + const waitForCrash = (name: string) => { + return new Promise((resolve) => { + app.on('child-process-gone', function onCrash (_event, details) { + if (details.name === name) { + app.off('child-process-gone', onCrash); + resolve(details); + } + }); + }); + }; + ifit(!isWindows32Bit)('with default serviceName', async () => { + const name = 'Node Utility Process'; + const crashPromise = waitForCrash(name); utilityProcess.fork(path.join(fixturesPath, 'crash.js')); - const [, details] = await once(app, 'child-process-gone') as [any, Electron.Details]; + const details = await crashPromise; expect(details.type).to.equal('Utility'); expect(details.serviceName).to.equal('node.mojom.NodeService'); - expect(details.name).to.equal('Node Utility Process'); + expect(details.name).to.equal(name); expect(details.reason).to.be.oneOf(['crashed', 'abnormal-exit']); }); ifit(!isWindows32Bit)('with custom serviceName', async () => { - utilityProcess.fork(path.join(fixturesPath, 'crash.js'), [], { serviceName: 'Hello World!' }); - const [, details] = await once(app, 'child-process-gone') as [any, Electron.Details]; + const name = crypto.randomUUID(); + const crashPromise = waitForCrash(name); + utilityProcess.fork(path.join(fixturesPath, 'crash.js'), [], { serviceName: name }); + const details = await crashPromise; expect(details.type).to.equal('Utility'); expect(details.serviceName).to.equal('node.mojom.NodeService'); - expect(details.name).to.equal('Hello World!'); + expect(details.name).to.equal(name); expect(details.reason).to.be.oneOf(['crashed', 'abnormal-exit']); }); });