fix(pipe): dispatch "disconnected" event when browser is terminated (#3472)

This commit is contained in:
Andrey Lushnikov 2018-10-31 16:31:29 -07:00 committed by GitHub
parent 9800b2c3c2
commit 3dd5c28f90
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 1 deletions

View File

@ -27,7 +27,11 @@ class PipeTransport {
this._pipeWrite = pipeWrite;
this._pendingMessage = '';
this._eventListeners = [
helper.addEventListener(pipeRead, 'data', buffer => this._dispatch(buffer))
helper.addEventListener(pipeRead, 'data', buffer => this._dispatch(buffer)),
helper.addEventListener(pipeRead, 'close', () => {
if (this.onclose)
this.onclose.call(null);
})
];
this.onmessage = null;
this.onclose = null;

View File

@ -217,6 +217,14 @@ module.exports.addTests = function({testRunner, expect, defaultBrowserOptions})
await page.close();
await browser.close();
});
it('should fire "disconnected" when closing with pipe', async() => {
const options = Object.assign({pipe: true}, defaultBrowserOptions);
const browser = await puppeteer.launch(options);
const disconnectedEventPromise = new Promise(resolve => browser.once('disconnected', resolve));
// Emulate user exiting browser.
browser.process().kill();
await disconnectedEventPromise;
});
it('should work with no default arguments', async() => {
const options = Object.assign({}, defaultBrowserOptions);
options.ignoreDefaultArgs = true;