
Security News
Meet Socket at Black Hat Europe and BSides London 2025
Socket is heading to London! Stop by our booth or schedule a meeting to see what we've been working on.
screenshot-tester
Advanced tools
Take screenshots (= snapshots) of desktop (node) apps (i.e. libui-node) to test for regressions.

const test = require("screenshot-tester")();
(async function(){
await test("my_example.js", "The Window Title");
})();
or for native apps:
const test = require("screenshot-tester")({raw: true});
(async function(){
await test("app", "The Window Title");
})();
This will:
node my_example.js or app.A failed test will generate a diff file, hightlighting the differing areas in red:
─ outDir ('.')
├─ reference
│ └─ my_example.js.png
└─ tmp
├─ my_example.js.png
└─ my_example.js_diff.png
const test = require("screenshot-tester")({
outDir = ".",
raw = false,
interactive = false,
delay = 0,
accuracy = "0.01%",
logger = require("screenshot-tester").defaultLogger
});
async function test(file, title, {delay, raw, delta = 20}){};
function test.generateHTML(){};
async function test.pushToServer(host, repoId, issue, onlyFailed, osAppend) {};
require("screenshot-tester")(...)outDir: Optional - The folder in which the screenshots will be saved (see above).raw: Optional - Set to true to run a binary instead of a node script. It is applied to all following test() calls.interactive: Optional - Whether to prompt the user if the reference image should be updated if a test failed.delay: Optional - Additional delay after starting the application (in ms). It is applied to all following test() calls.accuracy: Optional - The threshold (500 or "500" => 500px, "0.01%" => 0.01%)logger: Optional - A function to call for logging: function(type, file, error){}. Types: PASSED, FAILED, MISSING, ERROR, REPORT, OS, RETRY, PUSHtest(...)file: The node script/binary to test (or an array to pass arguments).title: The title of the window to be captured.delay: Optional - As above, but only for this call.raw: Optional - As above, but only for this call.delta: Optional - How insensitive the color comparison is.accuracy: Optional - As above, but only for this call.test.generateHTML()This will generate a HTML report (see example image) at ${outDir}/report.html.
test.pushToServer(...)Send the result this test to a screenshot-tester-server instance.
host: The domain of the server (e.g. https://example.com)repoId: The GitHub repo of the current pull request(e.g. owner/repo-name)issue: The PR number (e.g. 2)onlyFailed: Whether to push only failed testsosAppend: String to append to the reported OSpip install click pyobjc-framework-QuartzFAQs
Tester for UI regressions
The npm package screenshot-tester receives a total of 2 weekly downloads. As such, screenshot-tester popularity was classified as not popular.
We found that screenshot-tester demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Socket is heading to London! Stop by our booth or schedule a meeting to see what we've been working on.

Security News
OWASP’s 2025 Top 10 introduces Software Supply Chain Failures as a new category, reflecting rising concern over dependency and build system risks.

Research
/Security News
Socket researchers discovered nine malicious NuGet packages that use time-delayed payloads to crash applications and corrupt industrial control systems.