Files
kupshop/tests/end2end/bootstrap.js
2025-08-02 16:30:27 +02:00

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();
});
});