screenshot-tester
v0.3.2
Published
Tester for UI regressions
Downloads
2
Readme
screenshot-tester
Take screenshots (= snapshots) of desktop (node) apps (i.e. libui-node) to test for regressions.
Usage:
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:
- Run
node my_example.js
orapp
. - Take a screenshot of the window with the specified title.
- Close the app.
- Compare with or create a new reference screenshot.
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
Reference
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) {};
Parameters
require("screenshot-tester")(...)
outDir
: Optional - The folder in which the screenshots will be saved (see above).raw
: Optional - Set totrue
to run a binary instead of a node script. It is applied to all followingtest()
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 followingtest()
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, PUSH
test(...)
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 OS
Requirements
- macOS: Python 3 and
pip install click pyobjc-framework-Quartz
- Linux: ImageMagick
Bundled projects
- for macOS: https://github.com/mischnic/screenshot-native
- screenshot-cmd for Windows from https://github.com/chuntaro/screenshot-cmd