@nesk/puphpeteer
Advanced tools
Comparing version 1.2.0 to 1.3.0
@@ -43,7 +43,12 @@ # Contributing to PuPHPeteer | ||
+ $logPath = 'path/to/your.log'; | ||
+ | ||
+ | ||
+ $logger = new \Monolog\Logger('PuPHPeteer'); | ||
+ $logger->pushHandler(new \Monolog\Handler\StreamHandler($logPath, \Monolog\Logger::DEBUG)); | ||
+ | ||
+ $puppeteer = new Puppeteer(['logger' => $logger]); | ||
+ | ||
+ $puppeteer = new Puppeteer([ | ||
+ 'logger' => $logger, | ||
+ 'log_node_console' => true, | ||
+ 'log_browser_console' => true, | ||
+ ]); | ||
+ | ||
$browser = $puppeteer->launch(); | ||
@@ -57,7 +62,8 @@ $browser->newPage()->goto('https://example.com'); | ||
``` | ||
[2018-06-07 12:41:19] PuPHPeteer.DEBUG: [options] {"read_timeout":35,"logger":{}} [] [] | ||
[2018-06-07 12:41:19] PuPHPeteer.DEBUG: Starting process... [] [] | ||
[2018-06-07 12:41:19] PuPHPeteer.DEBUG: [PID 15547] Process started [] [] | ||
[2018-06-07 12:41:20] PuPHPeteer.DEBUG: [PORT 61118] [sending] {"type":"call","name":"launch","catched":false,"value":[]} [] [] | ||
[2018-06-07 12:41:20] PuPHPeteer.DEBUG: [PORT 61118] [receiving] {"__rialto_resource__":true,"class_name":"Browser","id":"1528375280340.2676"} [] [] | ||
[2018-08-17 10:26:01] PuPHPeteer.INFO: Applying options... {"options":{"read_timeout":30,"log_browser_console":true,"logger":"[object] (Monolog\\Logger: {})","log_node_console":true}} [] | ||
[2018-08-17 10:26:01] PuPHPeteer.DEBUG: Options applied and merged with defaults {"options":{"executable_path":"node","idle_timeout":60,"read_timeout":30,"stop_timeout":3,"logger":"[object] (Monolog\\Logger: {})","log_node_console":true,"debug":false,"log_browser_console":true}} [] | ||
[2018-08-17 10:26:01] PuPHPeteer.INFO: Starting process with command line: 'node' '/Users/johann/Development/puphpeteer/node_modules/@nesk/rialto/src/node-process/serve.js' '/Users/johann/Development/puphpeteer/src/PuppeteerConnectionDelegate.js' '{"idle_timeout":60,"log_node_console":true,"log_browser_console":true}' {"commandline":"'node' '/Users/johann/Development/puphpeteer/node_modules/@nesk/rialto/src/node-process/serve.js' '/Users/johann/Development/puphpeteer/src/PuppeteerConnectionDelegate.js' '{\"idle_timeout\":60,\"log_node_console\":true,\"log_browser_console\":true}'"} [] | ||
[2018-08-17 10:26:01] PuPHPeteer.INFO: Process started with PID 18153 {"pid":18153} [] | ||
[2018-08-17 10:26:01] PuPHPeteer.DEBUG: Sending an instruction to the port 59621... {"pid":18153,"port":59621,"instruction":{"type":"call","name":"launch","catched":false,"value":[]}} [] | ||
[2018-08-17 10:26:01] PuPHPeteer.DEBUG: Received data from the port 59621... {"pid":18153,"port":59621,"data":"[object] (Nesk\\Puphpeteer\\Resources\\Browser: {\"__rialto_resource__\":true,\"class_name\":\"Browser\",\"id\":\"1534501561533.8093\"})"} [] | ||
``` |
@@ -13,2 +13,7 @@ # Changelog | ||
## [1.3.0] - 2018-08-20 | ||
### Added | ||
- Add a `log_browser_console` option to log the output of Browser's console methods (`console.log`, `console.debug`, `console.table`, etc…) to the PHP logger | ||
- Support Puppeteer v1.7 | ||
## [1.2.0] - 2018-07-25 | ||
@@ -66,3 +71,4 @@ ### Added | ||
[Unreleased]: https://github.com/nesk/puphpeteer/compare/1.2.0...HEAD | ||
[Unreleased]: https://github.com/nesk/puphpeteer/compare/1.3.0...HEAD | ||
[1.3.0]: https://github.com/nesk/puphpeteer/compare/1.2.0...1.3.0 | ||
[1.2.0]: https://github.com/nesk/puphpeteer/compare/1.1.0...1.2.0 | ||
@@ -69,0 +75,0 @@ [1.1.0]: https://github.com/nesk/puphpeteer/compare/1.0.0...1.1.0 |
@@ -23,7 +23,9 @@ { | ||
"php": ">=7.1", | ||
"nesk/rialto": "^1.1.0", | ||
"vierbergenlars/php-semver": "^3.0" | ||
"nesk/rialto": "^1.2.0", | ||
"psr/log": "^1.0", | ||
"vierbergenlars/php-semver": "^3.0.2" | ||
}, | ||
"require-dev": { | ||
"codedungeon/phpunit-result-printer": ">=0.6 <1.0", | ||
"monolog/monolog": "^1.23", | ||
"phpunit/phpunit": "^6.5|^7.0", | ||
@@ -30,0 +32,0 @@ "symfony/process": "^4.0" |
{ | ||
"name": "@nesk/puphpeteer", | ||
"version": "1.2.0", | ||
"version": "1.3.0", | ||
"description": "A Puppeteer bridge for PHP, supporting the entire API.", | ||
@@ -25,5 +25,5 @@ "keywords": [ | ||
"dependencies": { | ||
"@nesk/rialto": "^1.1.0", | ||
"puppeteer": "~1.6.0" | ||
"@nesk/rialto": "^1.2.0", | ||
"puppeteer": "~1.7.0" | ||
} | ||
} |
@@ -1,2 +0,2 @@ | ||
# PuPHPeteer | ||
# PuPHPeteer <a href="#support-me"><img src="https://beerpay.io/nesk/puphpeteer/badge.svg" alt="Beerpay" align="right"></a> | ||
@@ -85,6 +85,16 @@ <img src="https://user-images.githubusercontent.com/817508/41925638-6f1b9dde-796d-11e8-8f87-3646f0c89750.png" style="max-width:100%;" width="190px" align="right"> | ||
You can also pass some options to the constructor, see [Rialto's documentation](https://github.com/nesk/rialto/blob/master/docs/api.md#options). | ||
You can also pass some options to the constructor, see [Rialto's documentation](https://github.com/nesk/rialto/blob/master/docs/api.md#options). PuPHPeteer also extends these options: | ||
**Note:** If you use some timeouts higher than 30 seconds in Puppeteer's API, you will have to set a higher value for the `read_timeout` option (default: `35`): | ||
```php | ||
[ | ||
// Logs the output of Browser's console methods (console.log, console.debug, etc...) to the PHP logger | ||
'log_browser_console' => false, | ||
] | ||
``` | ||
<details> | ||
<summary><strong>⏱ Want to use some timeouts higher than 30 seconds in Puppeteer's API?</strong></summary> <br> | ||
If you use some timeouts higher than 30 seconds, you will have to set a higher value for the `read_timeout` option (default: `35`): | ||
```php | ||
@@ -99,2 +109,3 @@ $puppeteer = new Puppeteer([ | ||
``` | ||
</details> | ||
@@ -162,1 +173,7 @@ ### No need to use the `await` keyword | ||
Thanks to [Laravel News](https://laravel-news.com/) for picking the icons and colors of the logo. | ||
## Support me | ||
PuPHPeteer is a project requiring a lot of work (especially with [Rialto](https://github.com/nesk/rialto)). While I'm happy to work on it on my free time, I also enjoy to drink a couple of beers sometimes with my friends. If you want to support development, buy me a beer at [BeerPay](https://beerpay.io/nesk/puphpeteer). 🙏 | ||
[![Beerpay](https://beerpay.io/nesk/puphpeteer/badge.svg)](https://beerpay.io/nesk/puphpeteer) |
@@ -0,1 +1,3 @@ | ||
'use strict'; | ||
function output(value) { | ||
@@ -2,0 +4,0 @@ process.stdout.write(JSON.stringify(value)); |
'use strict'; | ||
const puppeteer = require('puppeteer'), | ||
{Page} = require('puppeteer/lib/Page'), | ||
{Browser} = require('puppeteer/lib/Browser'), | ||
{ConnectionDelegate} = require('@nesk/rialto'); | ||
{ConnectionDelegate} = require('@nesk/rialto'), | ||
Logger = require('@nesk/rialto/src/node-process/Logger'), | ||
ConsoleInterceptor = require('@nesk/rialto/src/node-process/NodeInterceptors/ConsoleInterceptor'), | ||
StandardStreamsInterceptor = require('@nesk/rialto/src/node-process/NodeInterceptors/StandardStreamsInterceptor'); | ||
@@ -10,8 +14,11 @@ /** | ||
*/ | ||
class PuppeteerConnectionDelegate extends ConnectionDelegate { | ||
class PuppeteerConnectionDelegate extends ConnectionDelegate | ||
{ | ||
/** | ||
* Constructor. | ||
* | ||
* @param {Object} options | ||
*/ | ||
constructor() { | ||
super(); | ||
constructor(options) { | ||
super(options); | ||
@@ -27,4 +34,2 @@ this.browsers = new Set; | ||
async handleInstruction(instruction, responseHandler, errorHandler) { | ||
const instructionName = instruction.name(); | ||
instruction.setDefaultResource(puppeteer); | ||
@@ -48,2 +53,6 @@ | ||
if (this.options.log_browser_console === true && value instanceof Page) { | ||
value.on('console', this.logConsoleMessage); | ||
} | ||
responseHandler(value); | ||
@@ -53,2 +62,26 @@ } | ||
/** | ||
* Log the console message. | ||
* | ||
* @param {ConsoleMessage} consoleMessage | ||
*/ | ||
async logConsoleMessage(consoleMessage) { | ||
const type = consoleMessage.type(); | ||
if (!ConsoleInterceptor.typeIsSupported(type)) { | ||
return; | ||
} | ||
const level = ConsoleInterceptor.getLevelFromType(type); | ||
const args = await Promise.all(consoleMessage.args().map(arg => arg.jsonValue())); | ||
StandardStreamsInterceptor.startInterceptingStrings(message => { | ||
Logger.log('Browser', level, ConsoleInterceptor.formatMessage(message)); | ||
}); | ||
ConsoleInterceptor.originalConsole[type](...args); | ||
StandardStreamsInterceptor.stopInterceptingStrings(); | ||
} | ||
/** | ||
* Listen for process signal events. | ||
@@ -55,0 +88,0 @@ * |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
42591
46
182
177
+ Addedpuppeteer@1.7.0(transitive)
- Removedpuppeteer@1.6.2(transitive)
Updated@nesk/rialto@^1.2.0
Updatedpuppeteer@~1.7.0