diff --git a/services/web/Gruntfile.coffee b/services/web/Gruntfile.coffee index d4a4929964..6144dd8fc6 100644 --- a/services/web/Gruntfile.coffee +++ b/services/web/Gruntfile.coffee @@ -39,6 +39,7 @@ module.exports = (grunt) -> app: options: index: "app.js" + logFile: "app.log" watch: coffee: @@ -407,7 +408,7 @@ module.exports = (grunt) -> grunt.registerTask 'compile:unit_tests', 'Compile the unit tests', ['clean:unit_tests', 'coffee:unit_tests'] grunt.registerTask 'compile:acceptance_tests', 'Compile the acceptance tests', ['clean:acceptance_tests', 'coffee:acceptance_tests'] grunt.registerTask 'compile:smoke_tests', 'Compile the smoke tests', ['coffee:smoke_tests'] - grunt.registerTask 'compile:tests', 'Compile all the tests', ['compile:smoke_tests', 'compile:unit_tests'] + grunt.registerTask 'compile:tests', 'Compile all the tests', ['compile:smoke_tests', 'compile:unit_tests', 'compile:acceptance_tests'] grunt.registerTask 'compile', 'Compiles everything need to run web-sharelatex', ['compile:server', 'compile:client', 'compile:css'] grunt.registerTask 'quickcompile:coffee', 'Compiles only changed coffee files',['newer:coffee'] diff --git a/services/web/Jenkinsfile b/services/web/Jenkinsfile index 788731efb0..33aa807fdd 100644 --- a/services/web/Jenkinsfile +++ b/services/web/Jenkinsfile @@ -79,7 +79,7 @@ pipeline { } } steps { - sh 'node_modules/.bin/grunt compile --verbose' + sh 'node_modules/.bin/grunt compile compile:tests --verbose' // replace the build number placeholder for sentry sh 'node_modules/.bin/grunt version' } @@ -117,14 +117,19 @@ pipeline { } } steps { - sh 'env NODE_ENV=development ./node_modules/.bin/grunt test:unit --reporter=tap' + sh 'env NODE_ENV=development ./node_modules/.bin/grunt mochaTest:unit --reporter=tap' } } stage('Acceptance Tests') { steps { - sh 'docker pull sharelatex/acceptance-test-runner' - sh 'docker run --rm -v $(pwd):/app --env SHARELATEX_ALLOW_PUBLIC_ACCESS=true sharelatex/acceptance-test-runner' + // This tagged relase of the acceptance test runner is a temporary fix + // to get the acceptance tests working before we move to a + // docker-compose workflow. See: + // https://github.com/sharelatex/web-sharelatex-internal/pull/148 + + sh 'docker pull sharelatex/sl-acceptance-test-runner:node-6.9-mongo-3.4' + sh 'docker run --rm -v $(pwd):/app --env SHARELATEX_ALLOW_PUBLIC_ACCESS=true sharelatex/sl-acceptance-test-runner:node-6.9-mongo-3.4 || (cat forever/app.log && false)' } } diff --git a/services/web/test/acceptance/coffee/helpers/User.coffee b/services/web/test/acceptance/coffee/helpers/User.coffee index 3ee7ea52c2..d9f0b1409a 100644 --- a/services/web/test/acceptance/coffee/helpers/User.coffee +++ b/services/web/test/acceptance/coffee/helpers/User.coffee @@ -163,7 +163,7 @@ class User @request.get { url: "/register" }, (err, response, body) => - return callback(error) if error? + return callback(err) if err? csrfMatches = body.match("window.csrfToken = \"(.*?)\";") if !csrfMatches? return callback(new Error("no csrf token found")) diff --git a/services/web/test/acceptance/scripts/full-test.sh b/services/web/test/acceptance/scripts/full-test.sh index c8ce75dd4b..ca10c32a0a 100755 --- a/services/web/test/acceptance/scripts/full-test.sh +++ b/services/web/test/acceptance/scripts/full-test.sh @@ -1,26 +1,40 @@ #! /usr/bin/env bash -# If you're running on OS X, you probably need to manually -# 'rm -r node_modules/bcrypt; npm install bcrypt' inside -# the docker container, before it will start. -# npm rebuild bcrypt +# If you're running on OS X, you probably need to rebuild +# some dependencies in the docker container, before it will start. +# +# npm rebuild --update-binary echo ">> Starting server..." grunt --no-color forever:app:start -echo ">> Server started" +echo ">> Waiting for Server" -sleep 5 +count=1 +max_wait=60 -echo ">> Running acceptance tests..." -grunt --no-color mochaTest:acceptance -_test_exit_code=$? +while [ $count -le $max_wait ] +do + if nc -z localhost 3000 + then + echo ">> Server Started" -echo ">> Killing server" + echo ">> Running acceptance tests..." + grunt --no-color mochaTest:acceptance + _test_exit_code=$? -grunt --no-color forever:app:stop + echo ">> Killing server" -echo ">> Done" + grunt --no-color forever:app:stop -exit $_test_exit_code \ No newline at end of file + echo ">> Done" + + exit $_test_exit_code + fi + + sleep 1 + echo -n "." + count=$((count+1)) +done +exit 1