puppeteer-screenshot-tester
Small library that allows us to compare screenshots generated by puppeteer in our tests.
Warning
This library is under hevy rewrite to give you more controll over image comparsion, i'll try to make API as similar as it is right now but new version will have some breaking changes :(
Instalation
yarn add --dev puppeteer-screenshot-tester
or
npm install --save-dev puppeteer-screenshot-tester
Usage
require tester library
const ScreenshotTester = require('puppeteer-screenshot-tester')
create test runner with optional config
constructor([threshold = 0][, includeAA = false[, ignoreColors = false[, ignoreRectangles = [] [, errorSettings = Object] ]]])
threshold
<[number]> A threshold value <0,1> default set to 0, max ratio of difference between imagesincludeAA
<[boolean]> should include anti aliasing?ignoreColors
<[boolean]> should ignore colors?ignoreRectangles
<[Array<Array[x, y, width, height]>]> should ignore rectangles? example: [[325,170,100,40], [10,10,200,200]]
errorSettings
<[Object]> change how to display errors (errorType: flat
| movement
| flatDifferenceIntensity
| movementDifferenceIntensity
| diffOnly
):
{
errorColor: {
red: 255,
green: 0,
blue: 255
},
errorType: 'flat',
transparency: 0.7
}
- returns: <[function]> resolves to function
const tester = await ScreenshotTester()
create test runner with optional config
constructor(page[, name = 'test'[, screenshotOptions = {}]])
const result = tester(page)
Examples
const puppeteer = require( 'puppeteer')
const ScreenTest = require('puppeteer-screenshot-tester')
describe('google test', () => {
let originalTimeout
beforeEach(function() {
originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL
jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000
})
afterEach(function() {
jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout
})
it(`check if google exists`, async () => {
const tester = await ScreenTest()
const browser = await puppeteer.launch()
const page = await browser.newPage()
await page.setViewport({width: 1920, height: 1080})
await page.goto('https://www.google.com', { waitUntil: 'networkidle0' })
await page.type('#lst-ib', 'Hello', { delay: 100 });
const result = await tester(page, 'test2')
await browser.close()
expect(result).toBe(true)
})
})