pokedex/www/lib/angular-chart.js/test/test.integration.js

76 lines
2.3 KiB
JavaScript

/*jshint node:true*/
/*jshint mocha:true*/
/*global assert:true*/
describe('integration', function () {
'use strict';
var port = 8045; /* teststatic default port 8080 may be occupied on many systems */
var webshot = require('webshot'),
path = require('path'),
gm = require('gm'),
tmp = require('tmp-sync'),
mkdirp = require('mkdirp').sync,
cp = require('cp').sync,
imgur = require('imgur-node-api'),
server = require('testatic')('./', port),
WEBSHOT_OPTIONS = { renderDelay: process.env.DELAY || 2500, windowSize: { width: 1366, height: 768 }},
WEBSHOT_FAILED_DIR = path.join('test', 'fixtures', 'shots') + path.sep,
dir;
beforeEach(function () {
dir = tmp.in() + path.sep;
});
afterEach(function () {
tmp.clean();
});
after(function () {
server.close();
});
mkdirp(WEBSHOT_FAILED_DIR);
[
'bubble',
'dataset-override',
'horizontal-bar-chart',
'29-tabs',
'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:' + port + '/test/fixtures/' + name + '.html',
expected = path.join('test', 'fixtures', name + '.png');
webshot(url, image, WEBSHOT_OPTIONS, function (err) {
if (err) return done(err);
gm.compare(expected, image, process.env.TOLERANCE || 0.00001, 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();
});
});
});
});
});