Skip to content

Instantly share code, notes, and snippets.

@alexishevia
Created October 9, 2016 23:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alexishevia/5ca15f4a1486c2235fcc362301251c3e to your computer and use it in GitHub Desktop.
Save alexishevia/5ca15f4a1486c2235fcc362301251c3e to your computer and use it in GitHub Desktop.
Start a selenium server and express app before running tests with Jasmine and Selenium
var selenium = require('selenium-standalone');
var Jasmine = require('jasmine');
var jasmine = new Jasmine();
var TerminalReporter = require('jasmine-reporters').TerminalReporter;
var reporter = new TerminalReporter({
verbosity: 3,
color: true,
showStack: true
});
var webDriver, seleniumServer;
jasmine.addReporter(reporter);
jasmine.loadConfig({
"spec_dir": "specs/e2e",
"spec_files": ["**/*[sS]pec.js"],
"stopSpecOnExpectationFailure": true,
"random": false
});
jasmine.onComplete(function(passed){
webDriver.close().then(function(){
if(seleniumServer){
seleniumServer.kill();
}
if(passed){ process.exit(0); }
else { process.exit(1); }
});
});
function startSelenium(cb){
if(process.env.SELENIUM_SERVER){
return cb();
}
selenium.install({}, function(err){
if(err){
throw 'Error installing selenium server' + err;
}
console.log('selenium server installed.');
selenium.start({}, function(err, child){
if(err){
throw 'Error starting selenium server' + err;
}
console.log('selenium server started.');
process.env.SELENIUM_SERVER = 'http://127.0.0.1:4444/wd/hub';
seleniumServer = child;
cb();
});
});
}
function startWebServer(cb){
if(process.env.TEST_WEB_SERVER){
return cb();
}
else {
var serverRunner = require('../../bin/www');
console.log('starting app server');
serverRunner({
onListening: function(address){
var url = 'http://127.0.0.1:' + address.port;
process.env.TEST_WEB_SERVER = url;
console.log('app server listening on ' + url);
cb();
}
});
}
}
startSelenium(function(){
startWebServer(function(){
webDriver = require('./support/getWebDriver')();
webDriver.get(process.env.TEST_WEB_SERVER)
.then(function(){
jasmine.execute();
});
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment