69 lines
2 KiB
JavaScript
69 lines
2 KiB
JavaScript
/*jshint node:true*/
|
|
/*jshint mocha:true*/
|
|
/*global assert:true*/
|
|
describe('integration', function () {
|
|
'use strict';
|
|
|
|
var webshot = require('webshot'),
|
|
gm = require('gm'),
|
|
tmp = require('tmp-sync'),
|
|
mkdirp = require('mkdirp').sync,
|
|
cp = require('cp').sync,
|
|
imgur = require('imgur-node-api'),
|
|
server = require('testatic')(),
|
|
WEBSHOT_OPTIONS = { renderDelay: process.env.DELAY || 2500, windowSize: { width: 1366, height: 768 }},
|
|
WEBSHOT_FAILED_DIR = 'test/fixtures/shots/',
|
|
dir;
|
|
|
|
beforeEach(function () {
|
|
dir = tmp.in() + '/';
|
|
});
|
|
|
|
afterEach(function () {
|
|
tmp.clean();
|
|
});
|
|
|
|
after(function () {
|
|
server.close();
|
|
});
|
|
|
|
mkdirp(WEBSHOT_FAILED_DIR);
|
|
|
|
[
|
|
'57-hex-colours',
|
|
'54-not-enough-colours',
|
|
'51-pie-update-colours',
|
|
'configure-line-chart',
|
|
'custom-directive',
|
|
'charts'
|
|
].forEach(function (name) {
|
|
it('compares screenshots for: ' + name, function (done) {
|
|
var image = dir + name + '.png',
|
|
url = 'http://localhost:8080/test/fixtures/' + name + '.html',
|
|
expected = 'test/fixtures/' + name + '.png';
|
|
|
|
webshot(url, image, WEBSHOT_OPTIONS, function (err) {
|
|
if (err) return done(err);
|
|
gm.compare(expected, image, process.env.TOLERANCE || 0.0001, function (err, isEqual) {
|
|
if (err) return done(err);
|
|
if (! isEqual) {
|
|
var failed = WEBSHOT_FAILED_DIR + name + '-failed.png',
|
|
msg = 'Expected screenshots to be similar. Screenshot saved to ' + failed;
|
|
cp(image, failed);
|
|
if (process.env.CI && process.env.IMGUR_ID) {
|
|
imgur.setClientID(process.env.IMGUR_ID);
|
|
imgur.upload(image, function (err, res) {
|
|
if (err) return done(err);
|
|
assert.fail(isEqual, true, msg + ', uploaded to ' + res.data.link);
|
|
});
|
|
} else {
|
|
assert.fail(isEqual, true, msg);
|
|
}
|
|
return;
|
|
}
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|