var viewport = casper.cli.options.viewport || 'desktop-standard', viewports = { 'smartphone-portrait' : { 'name': 'smartphone-portrait', 'viewport': {width: 320, height: 480} }, 'smartphone-landscape': { 'name': 'smartphone-landscape', 'viewport': {width: 480, height: 320} }, 'tablet-portrait' : { 'name': 'tablet-portrait', 'viewport': {width: 768, height: 1024} }, 'tablet-landscape' : { 'name': 'tablet-landscape', 'viewport': {width: 1024, height: 768} }, 'desktop-standard' : { 'name': 'desktop-standard', 'viewport': {width: 1280, height: 1024} } }, activeViewport = viewports[viewport]; // Setup logging casper.options.verbose = true; casper.options.logLevel = 'warning'; var common = (function() { var enableScreenshots = casper.cli.options.hasOwnProperty('screenshots'); var shopData = {}; return { /** * @param test {Tester} * @returns {*} */ goToHomepage: function(test) { return casper.start('http://kupshop.local/', function() { common.screenshot('homepage'); test.assertHttpStatus(200, 'Homepage loded'); }); }, screenshotCounter: 0, screenshot: function(name) { if (enableScreenshots) { name = name || ('screenshot' + common.screenshotCounter++); casper.capture(['tests/data/screenshots/', activeViewport.name, '/', name, '.png'].join('')); } }, error: function(message) { if (enableScreenshots) { var name = 'error' + common.screenshotCounter++, filename = ['tests/data/screenshots/', activeViewport.name, '/', name, '.png'].join(''); casper.capture(filename); message += ' >>>> screenshot ' + filename; } throw message; }, log: function(message) { casper.log(message, 'warning'); }, setShopData: function(data) { shopData = data; }, getOrder: function() { return shopData.order; }, getUrl: function(url) { return shopData.urls[url]; }, /** * @param login {String} * @param password {String} */ showAndSendLoginForm: function (login, password) { var loginFormSelector = 'form[action="'+common.getUrl('login')+'"]', me = this; casper.click('#login_link', 'Login button clicked.'); casper.wait(500, function() { casper.test.assertVisible(loginFormSelector, 'Login form is visible.'); me.screenshot('login-dialog'); casper.fill(loginFormSelector, { 'login': login, 'password': password }, false); me.screenshot('login-dialog-filled-'+login); casper.click(loginFormSelector + ' input[name="Submit"]'); }); } }; })(); casper.on('error', function(msg, backtrace) { common.error(msg); }); casper.start(); casper.viewport(activeViewport.viewport.width, activeViewport.viewport.height); var execFile = require("child_process").execFile; execFile("symfony", ["kupshop:get_end2end_data"], null, function (err, stdout) { try { common.setShopData(JSON.parse(stdout)); } catch (err) { console.error(err); } casper.run(function () { this.test.done(); }); });