136 lines
3.5 KiB
JavaScript
136 lines
3.5 KiB
JavaScript
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();
|
|
});
|
|
});
|
|
|
|
|