UNPKG

argus-eyes

Version:

A lightweight commandline tool for visual regression testing of UI components.

203 lines (155 loc) 8.47 kB
var assert = require('assert'); var glob = require('glob').sync; var spawnSync = require('child_process').spawnSync; var normalize = require('path').normalize; var rimraf = require('rimraf').sync; describe('Action: Compare', function() { var cleanDirectories = function() { rimraf(normalize(__dirname + '/../fixtures/compare/*/diff_baseline_current')); rimraf(normalize(__dirname + '/../fixtures/compare/*/diff_shots-baseline_shots-current')); }; beforeEach(cleanDirectories); afterEach(cleanDirectories); it('should pass scenario: 100% equal captures', function() { var proc = spawnSync('node', [ normalize(__dirname + '/../../bin/argus-eyes.js'), 'compare', 'baseline', 'current', '--config=' + normalize(__dirname + '/../fixtures/compare/valid.json'), '--base=' + normalize(__dirname + '/../fixtures/compare/known-positives') ], { encoding: 'utf8' }); assert.equal(proc.status, 0, 'Exitcode not 0!'); assert.equal(/no significant differences/.test(proc.stdout), true, "string not found: 'no significant differences'"); }); it('should fail scenario: effectively equal captures', function() { var proc = spawnSync('node', [ normalize(__dirname + '/../../bin/argus-eyes.js'), 'compare', 'baseline', 'current', '--config=' + normalize(__dirname + '/../fixtures/compare/valid.json'), '--base=' + normalize(__dirname + '/../fixtures/compare/known-positives-effectively') ], { encoding: 'utf8' }); assert.equal(proc.status, 1, 'Exitcode not 1!'); assert.equal(/Found 1 difference/.test(proc.stdout), true, "string not found: 'Found 1 difference'"); }); it('should pass scenario: effectively equal captures with custom threshold', function() { var proc = spawnSync('node', [ normalize(__dirname + '/../../bin/argus-eyes.js'), 'compare', 'baseline', 'current', '--verbose', '--threshold=2', '--config=' + normalize(__dirname + '/../fixtures/compare/valid.json'), '--base=' + normalize(__dirname + '/../fixtures/compare/known-positives-effectively') ], { encoding: 'utf8' }); assert.equal(proc.status, 0, 'Exitcode not 0!'); assert.equal(/no significant differences/.test(proc.stdout), true, "string not found: 'no significant differences'"); assert.equal(/not bigger than threshold/.test(proc.stdout), true, "string not found: 'not bigger than threshold'"); }); it('should fail scenario: unequal captures', function() { var dir = '/../fixtures/compare/known-negatives'; var proc = spawnSync('node', [ normalize(__dirname + '/../../bin/argus-eyes.js'), 'compare', 'baseline', 'current', '--config=' + normalize(__dirname + '/../fixtures/compare/valid.json'), '--base=' + normalize(__dirname + dir) ], { encoding: 'utf8' }); assert.equal(proc.status, 1, 'Exitcode not 1!'); assert.equal(/Found 1 difference/.test(proc.stdout), true, "string not found: 'Found 1 difference'"); var diff = glob(normalize(__dirname + dir + '/diff_baseline_current/768x1024/homepage/footer.png')).length; assert.equal(diff, 1, 'Diff file was not created!'); }); it('should pass scenario: unequal captures with custom theshold', function() { var dir = '/../fixtures/compare/known-positives-effectively'; var proc = spawnSync('node', [ normalize(__dirname + '/../../bin/argus-eyes.js'), 'compare', 'baseline', 'current', '--threshold=0.01', '--config=' + normalize(__dirname + '/../fixtures/compare/valid.json'), '--base=' + normalize(__dirname + dir), '--verbose' ], { encoding: 'utf8' }); assert.equal(proc.status, 1, 'Exitcode not 1!'); assert.equal(/Found 1 difference/.test(proc.stdout), true, "string not found: 'Found 1 difference'"); var diff = glob(normalize(__dirname + dir + '/diff_baseline_current/768x1024/homepage/footer.png')).length; assert.equal(diff, 1, 'Diff file was not created!'); }); it('should pass scenario: equal captures of different sizes', function() { var proc = spawnSync('node', [ normalize(__dirname + '/../../bin/argus-eyes.js'), 'compare', 'baseline', 'current', '--verbose', '--config=' + normalize(__dirname + '/../fixtures/compare/valid.json'), '--base=' + normalize(__dirname + '/../fixtures/compare/known-positives-different-sizes') ], { encoding: 'utf8' }); assert.equal(proc.status, 0, 'Exitcode not 0!'); assert.equal(/no significant differences/.test(proc.stdout), true, "string not found: 'no significant differences'"); assert.equal(/dimensions differ/.test(proc.stdout), true, "string not found: 'dimensions differ'"); }); it('should fail scenario: unequal captures of different sizes', function() { var dir = '/../fixtures/compare/known-negatives-different-sizes'; var proc = spawnSync('node', [ normalize(__dirname + '/../../bin/argus-eyes.js'), 'compare', 'baseline', 'current', '--verbose', '--config=' + normalize(__dirname + '/../fixtures/compare/valid.json'), '--base=' + normalize(__dirname + dir) ], { encoding: 'utf8' }); assert.equal(proc.status, 1, 'Exitcode not 1!'); assert.equal(/Found 1 difference/.test(proc.stdout), true, "string not found: 'Found 1 difference'"); assert.equal(/dimensions differ/.test(proc.stdout), true, "string not found: 'dimensions differ'"); var diff = glob(normalize(__dirname + dir + '/diff_baseline_current/768x1024/homepage/footer.png')).length; assert.equal(diff, 1, 'Diff file was not created!'); }); it('should fail scenario: missing left captures', function() { var proc = spawnSync('node', [ normalize(__dirname + '/../../bin/argus-eyes.js'), 'compare', 'baseline', 'current', '--config=' + normalize(__dirname + '/../fixtures/compare/valid.json'), '--base=' + normalize(__dirname + '/../fixtures/compare/known-positives-missing-left') ], { encoding: 'utf8' }); assert.equal(proc.status, 0, 'Exitcode not 0!'); assert.equal(/no significant differences/.test(proc.stdout), true, "string not found: 'no significant differences'"); assert.equal(/not found in left side/.test(proc.stdout), true, "string not found: 'not found in left side'"); }); it('should fail scenario: missing right captures', function() { var proc = spawnSync('node', [ normalize(__dirname + '/../../bin/argus-eyes.js'), 'compare', 'baseline', 'current', '--config=' + normalize(__dirname + '/../fixtures/compare/valid.json'), '--base=' + normalize(__dirname + '/../fixtures/compare/known-positives-missing-right') ], { encoding: 'utf8' }); assert.equal(proc.status, 0, 'Exitcode not 0!'); assert.equal(/no significant differences/.test(proc.stdout), true, "string not found: 'no significant differences'"); assert.equal(/not found in right side/.test(proc.stdout), true, "string not found: 'not found in left side'"); }); it('should handle identifiers with a slash', function() { var proc = spawnSync('node', [ normalize(__dirname + '/../../bin/argus-eyes.js'), 'compare', 'shots/baseline', 'shots/current', '--config=' + normalize(__dirname + '/../fixtures/compare/valid.json'), '--base=' + normalize(__dirname + '/../fixtures/compare/known-positives-slashes') ], { encoding: 'utf8' }); assert.equal(proc.status, 0, 'Exitcode not 0!'); assert.equal(/no significant differences/.test(proc.stdout), true, "string not found: 'no significant differences'"); }); // @todo Implement xit('should not leave empty directories', function() {}); });