Puppeteer Healthcheck is a tool wrapped over puppeteer to check page and critical asset status'.
Often post deploy we want to check our site/app has been deployed sucessfully. We would want to ensure the web server is responding, critical assets and certain DOM elements exists post deploy.
An example config checking the GitHub login page, checking their hashed css and js and taking screenshots at various sizes.
// healthcheck.config.js
module.exports = {
uri: 'https://github.com/login',
assetRegex: [
'github-(.+)\.js',
'github-(.+)\.css',
],
screenshots: [
{
path: `${__dirname}/desktop.png`,
viewport: {
width: 800,
height: 300
}
},
{
path: `${__dirname}/fullpage.png`,
fullPage: true
},
{
path: `${__dirname}/narrow.png`,
viewport: {
width: 375,
height: 667
}
}
]
}
Results in the following output:
Node requirements:
- v8.9.4
NPM
yarn add global @nathf/puppeteer-healthcheck
# or if you prefer NPM
npm i -g @nathf/puppeteer-healthcheck
Docker
docker pull nathf/puppeteer-healthcheck
Example command with config
puppeteer-healthcheck --config healthcheck.config.js
Valid URI to check
Milliseconds to wait before requesting the URI
List of regex strings to match asset URLs
e.g.
assetRegex: [
'script-(.+)\.js',
'style-(.+)\.css'
]
Authenticate via HTTP or a login page
Authentication object consists of:
type: string
: The type of authentication you wish to perform. Either 'http' or 'page'.uri: ?string
: An optional string to run authentication against, if omitted authentication will run against the base URI.credentials: Object
: An object containing relevent information for each authentication type.username: string
: username for loginpassword: string
: password for login
Note for Page authentication, the keys in the credentials object are the corresponding page elements
Screenshot object consists of:
These options are referenced from the official Puppeteer Docs
path: string
: absolute path to save the screenshottype: string
: Specify screenshot type, can be eitherjpeg
orpng
. Defaults to 'png'.quality: number
: The quality of the image, between 0-100. Not applicable to png images.fullPage: boolean
: When true, takes a screenshot of the full scrollable page. Defaults tofalse
.clip: Object
: An object which specifies clipping region of the page. Should have the following fields:x: number
: x-coordinate of top-left corner of clip areay: number
: y-coordinate of top-left corner of clip areawidth: number
: width of clipping areaheight: number
: height of clipping area
omitBackground: boolean
: Hides default white background and allows capturing screenshots with transparency. Defaults to false.viewport: Object
Referenced from Puppeteer docswidth: number
: page width in pixels.height: number
page height in pixels.deviceScaleFactor: numer
: Specify device scale factor (can be thought of as dpr). Defaults to1
.isMobile: boolean
: Whether themeta
viewport tag is taken into account. Defaults tofalse
.hasTouch: boolean
: Specifies if viewport supports touch events. Defaults tofalse
isLandscape: boolean
: Specifies if viewport is in landscape mode. Defaults tofalse
.