From fbf633d8a760ef7de3d758221ccce841abee93c9 Mon Sep 17 00:00:00 2001 From: Mike Engel Date: Wed, 29 Jul 2015 15:37:15 -0600 Subject: [PATCH] stranger 1.0.0 --- .gitignore | 5 + LICENSE.md | 13 ++ README.md | 174 ++++++++++++++++++++ api.html | 253 ++++++++++++++++++++++++++++ bin/cmd.js | 43 +++++ bin/configOptions.txt | 39 +++++ bin/usage.txt | 11 ++ examples.html | 177 ++++++++++++++++++++ index.html | 118 +++++++++++++ package.json | 39 +++++ site/css/site.css | 238 +++++++++++++++++++++++++++ site/img/github-logo.svg | 9 + site/img/large-compare.png | Bin 0 -> 36738 bytes site/img/link-icon.svg | 9 + site/img/medium-compare.png | Bin 0 -> 43134 bytes site/img/small-compare.png | Bin 0 -> 37648 bytes site/img/xlarge-compare.png | Bin 0 -> 61329 bytes site/js/picturefill.min.js | 5 + stranger.js | 319 ++++++++++++++++++++++++++++++++++++ test/cli.js | 296 +++++++++++++++++++++++++++++++++ test/index.js | 2 + test/lib/basic.json | 17 ++ test/lib/centered.html | 24 +++ test/lib/diffable.json | 17 ++ test/lib/dynamic.html | 32 ++++ test/lib/left.html | 24 +++ test/lib/mismatch.json | 22 +++ test/stranger.js | 101 ++++++++++++ 28 files changed, 1987 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE.md create mode 100644 README.md create mode 100644 api.html create mode 100755 bin/cmd.js create mode 100644 bin/configOptions.txt create mode 100644 bin/usage.txt create mode 100644 examples.html create mode 100644 index.html create mode 100644 package.json create mode 100644 site/css/site.css create mode 100644 site/img/github-logo.svg create mode 100644 site/img/large-compare.png create mode 100644 site/img/link-icon.svg create mode 100644 site/img/medium-compare.png create mode 100644 site/img/small-compare.png create mode 100644 site/img/xlarge-compare.png create mode 100644 site/js/picturefill.min.js create mode 100644 stranger.js create mode 100644 test/cli.js create mode 100644 test/index.js create mode 100644 test/lib/basic.json create mode 100644 test/lib/centered.html create mode 100644 test/lib/diffable.json create mode 100644 test/lib/dynamic.html create mode 100644 test/lib/left.html create mode 100644 test/lib/mismatch.json create mode 100644 test/stranger.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..dfcac0a --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +Thumbs.db +.DS_Store +node_modules +examples +test/img diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..e015ba7 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,13 @@ +Copyright 2015 Datu Health, Inc + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/README.md b/README.md new file mode 100644 index 0000000..43ac16a --- /dev/null +++ b/README.md @@ -0,0 +1,174 @@ +stranger +======== + +stranger is a visual testing framework to catch and report changes to the rendered layout of your pages. It runs with node.js and selenium. + +Inspired by [@jessicard](https://twitter.com/jessicard)'s RailsConf [talk](http://confreaks.tv/videos/railsconf2015-implementing-a-visual-css-testing-framework) on implementing a CSS testing framework, this is a somewhat similar solution but for node. You can run stranger to compare the current state of your site against a previously generated set of images. It uses configuration files, so you can run tests on different screen sizes, different browsers, different urls, etc. + +For better or for worse (we think better), stranger tries to stay as unopinionated as possible. It has a nice set of defaults which can easily be overwritten. As it's able to be used through the command line or programmatically, it should be easy to use when running tests. It should also be pretty extensible. + +## In this readme + +[installation](#installation) +[example](#example) +[cli](#cli) +[configuration](#configuration) +[api](#api) +[gotchas](#gotchas) +[contributing](#contributing) +[license](LICENSE.md) +[todo](#todo) + +# installation + +```shell +npm install -g stranger +``` + +# example + +Begin by creating a configuration file. It should be valid JSON and contain the allowed [options](#configuration) + +```javascript +{ + "baseDir": "./test/desktop/master", + "compareDir": "./test/desktop/branch", + "diffDir": "./test/desktop/diff", + "browser": "firefox", + "tests": [ + { + "url": "http://localhost/home", + "name": "Home" + }, + { + "url": "http://localhost/about", + }, + { + "url": "./static/500.html", + "local": true, + "name": "500-page" + } + ] +} +``` + +Then, from the command line +```shell +# To generate the initial images +stranger --generate --config ./basic.json + +# To compare a set of images +stranger --config ./basic.json +``` + +Or programmatically +```javascript +var stranger = require('stranger') +var config = {...} + +stranger(config, true, function (results) { + // The results var is an object with a lot of cool deets. Check it out! +}) +``` + +# cli + +``` +Usage: stranger {OPTIONS} + +Options: + + --config, -c The configuration file to use. + For an example config, type `stranger --help config` + +--generate, -g Whether to generate the base files or not. + + --help, -h Show this message +``` + +# configuration + +``` +Configuration options: + + baseDir: string The path for the base images to be placed + + compareDir: string The path for the comparison images to be placed + + diffDir: string The path for any diff images to be placed + + [browser]: string The browser to test with. Can be firefox, + chrome, ie, safari or opera. Defaults to firefox + + [browserOptions]: object The options to configure the browser window + + browserOptions.width: number The width of the browser. Defaults to 1024 + +browserOptions.height: number The height of the browser. Defaults to 1024 + + [chromeOptions]: object The chrome options for selenium. + See: https://goo.gl/ZoCztN + + [firefoxOptions]: object The firefox options for selenium. + See: https://goo.gl/74oFrD + + [ieOptions]: object The ie options for selenium + See: https://goo.gl/3zmhPW + + [operaOptions]: object The opera options for selenium + See: https://goo.gl/QKQHx5 + + [safariOptions]: object The safari options for selenium + See: https://goo.gl/DRK1oz + + tests: array The test objects that stranger will + test against + + test.url: string The url to point the browser to + + [test.name]: string The filename to use for the screenshot. Optional + +``` + +# api + +### **Stranger(config, generate, callback)** +**config** +A json file that tells stranger how to run and where to place images + +**generate** +A boolean denoting whether or not to generate the base images + +**callback** +A function to run once stranger has finished. It passes a results object with a lot of useful details + +# gotchas + +* You must have imagemagick installed. You can grab it from [brew](https://brew.sh) if you're on os x. +* The use of browsers aside from firefox require the webdriver. Check [brew](https://brew.sh) for the chrome driver, [selenium drivers](https://selenium-release.storage.googleapis.com/index.html) for the safari driver, and [opera releases](https://github.com/operasoftware/operachromiumdriver/releases) for the opera driver. +* As of Safari v8, Chrome v43, Opera v27, Firefox is the only browser that allows full page screenshots. Keep that in mind. +* If using safari, make sure your URL specifies the protocol (file://, https://, etc), otherwise, safari will timeout. +* If multiple browser support is needed, use different configs. +* Comparing images created from different monitors can cause diffs. +* As of right now, it can only capture static pages. No hover states or anything like that! + +# contributing + +This project follows a couple of different standards. + +* For git, we're using the [github flow](https://guides.github.com/introduction/flow/index.html) model. +* For writing javascript we're using the [js-standard](https://github.com/feross/standard) styleguide from [feross](https://github.com/feross). + +When making contributions, add passing tests along with your PR. + +# license + +[Apache 2.0](LICENSE.md) + +# todo + +* Add multiple support for browsers within the same execution (can be done with multiple configs) +* Add multiple sizes support for browsers to test against +* Add support to define a prep function to run before it takes the screenshot (click a button, fill in a form, etc) +* Project website +* Remake .git and push to github.com diff --git a/api.html b/api.html new file mode 100644 index 0000000..2680ecb --- /dev/null +++ b/api.html @@ -0,0 +1,253 @@ + + + + + + + + + + + api — stranger + + + + + + Link icon + + + + +
+

api

+

stranger provides a simple api for configuration, the cli tool, and for programmatic usage.

+

+ + + + + Configuration

+
+
+ + + + + baseDir
+
Required string. This is the path where the base set of images should be saved to.
+
+ + + + + compareDir
+
Required string. This is the path where the set of images to be compared should be saved to.
+
+ + + + + diffDir
+
Required string. This is the path where any diff images should be saved to.
+
+ + + + + browser
+
Optional string. The browser to be used for screenshots.Can be chrome, firefox, safari, ie, or opera. Defaults to firefox.
+
+ + + + + browserOptions
+
Optional object. Options to be set in here configure the viewport of the browser taking screenshots.
+
+ + + + + browserOptions.width
+
Optional number. The width of the viewport in pixels. Defaults to 1024.
+
+ + + + + browserOptions.height
+
Optional number. The height of the viewport in pixels. Defaults to 768.
+
+ + + + + chromeOptions
+
Optional object. Refer to the selenium docs for details.
+
+ + + + + firefoxOptions
+
Optional object. Refer to the selenium docs for details.
+
+ + + + + ieOptions
+
Optional object. Refer to the selenium docs for details.
+
+ + + + + operaOptions
+
Optional object. Refer to the selenium docs for details
+
+ + + + + safariOptions
+
Optional object. Refer to the selenium docs for details
+
+ + + + + tests
+
Required array of test objects. This list of tests produces the screenshots and determine which images to compare.
+
+ + + + + test.url
+
Required string. The URL to take the screenshot of. If this is a local file, either add the file:// protocol, or set local to true.
+
+ + + + + test.name
+
Optional string. The filename for the screenshot. If missing, the last part of the path name will be used.
+
+ + + + + test.local
+
Optional boolean. If set to true, stranger forces the file:// protocol. Defaults to false.
+
+

+ + + + + CLI

+
$ stranger [options]
+
+
+ + + + + --config, -c
+
Required path. The path to the configuration file to use.
+
+ + + + + --generate, -g
+
Optional. Whether to generate the base images or not.
+
+ + + + + --help, -h
+
Optional. Print the help text.
+
+

+ + + + + Programmatic usage

+
vr(config, generate, callback);
+
+
+ + + + + config
+
Required string. The path to the configuration file to use.
+
+ + + + + generate
+
Required boolean. Whether or not to generate the base set of images.
+
+ + + + + callback
+
Optional function. The function to run when the tool has finished diffing the images. An object will be passed back containing details of the results.
+
+
+ + + + diff --git a/bin/cmd.js b/bin/cmd.js new file mode 100755 index 0000000..28bd0ab --- /dev/null +++ b/bin/cmd.js @@ -0,0 +1,43 @@ +#!/usr/bin/env node +var fs = require('fs') +var subarg = require('subarg') +var args = subarg(process.argv.slice(2)) +var stranger = require('../stranger') + +// Print help documentation with the -h or --help flags +if (args.help || args.h) { + if (args.h === 'config' || args.help === 'config') { + return fs.createReadStream(__dirname + '/configOptions.txt') + .pipe(process.stdout) + .on('close', function () { + process.exit(0) + }) + } else { + return fs.createReadStream(__dirname + '/usage.txt') + .pipe(process.stdout) + .on('close', function () { + process.exit(0) + }) + } +} + +if (!(args.c || args.config)) { + console.error('You need to pass a configuration object') + process.exit(1) +} + +fs.readFile(args.config || args.c, function (err, data) { + if (err) { + console.error(err) + process.exit(1) + } + + try { + var config = JSON.parse(data) + + stranger(config, (args.generate || args.g)) + } catch (err) { + console.error(err) + process.exit(1) + } +}) diff --git a/bin/configOptions.txt b/bin/configOptions.txt new file mode 100644 index 0000000..2fd35f6 --- /dev/null +++ b/bin/configOptions.txt @@ -0,0 +1,39 @@ + +Configuration options: + + baseDir: string The path for the base images to be placed + + compareDir: string The path for the comparison images to be placed + + diffDir: string The path for any diff images to be placed + + [browser]: string The browser to test with. Can be firefox, + chrome, ie, safari or opera. Defaults to firefox + + [browserOptions]: object The options to configure the browser window + + browserOptions.width: number The width of the browser. Defaults to 1024 + +browserOptions.height: number The height of the browser. Defaults to 1024 + + [chromeOptions]: object The chrome options for selenium. + See: https://goo.gl/ZoCztN + + [firefoxOptions]: object The firefox options for selenium. + See: https://goo.gl/74oFrD + + [ieOptions]: object The ie options for selenium + See: https://goo.gl/3zmhPW + + [operaOptions]: object The opera options for selenium + See: https://goo.gl/QKQHx5 + + [safariOptions]: object The safari options for selenium + See: https://goo.gl/DRK1oz + + tests: array The test objects that stranger will + test against + + test.url: string The url to point the browser to + + [test.name]: string The filename to use for the screenshot. Optional diff --git a/bin/usage.txt b/bin/usage.txt new file mode 100644 index 0000000..33ac100 --- /dev/null +++ b/bin/usage.txt @@ -0,0 +1,11 @@ + +Usage: stranger {OPTIONS} + +Options: + + --config, -c The configuration file to use. + For an example config, type `stranger --help config` + +--generate, -g Whether to generate the base files or not. + + --help, -h Show this message diff --git a/examples.html b/examples.html new file mode 100644 index 0000000..f6112e5 --- /dev/null +++ b/examples.html @@ -0,0 +1,177 @@ + + + + + + + + + + + Examples — stranger + + + + + + Link icon + + + + +
+

Examples

+

Configuration is easy. To begin you only need to establish a basic set of information. If you want to get a little more detailed, skip ahead.

+

There are a couple of gotchas when using stranger. Make sure you’re familiar with them before beginning.

+
{
+  "baseDir": "./test/img/master",
+  "compareDir": "./test/img/branch",
+  "diffDir": "./test/img/diff"
+  "tests": [
+    {
+      "url": "./test/centered.html",
+      "local": true,
+      "name": "Centered"
+    },
+    {
+      "url": "http://localhost:3000/home",
+      "name": "Home"
+    }
+  ]
+}
+

+ + + + + Using a different Browser

+

Supported browsers include firefox, chrome, opera, safari, and IE.

+

It’s important to note that firefox is the only browser that will take a full page screenshot.

+

Additionally, the use of browsers aside from firefox require the webdriver. Check brew for the chrome driver, selenium drivers for the safari driver, and opera releases for the opera driver.

+
{
+  "baseDir": "./test/img/master",
+  "compareDir": "./test/img/branch",
+  "diffDir": "./test/img/diff",
+  "browser": "chrome",
+  "tests": [
+    {
+      "url": "./test/centered.html",
+      "local": true,
+      "name": "Centered"
+    },
+    {
+      "url": "http://localhost:3000/home",
+      "name": "Home"
+    }
+  ]
+}
+

+ + + + + Configuring the viewport

+

You can set the width and height of the browser when screenshots are taken by adding browserOptions.

+
{
+  "baseDir": "./test/img/master",
+  "compareDir": "./test/img/branch",
+  "diffDir": "./test/img/diff",
+  "browser": "chrome",
+  "browserOptions": {
+    width: 320,
+    height: 568
+  },
+  "tests": [
+    {
+      "url": "./test/centered.html",
+      "local": true,
+      "name": "Centered"
+    },
+    {
+      "url": "http://localhost:3000/home",
+      "name": "Home"
+    }
+  ]
+}
+

+ + + + + Browser specific options

+

You can pass in browser specific options for chrome, firefox, ie, opera, and safari.

+
{
+  "baseDir": "./test/img/master",
+  "compareDir": "./test/img/branch",
+  "diffDir": "./test/img/diff",
+  "browser": "chrome",
+  "browserOptions": {
+    width: 320,
+    height: 568
+  },
+  "chromeOptions": {},
+  "firefoxOptions": {},
+  "ieOptions": {},
+  "operaOptions": {},
+  "safariOptions": {},
+  "tests": [
+    {
+      "url": "./test/centered.html",
+      "local": true,
+      "name": "Centered"
+    },
+    {
+      "url": "http://localhost:3000/home",
+      "name": "Home"
+    }
+  ]
+}
+
+ + + + diff --git a/index.html b/index.html new file mode 100644 index 0000000..355fa06 --- /dev/null +++ b/index.html @@ -0,0 +1,118 @@ + + + + + + + + + + + stranger - a visual regression tester + + + + + + Link icon + + + + +
+

Stranger

+

Catch CSS mistakes before they hit production.

+ +

+ + + + + + Get started +

+

First, you want to make sure you have imagemagick installed. If you're on os x, you can do this with homebrew. You should also check out the gotchas which can be frustrating if you are unaware of them.

+
npm install -g stranger
+

In order to test your pages you'll need to create a configuration file.

+
{
+  "baseDir": "./test/img/master",
+  "compareDir": "./test/img/branch",
+  "diffDir": "./test/img/diff"
+  "tests": [
+    {
+      "url": "./test/centered.html",
+      "local": true,
+      "name": "Centered"
+    }
+  ]
+}
+

Then, generate the initial set of base images. These are what future tests with stranger will be tested against.

+
stranger --generate --config ./test/config.json
+

Later, when you're ready to test your changes run the command again without the --generate flag.

+
stranger --config ./test/config.json
+

You can expect a nice message to be printed to your terminal once the tests have finished. It will let you know which tests have passed, which haven't, and which don't have a matching base images to compare to.

+

If you would like to run this programmatically, checkout the api page.

+

+ + + + + Found an issue? Want to contribute?

+

If you've found an issue head on over to github and log the defect with as many details as you can.

+

If you'd like to contribute something to the project, simply make a fork and submit a pull request!

+
+ + + + diff --git a/package.json b/package.json new file mode 100644 index 0000000..03e9945 --- /dev/null +++ b/package.json @@ -0,0 +1,39 @@ +{ + "name": "stranger", + "version": "1.0.0", + "description": "A visual regression testing framework for node.js", + "main": "sranger.js", + "bin": { + "stranger": "./bin/cmd.js" + }, + "preferGlobal": true, + "scripts": { + "test": "standard;node test/index.js | tap-spec" + }, + "keywords": [ + "visual", + "regression", + "visual regression", + "ui testing", + "testing", + "ui" + ], + "author": "Mike Engel", + "license": "Apache-2.0", + "dependencies": { + "chalk": "^1.1.0", + "del": "^1.2.0", + "gm": "^1.18.1", + "mkdirp": "^0.5.1", + "selenium-webdriver": "^2.46.1", + "subarg": "^1.0.0" + }, + "devDependencies": { + "browserify": "^11.0.0", + "buffered-spawn": "^1.1.2", + "pre-commit": "^1.0.10", + "tap-spec": "^4.0.2", + "tape": "^4.0.0", + "tape-run": "^1.0.0" + } +} diff --git a/site/css/site.css b/site/css/site.css new file mode 100644 index 0000000..2ea893d --- /dev/null +++ b/site/css/site.css @@ -0,0 +1,238 @@ +* { + box-sizing: border-box; +} + +html, +body { + width: 100%; + height: 100%; + margin: 0; + padding: 0; +} + +body { + font: normal normal 16px/1.4 'Helvetica Neue', Helvetica, Arial, Sans-serif; + color: #3F5A6B; +} + +a { + color: #3498DB; + text-decoration: none; +} + +a:hover, +a:active { + text-decoration: underline; +} + +ul { + list-style-type: none; + list-style: none; + margin: 0; + padding: 0; + font-size: 0; +} + +li { + display: inline-block; + font-size: 16px; + font-size: 1rem; +} + +.h1 { + margin: 0; + font-size: 48px; + font-size: 3rem; + line-height: 1; +} + +.intro .h1 { + text-align: center; +} + +.h2 { + position: relative; + margin-top: 40px; + margin-bottom: 15px; +} + +p { + max-width: 45em; + font-size: 20px; + font-size: 1.25rem; +} + +p + p { + margin-top: 10px; +} + +.h2 + p { + margin-top: 0; +} + +pre { + display: block; + padding: 10px 20px; + margin: 0 0 0 -20px; + width: 100vw; + background-color: #ECF0F1; + border-top: 1px solid #BDC3C7; + border-bottom: 1px solid #BDC3C7; + white-space: pre-wrap; +} + +dt, +dd { + max-width: 45em; + font-size: 18px; + font-size: 1.125rem; +} + +dt { + position: relative; + color: #D35400; +} + +dd { + margin-top: 3px; + margin-left: 0; +} + +dd + dt { + margin-top: 25px; +} + +.main-nav { + position: fixed; + top: 0; + left: 0; + z-index: 100; + width: 100%; + background-color: #D55400; + border-bottom: 1px solid #8F3900; +} + +.main-nav a { + display: block; + padding: 15px 20px 13px 20px; + color: white; + font-weight: 600; + border-bottom: 3px solid transparent; + transition: background-color 200ms, border-color 200ms; +} + +.main-nav a:hover, +.main-nav a:active { + text-decoration: none; + background-color: #E37329; + border-color: #E37329; +} + +.active a { + border-bottom: 3px solid #8F3900; +} + +.github { + float: right; +} + +.github a { + padding: 16px 20px 10px 20px; + border: none; +} + +.container { + width: 100%; + max-width: 1024px; + margin: 0 auto; + padding: 0 20px; +} + +.main-nav .container { + padding: 0; +} + +.main-nav + .container { + margin-top: 54px; + padding-top: 50px; +} + +.intro-text { + margin: 30px 0; + font-size: 24px; + font-size: 1.5rem; +} + +.intro .intro-text { + text-align: center; +} + +.intro-text + img { + width: 100%; +} + +.github-logo { + width: 22px; + height: 22px; + fill: white; +} + +.link-icon { + position: absolute; + left: -25px; + opacity: 0; + transition: opacity 200ms; +} + +dt:hover .link-icon, +dt:active .link-icon, +.h2:hover .link-icon, +.h2:active .link-icon { + opacity: 1.0; +} + +.h2 .link-icon { + line-height: 1; +} + +.link-icon svg { + width: 18px; + height: 9px; + fill: #3F5A6B; +} + +.footer { + margin-top: 30px; +} + +.footer p { + font-size: 14px; + font-size: 0.875rem; + margin-bottom: 10px; +} + +@media (min-width: 1024px) { + pre { + padding: 10px; + margin: 0; + width: auto; + border: 1px solid #BDC3C7; + border-radius: 2px; + } + + .main-nav .container { + padding: 0 20px; + } + + .main-nav + .container { + margin-top: 63px; + } + + .main-nav a { + padding: 20px 25px 17px 25px; + } + + .github a { + padding: 20px 25px 15px 25px; + } +} diff --git a/site/img/github-logo.svg b/site/img/github-logo.svg new file mode 100644 index 0000000..461da15 --- /dev/null +++ b/site/img/github-logo.svg @@ -0,0 +1,9 @@ + + + + + + + \ No newline at end of file diff --git a/site/img/large-compare.png b/site/img/large-compare.png new file mode 100644 index 0000000000000000000000000000000000000000..8844586233ca9a887e24d27fe1e4d3a50fb959e5 GIT binary patch literal 36738 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 + + + + + + + + \ No newline at end of file diff --git a/site/img/medium-compare.png b/site/img/medium-compare.png new file mode 100644 index 0000000000000000000000000000000000000000..c6a21150e66c7d9e359d3ff391901e8a45a47384 GIT binary patch literal 43134 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 F`X7nh+BX0I literal 0 HcmV?d00001 diff --git a/site/img/small-compare.png b/site/img/small-compare.png new file mode 100644 index 0000000000000000000000000000000000000000..ddc45e297cb85917b4e30d70c3b2d7eee5db9dcc GIT binary patch literal 37648 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

ywDoyiK}Ys;%c^O?Amvf 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

Wn9zX>Na>o>RmD)xIdO7Jq` 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 literal 0 HcmV?d00001 diff --git a/site/js/picturefill.min.js b/site/js/picturefill.min.js new file mode 100644 index 0000000..2aed5ae --- /dev/null +++ b/site/js/picturefill.min.js @@ -0,0 +1,5 @@ +/*! Picturefill - v3.0.0-beta1 - 2015-07-27 + * http://scottjehl.github.io/picturefill + * Copyright (c) 2015 https://github.com/scottjehl/picturefill/blob/master/Authors.txt; Licensed MIT + */ +!function(a){var b=navigator.userAgent;a.HTMLPictureElement&&/ecko/.test(b)&&b.match(/rv\:(\d+)/)&&RegExp.$1<41&&addEventListener("resize",function(){var b,c=document.createElement("source"),d=function(a){var b,d,e=a.parentNode;"PICTURE"===e.nodeName.toUpperCase()?(b=c.cloneNode(),e.insertBefore(b,e.firstElementChild),setTimeout(function(){e.removeChild(b)})):(!a._pfLastSize||a.offsetWidth>a._pfLastSize)&&(a._pfLastSize=a.offsetWidth,d=a.sizes,a.sizes+=",100vw",setTimeout(function(){a.sizes=d}))},e=function(){var a,b=document.querySelectorAll("picture > img, img[srcset][sizes]");for(a=0;a2.7?h=c+1:(f=b-c,e=Math.pow(a-.6,1.5),g=f*e,d&&(g+=.1*e),h=a+g):h=c>1?Math.sqrt(a*b):a,h>c}function h(a){var b,c=s.getSet(a),d=!1;"pending"!==c&&(d=r,c&&(b=s.setRes(c),s.applySetCandidate(b,a))),a[s.ns].evaled=d}function i(a,b){return a.res-b.res}function j(a,b,c){var d;return!c&&b&&(c=a[s.ns].sets,c=c&&c[c.length-1]),d=k(b,c),d&&(b=s.makeUrl(b),a[s.ns].curSrc=b,a[s.ns].curCan=d,d.res||_(d,d.set.sizes)),d}function k(a,b){var c,d,e;if(a&&b)for(e=s.parseSet(b),a=s.makeUrl(a),c=0;cc;c++)e=g[c],e[s.ns]=!0,f=e.getAttribute("srcset"),f&&b.push({srcset:f,media:e.getAttribute("media"),type:e.getAttribute("type"),sizes:e.getAttribute("sizes")})}function m(a,b){function c(b){var c,d=b.exec(a.substring(m));return d?(c=d[0],m+=c.length,c):void 0}function e(){var a,c,d,e,f,i,j,k,l,m=!1,o={};for(e=0;el?m=!0:c=l):W.test(j)&&"h"===i?((d||c)&&(m=!0),0===k?m=!0:d=k):m=!0;m||(o.url=g,a&&(o.w=a),c&&(o.d=c),d&&(o.h=d),d||c||a||(o.d=1),1===o.d&&(b.has1x=!0),o.set=b,n.push(o))}function f(){for(c(S),i="",j="in descriptor";;){if(k=a.charAt(m),"in descriptor"===j)if(d(k))i&&(h.push(i),i="",j="after descriptor");else{if(","===k)return m+=1,i&&h.push(i),void e();if("("===k)i+=k,j="in parens";else{if(""===k)return i&&h.push(i),void e();i+=k}}else if("in parens"===j)if(")"===k)i+=k,j="in descriptor";else{if(""===k)return h.push(i),void e();i+=k}else if("after descriptor"===j)if(d(k));else{if(""===k)return void e();j="in descriptor",m-=1}m+=1}}for(var g,h,i,j,k,l=a.length,m=0,n=[];;){if(c(T),m>=l)return n;g=c(U),h=[],","===g.slice(-1)?(g=g.replace(V,""),e()):f()}}function n(a){function b(a){function b(){f&&(g.push(f),f="")}function c(){g[0]&&(h.push(g),g=[])}for(var e,f="",g=[],h=[],i=0,j=0,k=!1;;){if(e=a.charAt(j),""===e)return b(),c(),h;if(k){if("*"===e&&"/"===a[j+1]){k=!1,j+=2,b();continue}j+=1}else{if(d(e)){if(a.charAt(j-1)&&d(a.charAt(j-1))||!f){j+=1;continue}if(0===i){b(),j+=1;continue}e=" "}else if("("===e)i+=1;else if(")"===e)i-=1;else{if(","===e){b(),c(),j+=1;continue}if("/"===e&&"*"===a.charAt(j+1)){k=!0,j+=2;continue}}f+=e,j+=1}}}function c(a){return k.test(a)&&parseFloat(a)>=0?!0:l.test(a)?!0:"0"===a||"-0"===a||"+0"===a?!0:!1}var e,f,g,h,i,j,k=/^(?:[+-]?[0-9]+|[0-9]*\.[0-9]+)(?:[eE][+-]?[0-9]+)?(?:ch|cm|em|ex|in|mm|pc|pt|px|rem|vh|vmin|vmax|vw)$/i,l=/^calc\((?:[0-9a-z \.\+\-\*\/\(\)]+)\)$/i;for(f=b(a),g=f.length,e=0;g>e;e++)if(h=f[e],i=h[h.length-1],c(i)){if(j=i,h.pop(),0===h.length)return j;if(h=h.join(" "),s.matchesMedia(h))return j}return"100vw"}b.createElement("picture");var o,p,q,r,s={},t=function(){},u=b.createElement("img"),v=u.getAttribute,w=u.setAttribute,x=u.removeAttribute,y=b.documentElement,z={},A={algorithm:""},B="data-pfsrc",C=B+"set",D=navigator.userAgent,E=/rident/.test(D)||/ecko/.test(D)&&D.match(/rv\:(\d+)/)&&RegExp.$1>35,F="currentSrc",G=/\s+\+?\d+(e\d+)?w/,H=/(\([^)]+\))?\s*(.+)/,I=a.picturefillCFG,J="position:absolute;left:0;visibility:hidden;display:block;padding:0;border:none;font-size:1em;width:1em;overflow:hidden;clip:rect(0px, 0px, 0px, 0px)",K="font-size:100%!important;",L=!0,M={},N={},O=a.devicePixelRatio,P={px:1,"in":96},Q=b.createElement("a"),R=!1,S=/^[ \t\n\r\u000c]+/,T=/^[, \t\n\r\u000c]+/,U=/^[^ \t\n\r\u000c]+/,V=/[,]+$/,W=/^\d+$/,X=/^-?(?:[0-9]+|[0-9]*\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/,Y=function(a,b,c,d){a.addEventListener?a.addEventListener(b,c,d||!1):a.attachEvent&&a.attachEvent("on"+b,c)},Z=function(a){var b={};return function(c){return c in b||(b[c]=a(c)),b[c]}},$=function(){var a=/^([\d\.]+)(em|vw|px)$/,b=function(){for(var a=arguments,b=0,c=a[0];++b in a;)c=c.replace(a[b],a[++b]);return c},c=Z(function(a){return"return "+b((a||"").toLowerCase(),/\band\b/g,"&&",/,/g,"||",/min-([a-z-\s]+):/g,"e.$1>=",/max-([a-z-\s]+):/g,"e.$1<=",/calc([^)]+)/g,"($1)",/(\d+[\.]*[\d]*)([a-z]+)/g,"($1 * e.$2)",/^(?!(e.[a-z]|[0-9\.&=|><\+\-\*\(\)\/])).*/gi,"")+";"});return function(b,d){var e;if(!(b in M))if(M[b]=!1,d&&(e=b.match(a)))M[b]=e[1]*P[e[2]];else try{M[b]=new Function("e",c(b))(P)}catch(f){}return M[b]}}(),_=function(a,b){return a.w?(a.cWidth=s.calcListLength(b||"100vw"),a.res=a.w/a.cWidth):a.res=a.d,a},aa=function(a){var c,d,e,f=a||{};if(f.elements&&1===f.elements.nodeType&&("IMG"===f.elements.nodeName.toUpperCase()?f.elements=[f.elements]:(f.context=f.elements,f.elements=null)),c=f.elements||s.qsa(f.context||b,f.reevaluate||f.reselect?s.sel:s.selShort),e=c.length){for(s.setupRun(f),R=!0,d=0;e>d;d++)s.fillImg(c[d],f);s.teardownRun(f)}};o=a.console&&console.warn?function(a){console.warn(a)}:t,F in u||(F="src"),z["image/jpeg"]=!0,z["image/gif"]=!0,z["image/png"]=!0,z["image/svg+xml"]=b.implementation.hasFeature("http://wwwindow.w3.org/TR/SVG11/feature#Image","1.1"),s.ns=("pf"+(new Date).getTime()).substr(0,9),s.supSrcset="srcset"in u,s.supSizes="sizes"in u,s.selShort="picture>img,img[srcset]",s.sel=s.selShort,s.cfg=A,s.supSrcset&&(s.sel+=",img["+C+"]"),s.DPR=O||1,s.u=P,s.types=z,q=s.supSrcset&&!s.supSizes,s.setSize=t,s.makeUrl=Z(function(a){return Q.href=a,Q.href}),s.qsa=function(a,b){return a.querySelectorAll(b)},s.matchesMedia=function(){return a.matchMedia&&(matchMedia("(min-width: 0.1em)")||{}).matches?s.matchesMedia=function(a){return!a||matchMedia(a).matches}:s.matchesMedia=s.mMQ,s.matchesMedia.apply(this,arguments)},s.mMQ=function(a){return a?$(a):!0},s.calcLength=function(a){var b=$(a,!0)||!1;return 0>b&&(b=!1),b},s.supportsType=function(a){return a?z[a]:!0},s.parseSize=Z(function(a){var b=(a||"").match(H);return{media:b&&b[1],length:b&&b[2]}}),s.parseSet=function(a){return a.cands||(a.cands=m(a.srcset,a)),a.cands},s.getEmValue=function(){var a;if(!p&&(a=b.body)){var c=b.createElement("div"),d=y.style.cssText,e=a.style.cssText;c.style.cssText=J,y.style.cssText=K,a.style.cssText=K,a.appendChild(c),p=c.offsetWidth,a.removeChild(c),p=parseFloat(p,10),y.style.cssText=d,a.style.cssText=e}return p||16},s.calcListLength=function(a){if(!(a in N)||A.uT){var b=s.calcLength(n(a));N[a]=b?b:P.width}return N[a]},s.setRes=function(a){var b;if(a){b=s.parseSet(a);for(var c=0,d=b.length;d>c;c++)_(b[c],a.sizes)}return b},s.setRes.res=_,s.applySetCandidate=function(a,b){if(a.length){var c,d,e,f,h,k,l,m,n,o,p=b[s.ns],q=s.DPR;if(k=p.curSrc||b[F],l=p.curCan||j(b,k,a[0].set),l&&l.set===a[0].set&&(o=E&&!b.complete&&l.res-.1>q,o||(l.cached=!0,l&&m&&l.res>=q&&(h=l))),!h)for(a.sort(i),f=a.length,h=a[f-1],d=0;f>d;d++)if(c=a[d],c.res>=q){e=d-1,h=a[e]&&(o||k!==s.makeUrl(c.url))&&g(a[e].res,c.res,q,a[e].cached)?a[e]:c;break}h&&(n=s.makeUrl(h.url),p.curSrc=n,p.curCan=h,n!==k&&s.setSrc(b,h),s.setSize(b))}},s.setSrc=function(a,b){var c;a.src=b.url,"image/svg+xml"===b.set.type&&(c=a.style.width,a.style.width=a.offsetWidth+1+"px",a.offsetWidth+1&&(a.style.width=c))},s.getSet=function(a){var b,c,d,e=!1,f=a[s.ns].sets;for(b=0;bf?c=setTimeout(e,b-f):(c=null,a())};return function(){d=new Date,c||(c=setTimeout(e,b))}},h=function(){L=!0,s.fillImgs()};Y(a,"resize",g(h,99)),Y(b,"readystatechange",e)}(),s.picturefill=aa,s.fillImgs=aa,s.teardownRun=t,aa._=s,a.picturefillCFG={pf:s,push:function(a){var b=a.shift();"function"==typeof s[b]?s[b].apply(s,a):(A[b]=a[0],R&&s.fillImgs({reselect:!0}))}};for(;I&&I.length;)a.picturefillCFG.push(I.shift());a.picturefill=aa,"object"==typeof module&&"object"==typeof module.exports?module.exports=aa:"function"==typeof define&&define.amd&&define("picturefill",function(){return aa}),a.HTMLPictureElement||(z["image/webp"]=e("image/webp","data:image/webp;base64,UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAABBxAR/Q9ERP8DAABWUDggGAAAADABAJ0BKgEAAQADADQlpAADcAD++/1QAA=="))}(window,document); diff --git a/stranger.js b/stranger.js new file mode 100644 index 0000000..c23c94a --- /dev/null +++ b/stranger.js @@ -0,0 +1,319 @@ +var fs = require('fs') +var path = require('path') +var mkdirp = require('mkdirp') +var chalk = require('chalk') +var del = require('del') +var gm = require('gm') +var webdriver = require('selenium-webdriver') + +module.exports = Stranger + +/** + * Stranger - The entry point for the tool. Compare a set of images to previously generated set. + * @example + * stranger(mobileConfig, false) + * @param {object} options - A javascript object configuring the output + * @param {boolean} [generate] - Whether or not to generate the base set of images. Defaults to false + * @param {function} [callback] - A function to run after stranger has run + * @returns {void} + */ +function Stranger (options, generate, callback) { + var self = this + + if (!options) { + throw new Error(chalk.red('You need to pass a configuration object')) + } + + if (!(self instanceof Stranger)) { + return new Stranger(options, generate, callback) + } + + if (generate) { + self.generateImages = true + } + + self.config = options + self.callback = callback + + self.setupSystem() + + self.config.tests.forEach(function (test, idx) { + var filename = self.createFilename(test) + + if (!test.url) { + return + } + + self.createScreenshot(test.url, self.generateImages ? self.config.baseDir : self.config.compareDir, filename, test.local) + }) + + self.driver.quit().then(function (err) { + if (err) { + throw new Error(err) + } + + // Report the number of images generated if the generate flag was used + if (self.generateImages) { + if (self.callback) { + self.callback({ + imagesProcessed: 0, + imagesGenerated: self.config.tests.length, + imagesDir: self.config.baseDir + }) + } else { + console.log('\n' + chalk.green(self.config.tests.length + ' ' + (self.config.tests.length === 1 ? 'screenshot' : 'screenshots') + ' created and placed in ' + (self.generateImages ? self.config.baseDir : self.config.compareDir))) + } + } + + // Otherwise, compare the images + if (!self.generateImages) { + del(self.config.diffDir + '**/*', function (err) { + if (err) { + throw new Error(err) + } + + self.compareImages() + }) + } + }) +} + +/** + * setupSystem - Run a bunchf of things, probably syncronously, to setup folders, defaults, etc. + * @example + * this.setupSystem() + * @private + * @returns {void} + */ +Stranger.prototype.setupSystem = function () { + var self = this + + self.checkConfig() + + if (typeof self.generateImages === 'undefined') { + self.generateImages = false + } + + self.diffCount = 0 + self.noMatchCount = 0 + self.imagesProcessed = 0 + + self.driver = new webdriver.Builder() + .forBrowser(self.config.browser || 'firefox') + .setChromeOptions(self.config.chromeOptions) + .setFirefoxOptions(self.config.firefoxOptions) + .setIeOptions(self.config.ieOptions) + .setOperaOptions(self.config.operaOptions) + .setSafariOptions(self.config.safariOptions) + .build() + + // Create the folder for master images + mkdirp.sync(self.config.baseDir) + + // Create the folder for the comparison images + mkdirp.sync(self.config.compareDir) + + // Create the folder for the diff images + mkdirp.sync(self.config.diffDir) + + // Check if master images have been generated and error if none have been created + // TODO - Think about just running generate quickly then continuing instead of erroring + if (!self.checkForFiles(self.config.baseDir) && !self.generateImages) { + throw new Error('\n' + chalk.red('× You don\'t have any reference images created yet.') + '\n' + 'Rerun stranger with the ' + chalk.yellow('--generate') + ' flag') + } + + // Remove any previously generated images + del.sync((self.generateImages ? self.config.baseDir : self.config.compareDir) + '**/*') + + self.driver.manage().window().setSize(self.config.browserOptions.width, self.config.browserOptions.height) +} + +/** + * checkConfig - Check a couple of properties in the config to set us up the urls. + * @example + * this.checkConfig() + * @private + * @returns {void} + */ +Stranger.prototype.checkConfig = function () { + var self = this + + if (!self.config.browserOptions) { + self.config.browserOptions = { + width: 1024, + height: 768 + } + } + + if (!self.config.browserOptions.width) { + self.config.browserOptions.width = 1024 + } + + if (!self.config.browserOptions.height) { + self.config.browserOptions.height = 768 + } + + if (self.config.baseDir.charAt(self.config.baseDir.length - 1) !== '/') { + self.config.baseDir = self.config.baseDir + '/' + } + + if (self.config.compareDir.charAt(self.config.compareDir.length - 1) !== '/') { + self.config.compareDir = self.config.compareDir + '/' + } + + if (self.config.diffDir.charAt(self.config.diffDir.length - 1) !== '/') { + self.config.diffDir = self.config.diffDir + '/' + } +} + +/** + * createScreenshot - Given some basic info, open the url and take a screenshot. + * @example + * this.createScreenshot('localhost/home', './test/export', 'home.png') + * @private + * @param {string} url - The url that the browser should be pointed to + * @param {string} path - The directory path that the image should be saved to + * @param {string} filename - The filename for the screenshot + * @returns {void} + */ +Stranger.prototype.createScreenshot = function (url, imgPath, filename, local) { + var self = this + var screenshot + + if (local) { + url = 'file://' + path.join(__dirname, url) + } + + self.driver.get(url) + screenshot = self.driver.takeScreenshot() + + screenshot.then(function (png) { + // Convert it to a buffer right quick + var buf = new Buffer(png, 'base64') + + fs.writeFileSync(imgPath + filename, buf) + }, function (err) { + throw new Error(err) + }) +} + +/** + * chechForFiles - Quickly check if a directory is empty or not + * @example + * this.checkForFiles('./test/export') + * @private + * @param {string} path - The directory path to check + * @returns {boolean} - True if there are files, false if the directory is empty + */ +Stranger.prototype.checkForFiles = function (path) { + var files = fs.readdirSync(path) + + if (files && files.length) { + return true + } else { + return false + } +} + +/** + * createFilename - Given a test object, cerate a filename based on the name given or the url + * @example + * this.createFilename({ url: 'localhost/home', name: 'home' }) + * @private + * @param {object} test - The test object. Needs to contain the url. The name is optional. + * @returns {string} - The best guess for a filename. Doesn't guaruntee uniqueness. + */ +Stranger.prototype.createFilename = function (test) { + var filename = test.name || test.url.split('/')[ test.url.split('/').length - 1] || 'index' + + return filename + '.png' +} + +/** + * compareImages - Begin the process of comparing a set of images to another. + * @example + * this.compareImages() + * @private + * @returns {void} + */ +Stranger.prototype.compareImages = function () { + var self = this + var mismatchedImages = [] + var diffedImages = [] + var similarImages = [] + + console.log('') + + self.config.tests.forEach(function (test, idx) { + var filename = self.createFilename(test) + + fs.readFile(self.config.baseDir + filename, function (err, buf) { + if (err) { + if (!self.callback) { + console.log(chalk.yellow('! ' + filename)) + } + + self.imagesProcessed++ + mismatchedImages.push(filename) + return self.noMatchCount++ + } + + gm.compare(self.config.compareDir + filename, self.config.baseDir + filename, { + file: self.config.diffDir + filename, + highlightColor: 'red', + tolerance: 0.0, + highlightStyle: 'assign' + }, function (err, imagesAreSame) { + if (err) { + throw new Error(err) + } + + if (!imagesAreSame) { + self.diffCount++ + diffedImages.push(filename) + + if (!self.callback) { + console.log(chalk.red('× ' + filename)) + } + } else { + fs.unlink(self.config.diffDir + filename) + similarImages.push(filename) + + if (!self.callback) { + console.log(chalk.green('√ ' + filename)) + } + } + + self.imagesProcessed++ + + if (self.imagesProcessed === self.config.tests.length) { + if (self.callback) { + self.callback({ + imagesGenerated: 0, + imagesProcessed: self.imagesProcessed, + imagesDir: self.config.compareDir, + noMatchCount: self.noMatchCount, + similarImages: similarImages, + diffedImages: diffedImages, + mismatchedImages: mismatchedImages, + diffCount: self.diffCount, + diffDir: self.config.diffDir + }) + } else { + console.log('') + + if (self.noMatchCount) { + console.log(chalk.yellow('There ' + (self.noMatchCount === 1 ? 'was' : 'were') + ' ' + self.noMatchCount + ' ' + (self.noMatchCount === 1 ? 'image' : 'images') + ' that didn\'t have a reference image.\n') + 'It\'s recommended that you re-run stranger with the ' + chalk.yellow('--generate') + ' flag.\n') + } + + if (self.diffCount) { + console.log(chalk.yellow(self.diffCount + ' ' + (self.diffCount === 1 ? 'diff' : 'diffs') + ' found! Check out the ' + self.config.diffDir + ' directory for the ' + (self.diffCount === 1 ? 'diff' : 'diffs') + '.')) + } else { + console.log(chalk.green('No diffs found!')) + } + } + } + }) + }) + }) +} diff --git a/test/cli.js b/test/cli.js new file mode 100644 index 0000000..96c32ea --- /dev/null +++ b/test/cli.js @@ -0,0 +1,296 @@ +'use strict' + +var fs = require('fs') +var spawn = require('child_process').spawn +var test = require('tape') +var del = require('del') +var helpText = fs.readFileSync('./bin/usage.txt', { encoding: 'utf8' }) +var configText = fs.readFileSync('./bin/configOptions.txt', { encoding: 'utf8' }) + +test('The default help text is generated', function (t) { + var shorthand = spawn('./bin/cmd.js', [ + '-h' + ], { + cwd: process.cwd() + }) + var longhand = spawn('./bin/cmd.js', [ + '--help' + ], { + cwd: process.cwd() + }) + + shorthand.stdout.on('data', function (stdout) { + t.ok(stdout, 'The text was printed to stdout with the -h flag') + t.equal(stdout.toString(), helpText, 'The help text is from the usage.txt file') + }) + + shorthand.stderr.on('data', function (stderr) { + t.notOk(stderr.toString(), 'Nothing got printed to stderr') + }) + + shorthand.on('close', function (code) { + t.equal(code, 0, 'The process exited with a 0 status') + }) + + longhand.stdout.on('data', function (stdout) { + t.ok(stdout, 'The text was printed to stdout with the -h flag') + t.equal(stdout.toString(), helpText, 'The help text is from the usage.txt file') + }) + + longhand.on('close', function () { + t.end() + }) +}) + +test('The config help text is generated', function (t) { + var stranger = spawn('./bin/cmd.js', [ + '-h', + 'config' + ], { + cwd: process.cwd() + }) + + stranger.stdout.on('data', function (stdout) { + t.ok(stdout, 'The config text was printed to stdout') + t.equal(stdout.toString(), configText, 'The config text is from the configOptions.txt file') + }) + + stranger.stderr.on('data', function (stderr) { + t.notOk(stderr, 'Nothing got printed to stderr') + }) + + stranger.on('close', function (code) { + t.equal(code, 0, 'The process exited with a 0 status') + t.end() + }) +}) + +test('The tool fails if no config path is provided', function (t) { + var noConfigText = 'You need to pass a configuration object\n' + var stranger = spawn('./bin/cmd.js', { + cwd: process.cwd() + }) + + stranger.stdout.on('data', function (stdout) { + t.notOk(stdout, 'The error text wasn\'t printed to stdout') + }) + + stranger.stderr.on('data', function (stderr) { + t.equal(stderr.toString(), noConfigText, 'The error message is nice') + }) + + stranger.on('close', function (code) { + t.equal(code, 1, 'It exited with a 1 status') + t.end() + }) +}) + +test('The tool fails if no base images have been generated', function (t) { + del('./test/img/**/*.png', function (err) { + var stranger = spawn('./bin/cmd.js', [ + '--config', + './test/lib/basic.json' + ], { + cwd: process.cwd() + }) + + if (err) { + t.fail(err) + } + + stranger.stdout.on('data', function (stdout) { + t.notOk(stdout, 'The error text wasn\'t printed to stdout') + }) + + stranger.stderr.on('data', function (stderr) { + t.ok(stderr.toString(), 'The error message was printed') + }) + + stranger.on('close', function (code) { + t.equal(code, 1, 'It exited with a 1 status') + t.end() + }) + }) +}) + +test('The tool generates a diff', function (t) { + var diffMessages = [ + '\n', + '× Home.png\n', + '√ dynamic.html.png\n', + '\n1 diff found! Check out the ./test/img/desktop/diff/ directory for the diff.\n' + ] + + del('./test/img/deskop/**/*', function (err) { + var stranger = spawn('./bin/cmd.js', [ + '--config', + './test/lib/basic.json', + '--generate' + ], { + cwd: process.cwd() + }) + + if (err) { + t.fail(err) + } + + stranger.on('close', function (code) { + t.equal(code, 0, 'It exited with a 0 status') + + var stranger2 = spawn('./bin/cmd.js', [ + '--config', + './test/lib/diffable.json' + ], { + cwd: process.cwd() + }) + + if (err) { + t.fail(err) + } + + stranger2.stdout.on('data', function (stdout) { + t.ok(diffMessages.indexOf(stdout.toString()) !== -1, 'The diff message message was generated') + }) + + stranger2.stderr.on('data', function (stderr) { + console.log(stderr.toString()) + t.notOk(stderr, 'There were no errors') + }) + + stranger2.on('close', function (code) { + t.equal(code, 0, 'It exited with a 0 status') + t.end() + }) + }) + }) +}) + +test('The tool doesn\'t generate a diff', function (t) { + var diffMessages = [ + '\n', + '√ Home.png\n', + '√ dynamic.html.png\n', + '\nNo diffs found!\n' + ] + + del('./test/img/deskop/**/*', function (err) { + var stranger = spawn('./bin/cmd.js', [ + '--config', + './test/lib/basic.json', + '--generate' + ], { + cwd: process.cwd() + }) + + if (err) { + t.fail(err) + } + + stranger.on('close', function (code) { + t.equal(code, 0, 'It exited with a 0 status') + + var stranger2 = spawn('./bin/cmd.js', [ + '--config', + './test/lib/basic.json' + ], { + cwd: process.cwd() + }) + + if (err) { + t.fail(err) + } + + stranger2.stdout.on('data', function (stdout) { + t.ok(diffMessages.indexOf(stdout.toString()) !== -1, 'The diff message message was generated') + }) + + stranger2.stderr.on('data', function (stderr) { + t.notOk(stderr, 'There were no errors') + }) + + stranger2.on('close', function (code) { + t.equal(code, 0, 'It exited with a 0 status') + t.end() + }) + }) + }) +}) + +test('The tool warns the user if there\'s a mismatch', function (t) { + var diffMessages = [ + '\n', + '√ Home.png\n', + '√ dynamic.html.png\n', + '! Left.png\n', + '\nThere was 1 image that didn\'t have a reference image.\nIt\'s recommended that you re-run stranger with the --generate flag.\n\nNo diffs found!\n' + ] + + del('./test/img/deskop/**/*', function (err) { + var stranger = spawn('./bin/cmd.js', [ + '--config', + './test/lib/basic.json', + '--generate' + ], { + cwd: process.cwd() + }) + + if (err) { + t.fail(err) + } + + stranger.on('close', function (code) { + t.equal(code, 0, 'It exited with a 0 status') + + var stranger2 = spawn('./bin/cmd.js', [ + '--config', + './test/lib/mismatch.json' + ], { + cwd: process.cwd() + }) + + if (err) { + t.fail(err) + } + + stranger2.stdout.on('data', function (stdout) { + t.notEqual(diffMessages.indexOf(stdout.toString()), -1, 'The diff message message was generated') + }) + + stranger2.stderr.on('data', function (stderr) { + t.notOk(stderr, 'There were no errors') + }) + + stranger2.on('close', function (code) { + t.equal(code, 0, 'It exited with a 0 status') + t.end() + }) + }) + }) +}) + +test('The tool makes the filename match the URL or the name', function (t) { + del('./test/img/deskop/**/*', function (err) { + spawn('./bin/cmd.js', [ + '--config', + './test/lib/basic.json', + '--generate' + ], { + cwd: process.cwd() + }) + + if (err) { + t.fail(err) + } + + fs.readdir('./test/img/desktop/master', function (err, paths) { + if (err) { + t.fail(err) + } + + t.equal(paths.length, 2, 'Two images were generated') + t.equal(paths[0], 'Home.png', 'The first image is called Home.png') + t.equal(paths[1], 'dynamic.html.png', 'The second image is called dynamic.html.png') + t.end() + }) + }) +}) diff --git a/test/index.js b/test/index.js new file mode 100644 index 0000000..411dbc0 --- /dev/null +++ b/test/index.js @@ -0,0 +1,2 @@ +require('./cli') +require('./stranger') diff --git a/test/lib/basic.json b/test/lib/basic.json new file mode 100644 index 0000000..b08a062 --- /dev/null +++ b/test/lib/basic.json @@ -0,0 +1,17 @@ +{ + "baseDir": "./test/img/desktop/master", + "compareDir": "./test/img/desktop/branch", + "diffDir": "./test/img/desktop/diff", + "browser": "firefox", + "tests": [ + { + "url": "./test/lib/centered.html", + "local": true, + "name": "Home" + }, + { + "url": "./test/lib/dynamic.html", + "local": true + } + ] +} diff --git a/test/lib/centered.html b/test/lib/centered.html new file mode 100644 index 0000000..80a790c --- /dev/null +++ b/test/lib/centered.html @@ -0,0 +1,24 @@ + + + + + + Centered text + + + +

This is come centered text

+ + diff --git a/test/lib/diffable.json b/test/lib/diffable.json new file mode 100644 index 0000000..014d9d4 --- /dev/null +++ b/test/lib/diffable.json @@ -0,0 +1,17 @@ +{ + "baseDir": "./test/img/desktop/master", + "compareDir": "./test/img/desktop/branch", + "diffDir": "./test/img/desktop/diff", + "browser": "firefox", + "tests": [ + { + "url": "./test/lib/left.html", + "local": true, + "name": "Home" + }, + { + "url": "./test/lib/dynamic.html", + "local": true + } + ] +} diff --git a/test/lib/dynamic.html b/test/lib/dynamic.html new file mode 100644 index 0000000..5c6f60b --- /dev/null +++ b/test/lib/dynamic.html @@ -0,0 +1,32 @@ + + + + + + Dynamic text + + + +

There should be some dynamic text below

+ + + diff --git a/test/lib/left.html b/test/lib/left.html new file mode 100644 index 0000000..6f717c8 --- /dev/null +++ b/test/lib/left.html @@ -0,0 +1,24 @@ + + + + + + Left text + + + +

This is come left aligned text

+ + diff --git a/test/lib/mismatch.json b/test/lib/mismatch.json new file mode 100644 index 0000000..2f41f61 --- /dev/null +++ b/test/lib/mismatch.json @@ -0,0 +1,22 @@ +{ + "baseDir": "./test/img/desktop/master", + "compareDir": "./test/img/desktop/branch", + "diffDir": "./test/img/desktop/diff", + "browser": "firefox", + "tests": [ + { + "url": "./test/lib/centered.html", + "local": true, + "name": "Home" + }, + { + "url": "./test/lib/dynamic.html", + "local": true + }, + { + "url": "./test/lib/left.html", + "local": true, + "name": "Left" + } + ] +} diff --git a/test/stranger.js b/test/stranger.js new file mode 100644 index 0000000..f64fbba --- /dev/null +++ b/test/stranger.js @@ -0,0 +1,101 @@ +'use strict' + +var test = require('tape') +var del = require('del') +var stranger = require('../stranger') +var basicConfig = require('./lib/basic.json') +var diffableConfig = require('./lib/diffable.json') +var mismatchConfig = require('./lib/mismatch.json') + +test('The tool fails if no config is provided', function (t) { + t.throws(function () { + stranger(null, false) + }, 'It throws without a config') + t.end() +}) + +test('The tool fails if no base images have been generated', function (t) { + del('./test/img/**/*.png', function () { + t.throws(function () { + stranger(basicConfig, false) + }, 'It throws when no base images exist') + t.end() + }) +}) + +test('The tool generates the base images', function (t) { + del('./test/img/**/*.png', function () { + stranger(basicConfig, true, function (results) { + t.ok(results, 'It send the results through') + t.equal(typeof results, 'object', 'Results is an object') + t.equal(results.imagesGenerated, 2, 'Two base images were generated') + t.equal(results.imagesProcessed, 0, 'No images were processed') + t.equal(results.imagesDir, './test/img/desktop/master/', 'It provides the image directory') + t.end() + }) + }) +}) + +test('The tool compares similar images', function (t) { + del('./test/img/**/*.png', function () { + stranger(basicConfig, true, function () { + stranger(basicConfig, false, function (results) { + t.ok(results, 'It send the results through') + t.equal(typeof results, 'object', 'Results is an object') + t.equal(results.imagesGenerated, 0, 'No images were generated') + t.equal(results.imagesProcessed, 2, 'Two images were processed') + t.equal(results.imagesDir, './test/img/desktop/branch/', 'It provides the image directory') + t.equal(results.diffDir, './test/img/desktop/diff/', 'It provides the diff directory') + t.equal(results.noMatchCount, 0, 'All images accounted for') + t.equal(results.similarImages.length, 2, 'It has both similar image filenames') + t.equal(results.diffedImages.length, 0, 'It has no diffed image filenames') + t.equal(results.mismatchedImages.length, 0, 'No mismatched images provided') + t.equal(results.diffCount, 0, 'No diffs found') + t.end() + }) + }) + }) +}) + +test('The tool finds a diff', function (t) { + del('./test/img/**/*.png', function () { + stranger(basicConfig, true, function () { + stranger(diffableConfig, false, function (results) { + t.ok(results, 'It send the results through') + t.equal(typeof results, 'object', 'Results is an object') + t.equal(results.imagesGenerated, 0, 'No images were generated') + t.equal(results.imagesProcessed, 2, 'Two images were processed') + t.equal(results.imagesDir, './test/img/desktop/branch/', 'It provides the image directory') + t.equal(results.diffDir, './test/img/desktop/diff/', 'It provides the diff directory') + t.equal(results.noMatchCount, 0, 'All images accounted for') + t.equal(results.similarImages.length, 1, 'It has similar image\'s filename') + t.equal(results.diffedImages.length, 1, 'It has the diffed image\'s filename') + t.equal(results.mismatchedImages.length, 0, 'No mismatched images provided') + t.equal(results.diffCount, 1, 'One diff found') + t.end() + }) + }) + }) +}) + +test('The tool finds a diff', function (t) { + del('./test/img/**/*.png', function () { + stranger(basicConfig, true, function () { + stranger(mismatchConfig, false, function (results) { + t.ok(results, 'It send the results through') + t.equal(typeof results, 'object', 'Results is an object') + t.equal(results.imagesGenerated, 0, 'No images were generated') + t.equal(results.imagesProcessed, 3, 'Two images were processed') + t.equal(results.imagesDir, './test/img/desktop/branch/', 'It provides the image directory') + t.equal(results.diffDir, './test/img/desktop/diff/', 'It provides the diff directory') + t.equal(results.noMatchCount, 1, 'One comparison image without a base image') + t.equal(results.similarImages.length, 2, 'It has both similar image filenames') + t.equal(results.diffedImages.length, 0, 'It has no diffed image filenames') + t.equal(results.mismatchedImages.length, 1, 'One mismatched image provided') + t.equal(results.mismatchedImages[0], 'Left.png', 'It has the filename of the mismatched image') + t.equal(results.diffCount, 0, 'No diffs found') + t.end() + }) + }) + }) +})