Rename Page's 'consolemessage' event into 'console'

This patch:
- renames 'consolemessage' event into 'console'
- improves on 'console' event documentation

References #39.
This commit is contained in:
Andrey Lushnikov 2017-07-17 20:38:11 -07:00
parent 1a97d8b3c2
commit 2ca08b032b
6 changed files with 25 additions and 14 deletions

View File

@ -13,7 +13,7 @@
* [browser.stdout](#browserstdout) * [browser.stdout](#browserstdout)
* [browser.version()](#browserversion) * [browser.version()](#browserversion)
- [class: Page](#class-page) - [class: Page](#class-page)
* [event: 'consolemessage'](#event-consolemessage) * [event: 'console'](#event-console)
* [event: 'dialog'](#event-dialog) * [event: 'dialog'](#event-dialog)
* [event: 'frameattached'](#event-frameattached) * [event: 'frameattached'](#event-frameattached)
* [event: 'framedetached'](#event-framedetached) * [event: 'framedetached'](#event-framedetached)
@ -205,10 +205,21 @@ browser.newPage().then(async page =>
}); });
``` ```
#### event: 'consolemessage' #### event: 'console'
- <[string]> - <[string]>
Emitted when a page calls one of console API methods, e.g. `console.log`. Emitted when a page calls one of console API methods, e.g. `console.log` or `console.dir`.
If multiple arguments are passed over to the console API call, these arguments are dispatched in an event.
An example of handling `console` event:
```js
page.on('console', (...args) => {
for (let i =0; i < args.length; ++i)
console.log(`${i}: ${args[i]}`);
});
page.evaluate(() => console.log(5, 'hello', {foo: 'bar'}));
```
#### event: 'dialog' #### event: 'dialog'
- <[Dialog]> - <[Dialog]>

View File

@ -21,7 +21,7 @@ var browser = new Browser();
browser.newPage().then(async page => { browser.newPage().then(async page => {
var modernizrPath = path.join(__dirname, '../third_party/phantomjs/examples/modernizr.js'); var modernizrPath = path.join(__dirname, '../third_party/phantomjs/examples/modernizr.js');
await page.injectFile(modernizrPath); await page.injectFile(modernizrPath);
page.on('consolemessage', console.log); page.on('console', console.log);
await page.evaluate(detectFeatures); await page.evaluate(detectFeatures);
browser.close(); browser.close();
}); });

View File

@ -18,7 +18,7 @@ var Browser = require('../lib/Browser');
var browser = new Browser(); var browser = new Browser();
browser.newPage().then(async page => { browser.newPage().then(async page => {
page.on('consolemessage', console.log); page.on('console', console.log);
await page.setInPageCallback('callPhantom', msg => { await page.setInPageCallback('callPhantom', msg => {

View File

@ -224,7 +224,7 @@ class Page extends EventEmitter {
return; return;
} }
let values = await Promise.all(event.args.map(arg => helper.serializeRemoteObject(this._client, arg))); let values = await Promise.all(event.args.map(arg => helper.serializeRemoteObject(this._client, arg)));
this.emit(Page.Events.ConsoleMessage, ...values); this.emit(Page.Events.Console, ...values);
} }
_onDialog(event) { _onDialog(event) {
@ -668,7 +668,7 @@ function convertPrintParameterToInches(parameter) {
} }
Page.Events = { Page.Events = {
ConsoleMessage: 'consolemessage', Console: 'console',
Dialog: 'dialog', Dialog: 'dialog',
// Can'e use just 'error' due to node.js special treatment of error events. // Can'e use just 'error' due to node.js special treatment of error events.
// @see https://nodejs.org/api/events.html#events_error_events // @see https://nodejs.org/api/events.html#events_error_events

View File

@ -62,7 +62,7 @@ class WebPage {
this._pageEvents.on(PageEvents.Response, response => this._onResponseReceived(response)); this._pageEvents.on(PageEvents.Response, response => this._onResponseReceived(response));
this._pageEvents.on(PageEvents.RequestFinished, request => this._onRequestFinished(request)); this._pageEvents.on(PageEvents.RequestFinished, request => this._onRequestFinished(request));
this._pageEvents.on(PageEvents.RequestFailed, event => (this.onResourceError || noop).call(null, event)); this._pageEvents.on(PageEvents.RequestFailed, event => (this.onResourceError || noop).call(null, event));
this._pageEvents.on(PageEvents.ConsoleMessage, (...args) => this._onConsoleMessage(...args)); this._pageEvents.on(PageEvents.Console, (...args) => this._onConsole(...args));
this._pageEvents.on(PageEvents.Confirm, message => this._onConfirm(message)); this._pageEvents.on(PageEvents.Confirm, message => this._onConfirm(message));
this._pageEvents.on(PageEvents.Alert, message => this._onAlert(message)); this._pageEvents.on(PageEvents.Alert, message => this._onAlert(message));
this._pageEvents.on(PageEvents.Dialog, dialog => this._onDialog(dialog)); this._pageEvents.on(PageEvents.Dialog, dialog => this._onDialog(dialog));
@ -84,7 +84,7 @@ class WebPage {
/** /**
* @param {!Array<!Object>} args * @param {!Array<!Object>} args
*/ */
_onConsoleMessage(...args) { _onConsole(...args) {
if (!this.onConsoleMessage) if (!this.onConsoleMessage)
return; return;
const text = args.join(' '); const text = args.join(' ');

View File

@ -226,17 +226,17 @@ describe('Puppeteer', function() {
})); }));
}); });
describe('Page.Events.ConsoleMessage', function() { describe('Page.Events.Console', function() {
it('should work', SX(async function() { it('should work', SX(async function() {
let commandArgs = []; let commandArgs = [];
page.once('consolemessage', (...args) => commandArgs = args); page.once('console', (...args) => commandArgs = args);
page.evaluate(() => console.log(5, 'hello', {foo: 'bar'})); page.evaluate(() => console.log(5, 'hello', {foo: 'bar'}));
await waitForEvents(page, 'consolemessage'); await waitForEvents(page, 'console');
expect(commandArgs).toEqual([5, 'hello', {foo: 'bar'}]); expect(commandArgs).toEqual([5, 'hello', {foo: 'bar'}]);
})); }));
it('should work for different console API calls', SX(async function() { it('should work for different console API calls', SX(async function() {
let messages = []; let messages = [];
page.on('consolemessage', msg => messages.push(msg)); page.on('console', msg => messages.push(msg));
page.evaluate(() => { page.evaluate(() => {
// A pair of time/timeEnd generates only one Console API call. // A pair of time/timeEnd generates only one Console API call.
console.time('calling console.time'); console.time('calling console.time');
@ -247,7 +247,7 @@ describe('Puppeteer', function() {
console.error('calling console.error'); console.error('calling console.error');
}); });
// Wait for 5 events to hit. // Wait for 5 events to hit.
await waitForEvents(page, 'consolemessage', 5); await waitForEvents(page, 'console', 5);
expect(messages[0]).toContain('calling console.time'); expect(messages[0]).toContain('calling console.time');
expect(messages.slice(1)).toEqual([ expect(messages.slice(1)).toEqual([
'calling console.trace', 'calling console.trace',