Skip to content

Commit

Permalink
Feat: added tests around take screenshot js
Browse files Browse the repository at this point in the history
  • Loading branch information
mmacartney10 committed Feb 22, 2017
1 parent 7edf401 commit 5009bef
Show file tree
Hide file tree
Showing 7 changed files with 242 additions and 73 deletions.
108 changes: 96 additions & 12 deletions app-new/take-screenshots.js
Expand Up @@ -6,53 +6,138 @@ var path = '';
var referenceFolder = 'reference/';
var testFolder = 'test/';

var args = require('system').args;
var isReference = args[1] === 'Test' ? false : true;
var pngExtension = '.png';

var args = require('system').args;
var isReference = args[1] === 'Reference' ? true : false;
var pageUrl = args[2];
var selectorList = JSON.parse(args[3]);

var viewportName = args[4];
var viewports = args[5];
var currentDirectory = args[6] + '/ocular/screenshots/';
var currentDirectory = args[6] === '' ? false : args[6] + '/ocular/screenshots/';

var error = {
'error': false,
'message': ''
};

var errorMessages = {
'pageCannotBeOpened': 'The url cannot be opened',
'noScreenShotpath' : 'The screenshot path cannot be created',
'viewportParametersIncorrect' : 'The viewport perameters are incorrect',
'noSelectorsPassed': 'No selectors have been passed',
'selectorDoesnotExist': 'The selector containerNone does not exist'
}

function logErrorMessage() {
console.log(error.message);
phantom.exit();
}

function openPage () {
page.open(pageUrl, function (status) {
if(status !== 'success') return;
if(status !== 'success') {
error.error = true;
error.message = errorMessages.pageCannotBeOpened;

logErrorMessage();
return;
}

setScreenShotPath();

if (error.error) {
return logErrorMessage();
}

checkIfIsReference();
setViewPortSize();

if (error.error) {
return logErrorMessage();
}

loopThroughEachComponent();

if (error.error) {
return logErrorMessage();
}

phantom.exit();
});
}

function checkIfIsReference () {
function setScreenShotPath() {

if (currentDirectory === false) {
error.error = true;
error.message = errorMessages.noScreenShotpath;
return;
};

path = currentDirectory;
path += isReference ? referenceFolder : testFolder;
}

function setViewPortSize () {
var viewportsArray = viewports.split(',');

if (viewportsArray.length < 2) {
error.error = true;
error.message = errorMessages.viewportParametersIncorrect;
return;
}

page.viewportSize = {
width: viewportsArray[0],
height: viewportsArray[1]
};
}

function loopThroughEachComponent () {
if (Object.keys(selectorList).length === 0) {
error.error = true;
error.message = errorMessages.noSelectorsPassed;
return;
}

for (var selector in selectorList) {
currentSelector = selector;
handleEachComponent();
}
}

function handleEachComponent () {
clipPageToComponent(selectorList[currentSelector]);
screenshotElement();
handleBase64();
var selector = selectorList[currentSelector];

var testest = doesSelectorExist(selector);

// console.log('doesSelectorExist', testest);

if (testest === false) {
error.error = true;
error.message = errorMessages.selectorDoesnotExist;
logErrorMessage();
return;
}

clipPageToComponent(selector);
// screenshotElement();
logReferenceMessage();
// handleBase64();
}

function doesSelectorExist(selector) {
var selectorLength = page.evaluate(function(selector) {
return document.querySelectorAll(selector).length;
}, selector);

// console.log('selectorLength', selectorLength);

if (selectorLength === 0) {
return false;
}

return true;
}

function clipPageToComponent (selector) {
Expand All @@ -62,9 +147,8 @@ function clipPageToComponent (selector) {
}

function screenshotElement () {
var imageScreenShotPath = path + screenShotName() + '.png';
var imageScreenShotPath = path + screenShotName() + pngExtensions;
page.render(imageScreenShotPath);
logReferenceMessage();
}

function logReferenceMessage () {
Expand Down
4 changes: 1 addition & 3 deletions package.json
Expand Up @@ -10,7 +10,6 @@
"url": "https://github.com/mmacartney10/ocularjs"
},
"scripts": {
"start": "serve ./test/test-site/",
"app": "node app/main.js",
"test": "./node_modules/.bin/mocha ./test/*.js --timeout 10000"
},
Expand All @@ -27,7 +26,6 @@
},
"devDependencies": {
"chai": "^3.5.0",
"mocha": "^3.2.0",
"serve": "^3.4.0"
"mocha": "^3.2.0"
}
}
34 changes: 17 additions & 17 deletions test/example-test.js
Expand Up @@ -22,20 +22,20 @@ function callTest() {
});
}

describe('When creating the hiHello string', function() {
describe('And the function thisIsTest is called', function() {
it('should return the value test', function() {
return thisIsTest().then(function(result) {
expect(result).to.equal('test');
});
});
});

describe('And the function hiHello is called', function() {
it('should return the value test nothing', function() {
return hiHello('test').then(function(result) {
expect(result).to.equal('test nothing');
});
});
});
});
// describe('When creating the hiHello string', function() {
// describe('And the function thisIsTest is called', function() {
// it('should return the value test', function() {
// return thisIsTest().then(function(result) {
// expect(result).to.equal('test');
// });
// });
// });
//
// describe('And the function hiHello is called', function() {
// it('should return the value test nothing', function() {
// return hiHello('test').then(function(result) {
// expect(result).to.equal('test nothing');
// });
// });
// });
// });

0 comments on commit 5009bef

Please sign in to comment.