diff --git a/.gitignore b/.gitignore index 20d3e2defc..14e949c0fd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .idea +**/.*/* npm-debug.log node_modules dist diff --git a/Dockerfile b/Dockerfile index b21d16db4e..e8bec70901 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,9 @@ FROM node:4.2.3 +RUN apt-get update && \ + apt-get install -y openjdk-7-jre-headless && \ + rm -rf /var/lib/apt/lists/* + RUN mkdir -p /usr/src/app WORKDIR /usr/src/app diff --git a/e2e/smoke.test.js b/e2e/smoke.test.js new file mode 100644 index 0000000000..d79c9fae73 --- /dev/null +++ b/e2e/smoke.test.js @@ -0,0 +1,16 @@ +'use strict'; + +var sh = require('../tools/node_modules/shelljs'); + +var CMD = "/sbin/ip route|awk '/default/ { print $3 }'"; +var hostIp = sh.exec(CMD, { silent: true }).output.trim(); + +describe('Smoke test', function () { + + it('should have a title', function () { + browser.get('http://' + hostIp); + expect(browser.getTitle()).toEqual(''); + }); + +}); + diff --git a/src/app/app.spec.js b/src/app/app.spec.js new file mode 100644 index 0000000000..85b1b7dcb5 --- /dev/null +++ b/src/app/app.spec.js @@ -0,0 +1,10 @@ +(function () { + 'use strict'; + + describe('app', function () { + it('should', function () { + expect(true).toBe(true); + }); + }); + +})(); diff --git a/tools/karma.conf.js b/tools/karma.conf.js new file mode 100644 index 0000000000..45d89730d4 --- /dev/null +++ b/tools/karma.conf.js @@ -0,0 +1,60 @@ +'use strict'; + +module.exports = function (config) { + + config.set({ + + autoWatch: true, + + basePath: '../src/', + + browsers: ['PhantomJS'], + + coverageReporter: { + type: 'html', + dir: '../tools/.coverage-karma/' + }, + + files: [ + 'config.js', + + 'lib/angular/angular.min.js', + 'lib/helion-ui-framework/**/*.module.js', + 'lib/helion-ui-framework/**/!(*.mock|*.spec).js', + 'lib/helion-ui-framework/**/!(*.mock).html', + + 'index.module.js', + 'app/**/*.module.js', + 'app/**/!(*.mock|*.spec).js', + 'app/**/*.mock.js', + 'app/**/*.spec.js', + 'app/**/*.html' + ], + + frameworks: ['jasmine'], + + ngHtml2JsPreprocessor: { + moduleName: 'templates' + }, + + phantomjsLauncher: { + // Have phantomjs exit if a ResourceError is encountered + // (useful if karma exits without killing phantom) + exitOnResourceError: true + }, + + plugins: [ + 'karma-phantomjs-launcher', + 'karma-jasmine', + 'karma-ng-html2js-preprocessor', + 'karma-coverage' + ], + + preprocessors: { + 'app/**/*.html': ['ng-html2js'], + 'app/**/!(*.mock|*.spec).js': ['coverage'] + }, + + reporters: ['progress', 'coverage'] + }); +}; diff --git a/tools/package.json b/tools/package.json index f169411731..ca6e6ed518 100644 --- a/tools/package.json +++ b/tools/package.json @@ -16,5 +16,17 @@ "gulp-inject": "^3.0.0", "gulp-sass": "^2.1.1", "run-sequence": "^1.1.5" + }, + "devDependencies": { + "jasmine-core": "^2.4.1", + "karma": "^0.13.19", + "karma-cli": "^0.1.2", + "karma-coverage": "^0.5.3", + "karma-jasmine": "^0.3.6", + "karma-ng-html2js-preprocessor": "^0.2.0", + "karma-phantomjs-launcher": "^0.2.3", + "phantomjs": "^1.9.19", + "protractor": "^3.0.0", + "shelljs": "^0.5.3" } } diff --git a/tools/phantomjsdriver.log b/tools/phantomjsdriver.log new file mode 100644 index 0000000000..ef3990af20 --- /dev/null +++ b/tools/phantomjsdriver.log @@ -0,0 +1,42 @@ +[INFO - 2016-01-07T23:33:39.415Z] GhostDriver - Main - running on port 28526 +[INFO - 2016-01-07T23:33:39.525Z] Session [149d4b10-b597-11e5-bc6d-4930020efe1f] - page.settings - {"XSSAuditingEnabled":false,"javascriptCanCloseWindows":true,"javascriptCanOpenWindows":true,"javascriptEnabled":true,"loadImages":true,"localToRemoteUrlAccessEnabled":false,"userAgent":"Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.8 Safari/534.34","webSecurityEnabled":true} +[INFO - 2016-01-07T23:33:39.525Z] Session [149d4b10-b597-11e5-bc6d-4930020efe1f] - page.customHeaders: - {} +[INFO - 2016-01-07T23:33:39.526Z] Session [149d4b10-b597-11e5-bc6d-4930020efe1f] - Session.negotiatedCapabilities - {"browserName":"phantomjs","version":"1.9.8","driverName":"ghostdriver","driverVersion":"1.1.0","platform":"linux-unknown-64bit","javascriptEnabled":true,"takesScreenshot":true,"handlesAlerts":false,"databaseEnabled":false,"locationContextEnabled":false,"applicationCacheEnabled":false,"browserConnectionEnabled":false,"cssSelectorsEnabled":true,"webStorageEnabled":false,"rotatable":false,"acceptSslCerts":false,"nativeEvents":true,"proxy":{"proxyType":"direct"}} +[INFO - 2016-01-07T23:33:39.528Z] SessionManagerReqHand - _postNewSessionCommand - New Session Created: 149d4b10-b597-11e5-bc6d-4930020efe1f +[INFO - 2016-01-07T23:33:40.132Z] ShutdownReqHand - _handle - About to shutdown +[INFO - 2016-01-07T23:34:46.273Z] GhostDriver - Main - running on port 27236 +[INFO - 2016-01-07T23:34:46.695Z] Session [3ca6c640-b597-11e5-8e2f-91887da7a3a6] - page.settings - {"XSSAuditingEnabled":false,"javascriptCanCloseWindows":true,"javascriptCanOpenWindows":true,"javascriptEnabled":true,"loadImages":true,"localToRemoteUrlAccessEnabled":false,"userAgent":"Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.8 Safari/534.34","webSecurityEnabled":true} +[INFO - 2016-01-07T23:34:46.695Z] Session [3ca6c640-b597-11e5-8e2f-91887da7a3a6] - page.customHeaders: - {} +[INFO - 2016-01-07T23:34:46.696Z] Session [3ca6c640-b597-11e5-8e2f-91887da7a3a6] - Session.negotiatedCapabilities - {"browserName":"phantomjs","version":"1.9.8","driverName":"ghostdriver","driverVersion":"1.1.0","platform":"linux-unknown-64bit","javascriptEnabled":true,"takesScreenshot":true,"handlesAlerts":false,"databaseEnabled":false,"locationContextEnabled":false,"applicationCacheEnabled":false,"browserConnectionEnabled":false,"cssSelectorsEnabled":true,"webStorageEnabled":false,"rotatable":false,"acceptSslCerts":false,"nativeEvents":true,"proxy":{"proxyType":"direct"}} +[INFO - 2016-01-07T23:34:46.698Z] SessionManagerReqHand - _postNewSessionCommand - New Session Created: 3ca6c640-b597-11e5-8e2f-91887da7a3a6 +[INFO - 2016-01-07T23:34:47.332Z] ShutdownReqHand - _handle - About to shutdown +[INFO - 2016-01-07T23:35:03.253Z] GhostDriver - Main - running on port 6502 +[INFO - 2016-01-07T23:35:03.669Z] Session [46c4cd20-b597-11e5-bc36-1fe541482a9f] - page.settings - {"XSSAuditingEnabled":false,"javascriptCanCloseWindows":true,"javascriptCanOpenWindows":true,"javascriptEnabled":true,"loadImages":true,"localToRemoteUrlAccessEnabled":false,"userAgent":"Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.8 Safari/534.34","webSecurityEnabled":true} +[INFO - 2016-01-07T23:35:03.669Z] Session [46c4cd20-b597-11e5-bc36-1fe541482a9f] - page.customHeaders: - {} +[INFO - 2016-01-07T23:35:03.670Z] Session [46c4cd20-b597-11e5-bc36-1fe541482a9f] - Session.negotiatedCapabilities - {"browserName":"phantomjs","version":"1.9.8","driverName":"ghostdriver","driverVersion":"1.1.0","platform":"linux-unknown-64bit","javascriptEnabled":true,"takesScreenshot":true,"handlesAlerts":false,"databaseEnabled":false,"locationContextEnabled":false,"applicationCacheEnabled":false,"browserConnectionEnabled":false,"cssSelectorsEnabled":true,"webStorageEnabled":false,"rotatable":false,"acceptSslCerts":false,"nativeEvents":true,"proxy":{"proxyType":"direct"}} +[INFO - 2016-01-07T23:35:03.671Z] SessionManagerReqHand - _postNewSessionCommand - New Session Created: 46c4cd20-b597-11e5-bc36-1fe541482a9f +[INFO - 2016-01-07T23:35:04.303Z] ShutdownReqHand - _handle - About to shutdown +[INFO - 2016-01-07T23:41:37.211Z] GhostDriver - Main - running on port 2511 +[INFO - 2016-01-07T23:41:37.628Z] Session [31962c90-b598-11e5-ae26-1f9cee8d97f9] - page.settings - {"XSSAuditingEnabled":false,"javascriptCanCloseWindows":true,"javascriptCanOpenWindows":true,"javascriptEnabled":true,"loadImages":true,"localToRemoteUrlAccessEnabled":false,"userAgent":"Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.8 Safari/534.34","webSecurityEnabled":true} +[INFO - 2016-01-07T23:41:37.629Z] Session [31962c90-b598-11e5-ae26-1f9cee8d97f9] - page.customHeaders: - {} +[INFO - 2016-01-07T23:41:37.629Z] Session [31962c90-b598-11e5-ae26-1f9cee8d97f9] - Session.negotiatedCapabilities - {"browserName":"phantomjs","version":"1.9.8","driverName":"ghostdriver","driverVersion":"1.1.0","platform":"linux-unknown-64bit","javascriptEnabled":true,"takesScreenshot":true,"handlesAlerts":false,"databaseEnabled":false,"locationContextEnabled":false,"applicationCacheEnabled":false,"browserConnectionEnabled":false,"cssSelectorsEnabled":true,"webStorageEnabled":false,"rotatable":false,"acceptSslCerts":false,"nativeEvents":true,"proxy":{"proxyType":"direct"}} +[INFO - 2016-01-07T23:41:37.631Z] SessionManagerReqHand - _postNewSessionCommand - New Session Created: 31962c90-b598-11e5-ae26-1f9cee8d97f9 +[INFO - 2016-01-07T23:41:38.262Z] ShutdownReqHand - _handle - About to shutdown +[INFO - 2016-01-08T00:06:34.951Z] GhostDriver - Main - running on port 4592 +[INFO - 2016-01-08T00:06:35.374Z] Session [ae503ac0-b59b-11e5-a81e-55d800b84f0d] - page.settings - {"XSSAuditingEnabled":false,"javascriptCanCloseWindows":true,"javascriptCanOpenWindows":true,"javascriptEnabled":true,"loadImages":true,"localToRemoteUrlAccessEnabled":false,"userAgent":"Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.8 Safari/534.34","webSecurityEnabled":true} +[INFO - 2016-01-08T00:06:35.374Z] Session [ae503ac0-b59b-11e5-a81e-55d800b84f0d] - page.customHeaders: - {} +[INFO - 2016-01-08T00:06:35.375Z] Session [ae503ac0-b59b-11e5-a81e-55d800b84f0d] - Session.negotiatedCapabilities - {"browserName":"phantomjs","version":"1.9.8","driverName":"ghostdriver","driverVersion":"1.1.0","platform":"linux-unknown-64bit","javascriptEnabled":true,"takesScreenshot":true,"handlesAlerts":false,"databaseEnabled":false,"locationContextEnabled":false,"applicationCacheEnabled":false,"browserConnectionEnabled":false,"cssSelectorsEnabled":true,"webStorageEnabled":false,"rotatable":false,"acceptSslCerts":false,"nativeEvents":true,"proxy":{"proxyType":"direct"}} +[INFO - 2016-01-08T00:06:35.377Z] SessionManagerReqHand - _postNewSessionCommand - New Session Created: ae503ac0-b59b-11e5-a81e-55d800b84f0d +[INFO - 2016-01-08T00:06:36.141Z] ShutdownReqHand - _handle - About to shutdown +[INFO - 2016-01-08T00:07:31.761Z] GhostDriver - Main - running on port 10990 +[INFO - 2016-01-08T00:07:32.187Z] Session [d02d0d80-b59b-11e5-b490-9765ef91d697] - page.settings - {"XSSAuditingEnabled":false,"javascriptCanCloseWindows":true,"javascriptCanOpenWindows":true,"javascriptEnabled":true,"loadImages":true,"localToRemoteUrlAccessEnabled":false,"userAgent":"Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.8 Safari/534.34","webSecurityEnabled":true} +[INFO - 2016-01-08T00:07:32.187Z] Session [d02d0d80-b59b-11e5-b490-9765ef91d697] - page.customHeaders: - {} +[INFO - 2016-01-08T00:07:32.188Z] Session [d02d0d80-b59b-11e5-b490-9765ef91d697] - Session.negotiatedCapabilities - {"browserName":"phantomjs","version":"1.9.8","driverName":"ghostdriver","driverVersion":"1.1.0","platform":"linux-unknown-64bit","javascriptEnabled":true,"takesScreenshot":true,"handlesAlerts":false,"databaseEnabled":false,"locationContextEnabled":false,"applicationCacheEnabled":false,"browserConnectionEnabled":false,"cssSelectorsEnabled":true,"webStorageEnabled":false,"rotatable":false,"acceptSslCerts":false,"nativeEvents":true,"proxy":{"proxyType":"direct"}} +[INFO - 2016-01-08T00:07:32.190Z] SessionManagerReqHand - _postNewSessionCommand - New Session Created: d02d0d80-b59b-11e5-b490-9765ef91d697 +[INFO - 2016-01-08T00:07:32.961Z] ShutdownReqHand - _handle - About to shutdown +[INFO - 2016-01-08T00:07:59.189Z] GhostDriver - Main - running on port 4407 +[INFO - 2016-01-08T00:07:59.609Z] Session [e0855160-b59b-11e5-9697-714465552303] - page.settings - {"XSSAuditingEnabled":false,"javascriptCanCloseWindows":true,"javascriptCanOpenWindows":true,"javascriptEnabled":true,"loadImages":true,"localToRemoteUrlAccessEnabled":false,"userAgent":"Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.8 Safari/534.34","webSecurityEnabled":true} +[INFO - 2016-01-08T00:07:59.609Z] Session [e0855160-b59b-11e5-9697-714465552303] - page.customHeaders: - {} +[INFO - 2016-01-08T00:07:59.610Z] Session [e0855160-b59b-11e5-9697-714465552303] - Session.negotiatedCapabilities - {"browserName":"phantomjs","version":"1.9.8","driverName":"ghostdriver","driverVersion":"1.1.0","platform":"linux-unknown-64bit","javascriptEnabled":true,"takesScreenshot":true,"handlesAlerts":false,"databaseEnabled":false,"locationContextEnabled":false,"applicationCacheEnabled":false,"browserConnectionEnabled":false,"cssSelectorsEnabled":true,"webStorageEnabled":false,"rotatable":false,"acceptSslCerts":false,"nativeEvents":true,"proxy":{"proxyType":"direct"}} +[INFO - 2016-01-08T00:07:59.611Z] SessionManagerReqHand - _postNewSessionCommand - New Session Created: e0855160-b59b-11e5-9697-714465552303 +[INFO - 2016-01-08T00:08:00.362Z] ShutdownReqHand - _handle - About to shutdown diff --git a/tools/protractor.conf.js b/tools/protractor.conf.js new file mode 100644 index 0000000000..d6ace58c4e --- /dev/null +++ b/tools/protractor.conf.js @@ -0,0 +1,14 @@ +'use strict'; + +exports.config = { + + specs: ['../e2e/**/*.test.js'], + + framework: 'jasmine2', + + capabilities: { + 'browserName': 'phantomjs', + 'phantomjs.binary.path': require('phantomjs').path, + 'phantomjs.ghostdriver.cli.args': ['--loglevel=DEBUG'] + } +};