page-check
v3.1.1
Published
Webpage tester based on Puppeteer and Node.js
Maintainers
Readme
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
