/qa-screenshot-comparator

Generate, save and compare screenshots for any website with any resolution

Primary LanguageJavaScript

QA Screenshot comparator


This handy tool gives us the possibility to generate and compare website screenshots for any resolution possible resolution.

npm version

Requirements

You need to have node version above 8 and bellow 10

Installation

  1. If you want to install the project as standalone application, clone the project and run npm install

  2. If you want to install the project as dependency of your application and use its API, run npm install qa-screenshot-comparator

Usage

Generating screenshots for resolution(s) via CLI

node src/app.js [options]
CLI Options
-h, --help
-v, --version

-u URL, --url
-s SIZE, --size
-f FOLDER, --folder
Examples

Generating screenshots for all resolutions

node src/app.js -u=http://example.com -s=all -f=first_website_folder

Generating screenshots for only for desktop

node src/app.js -u=http://example.com -s=desktop -f=first_website_folder

Generating screenshots for desktop and mobile

node src/app.js -u=http://example.com -s=desktop -s=mobile -f=first_website_folder

API

const {Generator} = require('qa-screenshot-comparator');

let generatorInstance = new Generator({
    url: <Required> [String: website url],
    resolutionName: <Required> [String|Array: resolution(s)], // Available options [ desktop, laptop, tablet, mobile, all ]
    runtime: <Required> [String: The path for the generation of screenshots],
    generateSitemap: <Optional - default: true> [Boolean: whether to generate sitemap for url],
    authParams: <Optional - default: {}> [Object: HTTP basic auth params],
    includeThumbnails: <Optional - default: false> [Boolean: whether to generate thumbnails for each image],
    thumbnailWidth: <Optional - default: 240> [Number: thumnail width in pixels],
    folderName: <Optional - default: automatically generated from url> [String: folder name],
    onUrlFound: function (data) { },
    onUrlFindError: function (data) { },
    onUrlFindFinish: function (data) { },
    onScreenshotGenerationStart: function (data) { },
    onScreenshotGenerate: function (data) { },
    onScreenshotCompare: function (data) { },
    onScreenshotGenerationFinish: function (data) { },
    onScreenshotThumbnailGenerate: function (data) { },
    onScreenshotThumbnailGenerateError: function (data) { }
});
generatorInstance.run();

authParams is an object with this template

let authParams = {
    HTTP_BASIC_AUTH: [Boolean: whether to run authentication],
    HTTP_BASIC_AUTH_USERNAME: [String: auth username],
    HTTP_BASIC_AUTH_PASSWORD: [String: auth password]
};

Here is the width of the generated screenshots for each resolution name

resolutionName pixels
desktop 1440px
laptop 1024px
tablet 768px
mobile 360px
Events Description Response object properties
onUrlFind Triggered on each url find event while generating site map
{
    foundUrlCount: [Number], 
    url: [String]
}
onUrlFindError Triggered on site map url generation error
{
    foundUrlCount: [Number], 
    url: [String],
    errorCode: [String],
    message: [String]
}
onUrlFindFinish Triggered when site map generation is finished
{
    foundUrlCount: [Number]
}
onScreenshotGenerationStart Triggered when screenshot generation starts for specific resolution
{
    foundUrlCount: [Number], 
    startIndex: [Number],
    urlsCount: [Number],
    urls: [Array],
    resolutionName: [String]
}
onScreenshotGenerate Triggered when each screenshot image is generated for specific resolution
{
    currentUrlIndex: [Number], 
    path: [String],
    resolutionName: [String]
}
onScreenshotCompare Triggered when existing screenshot is compared to newly generated image for specific resolution. newImage and stableImage will be only present if comparator found any changes.
{
    currentUrlIndex: [Number],
    url: [String],
    new: [String],
    stable: [String],
    resolutionName: [String],
    folderName: [String],
    stableImage: [String][Optional],
    newImage: [String][Optional]
}
onScreenshotGenerationFinish Triggered when screenshot generation is finished for specific resolution
{
    resolutionName: [String], 
    folderName: [String]
}
onScreenshotThumbnailGenerate Triggered when thumbnail is generated for a specific image
onScreenshotThumbnailGenerateError Triggered when thumbnail generation failed for a specific image