page-check v3.1.1
Page Check
Webpage tester based on Puppeteer and Node.js
Module runs your webpage, app or banner within virtual browser. While running, it registers next few things:
- javascript errors (including errors inside
onresizehandler) - missing files
- console events (
log,warn, etc.) - requests to a different hosts
Installation
npm install page-checkAPI
PageCheck(input, options)
input
Type: String | Array
options.timeout
Type: Number
Default: 60
Keep checking for this amout of seconds
options.clones
Type: Boolean
Default: false
If set to false, the same errors will be removed from the list
options.filter
Type: Function
This function will be used by Array.filter() to filter final list of errors.
For example we could leave only js errors and external request:
Here is the codes for quick filtering:
| Code | Event |
|---|---|
| 1 | page error |
| 2 | failed request |
| 3 | external request |
| 4 | iframe attached |
| 6 | console.log |
| 7 | console.error |
| 8 | console.warn, console.info ... |
| 9 | dialog, alert ... |
| 10 | not existing page or any else errors |
options.args
Type: Array
Array of arguments that would be passed into puppeteer.launch(args)
options.spoof_list
Type: Array
List of requests that should be replaced. For example, you don't want to wait until some heavy library is downloaded from remote server:
PageCheck(page_url, {
args: [ '--disable-web-security' ],
spoof_list: [
{
rule: 'https://cdnjs.cloudflare.com/ajax/libs/pixi.js/4.8.2/pixi.js',
body: fs.readFileSync('./libs/pixi.js'),
status: 200,
contentType: 'text/plain'
},
]
})Note: set args: [ '--disable-web-security' ] if you have the CORS error
options.screenshot
Type: Boolean
Default: false
options.screenshot.delay
Type: Number
Default: 3
Wait for this number of seconds before taking a screenshot
options.viewport
Type: Object
Default: { width: 1000, height: 600 }
options.headless
Type: Boolean
Default: true
options.devtools
Type: Boolean
Default: false
Usage
const PageCheck = require('page-check');
let results = await PageCheck('http://localhost/page', {
timeout: 15,
filter: err => /[1234]/.test(err.code),
screenshot: {
delay: 5,
path: `./screenshots/${Date.now()}.png`
}
});
console.log(results);Output
{
"screenshot": <Buffer>,
"errors": [
{
"code": 3,
"type": "external request",
"details": "http://domain.com/favicon.ico"
},
{
"code": 6,
"type": "console.log",
"details": "Boop!"
},
{
"code": 7,
"type": "console.error",
"details": "Failed to load resource: the server responded with a status of 404 (Not Found)"
}
]
}Changelog
v3.1.0 (2018-11-18):
- added ability to spoof page requests
v3.0.2 (2018-11-22):
- added 'iframe' error type for attached iframes
v3.0.1 (2018-11-13):
- removed
inputproperty from results data
v3.0.0 (2018-11-11):
inputargument now could be only aString- now you can take a screenshot of the testing page
v2.1.1 (2018-09-21):
- fixed
Unhandled promise rejectionwhen the browser was closing but 'setViewport' keep firing
v2.1.0 (2018-08-30):
inputnow could be an array of links that would be auto queued
v2.0.0 (2018-08-26):
- moved from unmaintained PhantomJS to Puppeteer