Skip to content

Commit

Permalink
feat(Page): page 'close' event (#2232)
Browse files Browse the repository at this point in the history
This patch adds 'page.close' event.

References #952.
  • Loading branch information
JoelEinbinder authored and aslushnikov committed Mar 28, 2018
1 parent 4748196 commit d46e157
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 0 deletions.
5 changes: 5 additions & 0 deletions docs/api.md
Expand Up @@ -39,6 +39,7 @@
* [browser.version()](#browserversion)
* [browser.wsEndpoint()](#browserwsendpoint)
- [class: Page](#class-page)
* [event: 'close'](#event-close)
* [event: 'console'](#event-console)
* [event: 'dialog'](#event-dialog)
* [event: 'domcontentloaded'](#event-domcontentloaded)
Expand Down Expand Up @@ -520,6 +521,10 @@ page.on('request', logRequest);
page.removeListener('request', logRequest);
```

#### event: 'close'

Emitted when the page closes.

#### event: 'console'
- <[ConsoleMessage]>

Expand Down
3 changes: 3 additions & 0 deletions lib/Page.js
Expand Up @@ -103,6 +103,8 @@ class Page extends EventEmitter {
client.on('Security.certificateError', event => this._onCertificateError(event));
client.on('Inspector.targetCrashed', event => this._onTargetCrashed());
client.on('Performance.metrics', event => this._emitMetrics(event));

this._target._isClosedPromise.then(() => this.emit(Page.Events.Close));
}

/**
Expand Down Expand Up @@ -968,6 +970,7 @@ function convertPrintParameterToInches(parameter) {
}

Page.Events = {
Close: 'close',
Console: 'console',
Dialog: 'dialog',
DOMContentLoaded: 'domcontentloaded',
Expand Down
16 changes: 16 additions & 0 deletions test/page.spec.js
Expand Up @@ -2397,5 +2397,21 @@ module.exports.addTests = function({testRunner, expect, defaultBrowserOptions, p
});
});
});
describe('Page.Events.Close', function() {
it('should work with window.close', async function({ page, browser, server }) {
const newPagePromise = new Promise(fulfill => browser.once('targetcreated', target => fulfill(target.page())));
await page.evaluate(() => window['newPage'] = window.open('about:blank'));
const newPage = await newPagePromise;
const closedPromise = new Promise(x => newPage.on('close', x));
await page.evaluate(() => window['newPage'].close());
await closedPromise;
});
it('should work with page.close', async function({ page, browser, server }) {
const newPage = await browser.newPage();
const closedPromise = new Promise(x => newPage.on('close', x));
await newPage.close();
await closedPromise;
});
});
});
};

0 comments on commit d46e157

Please sign in to comment.