From 431622ce1492c908bebe44a7123c4d73d032ca51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Du=C5=A1an=20Jureti=C4=87?= Date: Tue, 31 Dec 2013 12:55:23 -0300 Subject: [PATCH] E2e tests: launch Selenium and node server and kill them after finishing the tests, using a test database --- .travis.yml | 6 +----- package.json | 2 +- protractor.conf.js | 2 +- test/e2e/e2e.js | 1 + test/run_tests.sh | 19 +++++++++++++++++++ 5 files changed, 23 insertions(+), 7 deletions(-) create mode 100755 test/run_tests.sh diff --git a/.travis.yml b/.travis.yml index 08a66baefe..7edd7c20b0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,11 +4,7 @@ node_js: services: - mongodb before_script: - - 'npm install -g bower grunt-cli' - - 'bower install' + - 'npm install -g grunt-cli' - export DISPLAY=:99.0 - sh -e /etc/init.d/xvfb start - cp config.json.example config.json - - ./node_modules/protractor/bin/webdriver-manager update - - ./node_modules/protractor/bin/webdriver-manager start > /dev/null & - - grunt run:dev > /dev/null & diff --git a/package.json b/package.json index 87f7604b40..a81bbd57d2 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "npm": "1.2.x" }, "scripts": { - "test": "grunt karma:continuous && ./node_modules/protractor/bin/protractor protractor.conf.js", + "test": "./test/run_tests.sh", "start": "grunt run:dev", "postinstall": "./node_modules/bower/bin/bower install -f" }, diff --git a/protractor.conf.js b/protractor.conf.js index 290322646f..305bb2cd5e 100644 --- a/protractor.conf.js +++ b/protractor.conf.js @@ -21,4 +21,4 @@ exports.config = { showColors: true, defaultTimeoutInterval: 30000 } -}; \ No newline at end of file +}; diff --git a/test/e2e/e2e.js b/test/e2e/e2e.js index c62d57b639..8bbdbe8a62 100644 --- a/test/e2e/e2e.js +++ b/test/e2e/e2e.js @@ -31,6 +31,7 @@ describe('front page', function() { it("don't login when using wrong credentials", function(){ var button = element(by.className('btn')); button.click(); + browser.sleep(1000); element(by.model('loginUsername')).sendKeys('username'); element(by.model('loginPassword')).sendKeys('pass'); var login = element(by.css("#login-tab input[value='Login']")); diff --git a/test/run_tests.sh b/test/run_tests.sh new file mode 100755 index 0000000000..761dd2b72d --- /dev/null +++ b/test/run_tests.sh @@ -0,0 +1,19 @@ +#!/bin/bash +# Configuration +TEST_DB=habitrpg_test +TEST_DB_URI="mongodb://localhost/$TEST_DB" + +# Build assets +grunt build:dev + +# Launch Node server and Selenium +echo "Recreating test database" +mongo "$TEST_DB" --eval "db.dropDatabase()" +./node_modules/protractor/bin/webdriver-manager update +./node_modules/protractor/bin/webdriver-manager start > /dev/null & +NODE_DB_URI="$TEST_DB_URI" node ./src/server.js > /dev/null & +NODE_PID=$! +trap "kill $NODE_PID && curl http://localhost:4444/selenium-server/driver/?cmd=shutDownSeleniumServer" EXIT + +sleep 3 # Wait for Selenium +grunt karma:continuous && ./node_modules/protractor/bin/protractor protractor.conf.js