Okay the idea here is to take Screenshots of how a user would see my websites everyday. So right now I have everything working except for when I add the different links for the sites! (All of my sites follow the same path). You will see below that I have a comment that shows the piece that breaks the code from running.
var casper = require("casper").create();
var screenshotUrls = ["http://www.example.com", "http://www.facebook.com", "http://www.google.com"];
var screenshotPaths = ["example.com", "facebook.com", "google.com"];
var screenshotLinks = ["/jobs/1", "/jobs/2"];
screenshotNow = new Date(),
screenshotDateTime = screenshotNow.getFullYear() + pad(screenshotNow.getMonth() + 1) + pad(screenshotNow.getDate()),
viewports = [
{
'name': 'smartphone-portrait',
'viewport': {width: 320, height: 3480}
},
{
'name': 'smartphone-landscape',
'viewport': {width: 480, height: 3320}
},
{
'name': 'tablet-portrait',
'viewport': {width: 768, height: 3024}
},
{
'name': 'tablet-landscape',
'viewport': {width: 1024, height: 3768}
},
{
'name': 'desktop-standard',
'viewport': {width: 1280, height: 3024}
}
];
i = -1;
casper.start().eachThen(screenshotUrls, function(response) {
this.each(viewports, function(casper, viewport) {
this.then(function() {
this.viewport(viewport.viewport.width, viewport.viewport.height);
});
this.thenOpen(response.data, function() {
this.wait(3500);
});
this.then(function(){
this.echo('Screenshot for '+ screenshotPaths[i] + viewport.name + ' (' + viewport.viewport.width + 'x' + viewport.viewport.height + ')', 'info');
this.capture('screenshots/' + screenshotPaths[i] + '/' + screenshotDateTime + '/' + 'homepage/' + viewport.name + '-' + viewport.viewport.width + 'x' + viewport.viewport.height + '.png', {
top: 0,
left: 0,
width: viewport.viewport.width,
height: viewport.viewport.height
});
});
//Below is the part that breaks
this.each(screenshotLinks, function(response) {
this.each(viewports, function(casper, viewport) {
this.then(function() {
this.viewport(viewport.viewport.width, viewport.viewport.height);
});
this.thenOpen(response.data, function() {
this.wait(3500);
});
this.then(function(){
this.echo('Screenshot for '+ screenshotPaths[i] + viewport.name + ' (' + viewport.viewport.width + 'x' + viewport.viewport.height + ')', 'info');
this.capture('screenshots/' + screenshotPaths[i] + '/' + screenshotDateTime + '/' + screeenshotLinks[i] + '/' + viewport.name + '-' + viewport.viewport.width + 'x' + viewport.viewport.height + '.png', {
top: 0,
left: 0,
width: viewport.viewport.width,
height: viewport.viewport.height
});
});
});
});
});
++i;
});
casper.run();
function pad(number) {
var r = String(number);
if ( r.length === 1 ) {
r = '0' + r;
}
return r;
}