https://github.com/mischnic/screenshot-tester
A node testing library for comparing GUI app screenshot
https://github.com/mischnic/screenshot-tester
node nodejs test testing testing-tools ui
Last synced: 2 months ago
JSON representation
A node testing library for comparing GUI app screenshot
- Host: GitHub
- URL: https://github.com/mischnic/screenshot-tester
- Owner: mischnic
- License: mit
- Created: 2018-04-25T15:12:18.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2020-07-17T09:32:12.000Z (over 5 years ago)
- Last Synced: 2025-09-23T05:57:44.112Z (4 months ago)
- Topics: node, nodejs, test, testing, testing-tools, ui
- Language: JavaScript
- Homepage:
- Size: 4.09 MB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# screenshot-tester
Take screenshots (= snapshots) of desktop (node) apps (i.e. [libui-node](https://github.com/parro-it/libui-node)) to test for regressions.

## Usage:
```js
const test = require("screenshot-tester")();
(async function(){
await test("my_example.js", "The Window Title");
})();
```
or for native apps:
```js
const test = require("screenshot-tester")({raw: true});
(async function(){
await test("app", "The Window Title");
})();
```
This will:
- Run `node my_example.js` or `app`.
- 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
```js
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 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, 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](https://github.com/mischnic/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 tests
- `osAppend`: 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