Socket
Socket
Sign inDemoInstall

puppeteer-screenshot-tester

Package Overview
Dependencies
Maintainers
1
Versions
17
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

puppeteer-screenshot-tester - npm Package Compare versions

Comparing version 1.4.0 to 1.5.0

11

package.json
{
"name": "puppeteer-screenshot-tester",
"version": "1.4.0",
"version": "1.5.0",
"description": "Small library that allows us to compare screenshots generated by puppeteer in our tests",

@@ -19,3 +19,3 @@ "main": "src/index.js",

"engines": {
"node": ">=8.0.0"
"node": ">=12.0.0"
},

@@ -36,5 +36,6 @@ "author": "Kemal Erdem",

"fs": "^0.0.1-security",
"nodejs-resemble": "^0.3.0",
"nodejs-resemble": "^0.4.1",
"parent-module": "^2.0.0",
"path": "^0.12.7"
"path": "^0.12.7",
"sharp": "^0.29.2"
},

@@ -44,4 +45,4 @@ "devDependencies": {

"jest": "^26.6.3",
"puppeteer": "^8.0.0"
"puppeteer": "^11.0.0"
}
}
puppeteer-screenshot-tester
---------------------------
[![node](https://img.shields.io/badge/node-8+-brightgreen.svg)]()
[![yarn](https://img.shields.io/badge/npm-orange.svg)](https://www.npmjs.com/package/puppeteer-screenshot-tester)
<p align="center">
<a href="https://nodejs.org/docs/latest-v12.x/api/index.html"><img src="https://img.shields.io/badge/node-12+-brightgreen.svg"></a>
<a href="https://www.npmjs.com/package/puppeteer-screenshot-tester"><img src="https://img.shields.io/npm/v/puppeteer-screenshot-tester.svg"></a>
</p>

@@ -39,3 +41,3 @@ Small library that allows us to compare screenshots generated by puppeteer in our tests.

const tester = await ScreenshotTester(
[threshold = 0][, includeAA = false[, ignoreColors = false[, matchingBox = { ignoreRectangles = [], includeRectangle = [] } [, errorSettings = Object]]]]
[threshold = 0][, includeAA = false[, ignoreColors = false[, matchingBox = { ignoreRectangles = [], includeRectangle = [] } [, errorSettings = Object [, outputSettings = Object]]]]]
)

@@ -62,2 +64,9 @@ ```

```
- `outputSettings` <[Object]> change the output image settings:
```
{
forceExt: 'jpeg' | 'png' | 'webp' | null,
compressionLevel: 8 // 0-9 for .png, 0-100 otherwise
}
```
- returns: <[function]> resolves to function

@@ -114,3 +123,3 @@

transparency: 0.5
})
}, { compressionLevel: 8 })

@@ -117,0 +126,0 @@ // setting up puppeteer

@@ -5,3 +5,7 @@ const resemble = require('nodejs-resemble');

const path = require('path');
const sharp = require('sharp');
const DEFAULT_COMPRESSION = 85;
const DEFAULT_PNG_COMPRESSION = 8;
// currying everywhere, that allows us to create one setup and then use tester without copying config each time

@@ -24,2 +28,6 @@ const ScreenTestFactory = function(

transparency: 0.7
},
outputSettings = {
forceExt: null,
compressionLevel: null
}) {

@@ -40,3 +48,3 @@ if(Array.isArray(matchingBox)) {

let saveFolder = folderPath;
let ext = '.png';
let ext = screenshotOptions.type ? `.${screenshotOptions.type}` : '.png';
if(screenshotOptions.path != null) {

@@ -84,9 +92,33 @@ const puppeteerExt = path.extname(screenshotOptions.path);

// save diff to test folder with '-diff' postfix
data.getDiffImage().pack().pipe(fs.createWriteStream(`${saveFolder}/${name}-diff${ext}`));
const storeExt = outputSettings.forceExt != null ? outputSettings.forceExt : ext.substring(ext.lastIndexOf(".")+1);
const extFormatter = {
'jpeg': () => sharp().jpeg({ quality: outputSettings.compressionLevel || DEFAULT_COMPRESSION }),
'jpg': () => sharp().jpeg({ quality: outputSettings.compressionLevel || DEFAULT_COMPRESSION }),
'png': () => sharp().png({ compressionLevel: outputSettings.compressionLevel | DEFAULT_PNG_COMPRESSION }),
'webp': () => sharp().webp({ quality: outputSettings.compressionLevel || DEFAULT_COMPRESSION })
}
data.getDiffImage().pack()
.pipe(extFormatter[storeExt]())
.pipe(fs.createWriteStream(`${saveFolder}/${name}-diff${ext}`));
// optionally save the new image to the test directory
if (screenshotOptions.saveNewImageOnError) {
fs.writeFileSync(`${saveFolder}/${name}-new${ext}`, screenShot);
} else if (screenshotOptions.overwriteImageOnChange) {
fs.writeFileSync(`${saveFolder}/${name}${ext}`, screenShot);
if (screenshotOptions.saveNewImageOnError || screenshotOptions.overwriteImageOnChange) {
const newFilePath = screenshotOptions.overwriteImageOnChange ? `${saveFolder}/${name}${ext}` : `${saveFolder}/${name}-new${ext}`;
switch (storeExt) {
case 'jpeg':
case 'jpg':
sharp(screenShot)
.jpeg({quality: outputSettings.compressionLevel || DEFAULT_COMPRESSION})
.toFile(newFilePath);
break;
case 'webp':
sharp(screenShot)
.webp({quality: outputSettings.compressionLevel || DEFAULT_COMPRESSION})
.toFile(newFilePath);
break;
default:
sharp(screenShot)
.png({quality: outputSettings.compressionLevel || DEFAULT_PNG_COMPRESSION})
.toFile(newFilePath);
}
}

@@ -103,3 +135,21 @@

// if there is no old image we cannot compare two images so just write existing screenshot as default image
fs.writeFileSync(`${saveFolder}/${name}${ext}`, screenShot);
// fs.writeFileSync(`${saveFolder}/${name}${ext}`, screenShot);
const storeExt = outputSettings.forceExt != null ? outputSettings.forceExt : ext.substring(ext.lastIndexOf(".")+1);
switch (storeExt) {
case 'jpeg':
case 'jpg':
await sharp(screenShot)
.jpeg({ quality: outputSettings.compressionLevel || DEFAULT_COMPRESSION })
.toFile(`${saveFolder}/${name}${ext}`);
break;
case 'webp':
await sharp(screenShot)
.webp({ quality: outputSettings.compressionLevel || DEFAULT_COMPRESSION })
.toFile(`${saveFolder}/${name}${ext}`);
break;
default:
await sharp(screenShot)
.png({ quality: outputSettings.compressionLevel || DEFAULT_PNG_COMPRESSION })
.toFile(`${saveFolder}/${name}${ext}`);
}
console.log('There was nothing to compare, current screens saved as default');

@@ -106,0 +156,0 @@ return true;

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc