I am trying to check the visual state of several buttons - hover, click, focus - and was looking for a way not to copy basically the same command casper.then()again and again. I thought I could do it in a simple loop.
I made a small array (currently) of 5 buttons and while-looped through them I added CasperJS steps for each of the states that I would like to write. Unfortunately, only the last of the steps is actually performed.
I read a few posts about the loop, but all of them seem to include links to a link on a page or some other script that doesn't seem to match what I'm looking for.
Maybe I'm just tight? Code below ...
casper.thenOpen( 'docs/buttons/test.html' );
var buttonStyles = [
{ selector: '.grey0', title: 'Button - Grey 0' },
{ selector: '.grey25', title: 'Button - Grey 25' },
{ selector: '.grey50', title: 'Button - Grey 50' },
{ selector: '.grey75', title: 'Button - Grey 75' },
{ selector: '.grey100', title: 'Button - Grey 100' },
];
while (buttonStyles.length > 0) {
buttonStyle = buttonStyles.pop();
casper.then(function(){
phantomcss.screenshot(buttonStyle.selector, buttonStyle.title);
});
casper.then(function(){
this.mouse.move(buttonStyle.selector);
phantomcss.screenshot(buttonStyle.selector, buttonStyle.title + ' - Hover');
});
casper.then(function(){
this.mouse.down(buttonStyle.selector);
phantomcss.screenshot(buttonStyle.selector, buttonStyle.title + ' - Down');
});
}
casper.test.done();