Created environment for UI test

Change-Id: Icdc737f3ddfe3cc1602eb4304c0d5e405b1a341a
diff --git a/xos/tests/ui/.gitignore b/xos/tests/ui/.gitignore
new file mode 100644
index 0000000..0ed1513
--- /dev/null
+++ b/xos/tests/ui/.gitignore
@@ -0,0 +1,3 @@
+node_modules/
+bower_components/
+test-result/
diff --git a/xos/tests/ui/README.md b/xos/tests/ui/README.md
new file mode 100644
index 0000000..878723c
--- /dev/null
+++ b/xos/tests/ui/README.md
@@ -0,0 +1,8 @@
+# UI Test
+
+This folder contain the configuration files to test custom views
+
+To execute the tests, run:
+- `npm install`
+- `bower install`
+- `npm test`
\ No newline at end of file
diff --git a/xos/tests/ui/bower.json b/xos/tests/ui/bower.json
new file mode 100644
index 0000000..cebef37
--- /dev/null
+++ b/xos/tests/ui/bower.json
@@ -0,0 +1,28 @@
+{
+  "name": "ui",
+  "description": "Test configuration for Custom Views",
+  "main": "index.js",
+  "authors": [
+    "Open Networking Lab"
+  ],
+  "license": "Apache-2.0",
+  "moduleType": [],
+  "homepage": "ngxoslib.wiki.opencord.org",
+  "private": true,
+  "ignore": [
+    "**/.*",
+    "node_modules",
+    "bower_components",
+    "test",
+    "tests"
+  ],
+  "devDependencies": {
+    "jquery": "~3.1.0",
+    "jasmine-jquery": "~2.1.1",
+    "ng-xos-lib": "opencord/ng-xos-lib",
+    "angular-mocks": "~1.5.8"
+  },
+  "resolutions": {
+    "angular": "1.4.7"
+  }
+}
diff --git a/xos/tests/ui/karma.conf.views.js b/xos/tests/ui/karma.conf.views.js
new file mode 100644
index 0000000..3cf82df
--- /dev/null
+++ b/xos/tests/ui/karma.conf.views.js
@@ -0,0 +1,136 @@
+'use strict';
+
+// THIS KARMA CONF WILL ITERATE THE VIEW FOLDER AND PERFORM ALL THE TESTS!!!
+
+// Karma configuration
+// Generated on Tue Oct 06 2015 09:27:10 GMT+0000 (UTC)
+
+/* eslint indent: [2,2], quotes: [2, "single"]*/
+
+const babelPreset = require('babel-preset-es2015');
+const fs = require('fs');
+
+const viewDir = '../../core/xoslib/static/js/';
+const vendorDir = '../../core/xoslib/static/js/vendor/';
+let viewFiles = fs.readdirSync(viewDir);
+let vendorFiles = fs.readdirSync(vendorDir);
+
+viewFiles = viewFiles.filter(f => f.indexOf('js') >= 0).filter(f => f.match(/^xos[A-Z][a-z]+/)).map(f => `${viewDir}${f}`);
+
+vendorFiles = vendorFiles.filter(f => f.indexOf('js') >= 0).filter(f => f.match(/^xos[A-Z][a-z]+/)).map(f => `${vendorDir}${f}`);
+
+/*eslint-disable*/
+
+var files = [
+  'node_modules/babel-polyfill/dist/polyfill.js',
+
+
+  // loading jquery (it's used in tests)
+  `./bower_components/jquery/dist/jquery.js`,
+  `./bower_components/jasmine-jquery/lib/jasmine-jquery.js`,
+
+  // loading helpers and vendors
+  `./bower_components/ng-xos-lib/dist/ngXosVendor.min.js`,
+  `./bower_components/ng-xos-lib/dist/ngXosHelpers.min.js`,
+
+  // loading ngMock
+  'template.module.js',
+  `./bower_components/angular-mocks/angular-mocks.js`,
+]
+.concat(vendorFiles)
+.concat(viewFiles)
+.concat([
+  // loading tests
+  `xosHelpers/spec/test_helpers.js`,
+  `../../../views/ngXosViews/*/spec/*.test.js`,
+  `../../../views/ngXosViews/*/spec/**/*.mock.js`
+]);
+
+module.exports = function(config) {
+/*eslint-enable*/
+  config.set({
+
+    // base path that will be used to resolve all patterns (eg. files, exclude)
+    basePath: '',
+
+
+    // frameworks to use
+    // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
+    frameworks: ['jasmine'],
+
+
+    // list of files / patterns to load in the browser
+    files: files,
+
+
+    // list of files to exclude
+    exclude: [
+    ],
+
+
+    // preprocess matching files before serving them to the browser
+    // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
+    preprocessors: {
+      '../../../views/ngXosViews/*/spec/*.test.js': ['babel'],
+      '../../../views/ngXosViews/*/spec/**/*.mock.js': ['babel'],
+    },
+
+    babelPreprocessor: {
+      options: {
+        presets: [babelPreset],
+        sourceMap: 'inline'
+      }
+    },
+
+    //ngHtml2JsPreprocessor: {
+    //  stripPrefix: 'src/', //strip the src path from template url (http://stackoverflow.com/questions/22869668/karma-unexpected-request-when-testing-angular-directive-even-with-ng-html2js)
+    //  moduleName: 'templates' // define the template module name
+    //},
+
+    // test results reporter to use
+    // possible values: 'dots', 'progress'
+    // available reporters: https://npmjs.org/browse/keyword/karma-reporter
+    reporters: ['mocha', 'junit', 'coverage'],
+
+    junitReporter: {
+      outputDir: 'test-result',
+      useBrowserName: false,
+      outputFile: 'test-results.xml'
+    },
+
+    coverageReporter: {
+      type: 'cobertura',
+      subdir: '.',
+      dir: 'test-result/'
+    },
+
+    // web server port
+    port: 9876,
+
+
+    // enable / disable colors in the output (reporters and logs)
+    colors: true,
+
+
+    // level of logging
+    // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
+    logLevel: config.LOG_INFO,
+
+
+    // enable / disable watching file and executing tests whenever any file changes
+    autoWatch: false,
+
+
+    // start these browsers
+    // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
+    browsers: [
+      'PhantomJS',
+      //'Chrome'
+    ],
+
+
+    // Continuous Integration mode
+    // if true, Karma captures browsers, runs the tests and exits
+    singleRun: true
+  });
+};
diff --git a/xos/tests/ui/package.json b/xos/tests/ui/package.json
new file mode 100644
index 0000000..24ae3aa
--- /dev/null
+++ b/xos/tests/ui/package.json
@@ -0,0 +1,28 @@
+{
+  "name": "ui",
+  "version": "1.0.0",
+  "description": "Test configuration for Custom Views",
+  "main": "index.js",
+  "scripts": {
+    "test": "karma start karma.conf.views.js"
+  },
+  "author": "Open Networking Lab",
+  "license": "Apache-2.0",
+  "devDependencies": {
+    "babel-polyfill": "^6.7.4",
+    "babel-preset-es2015": "^6.9.0",
+    "jasmine-core": "^2.4.1",
+    "karma": "^1.1.1",
+    "karma-babel-preprocessor": "^6.0.1",
+    "karma-chrome-launcher": "^0.2.3",
+    "karma-coverage": "^0.5.5",
+    "karma-jasmine": "^0.3.8",
+    "karma-junit-reporter": "^0.4.2",
+    "karma-mocha-reporter": "^1.1.3",
+    "karma-ng-html2js-preprocessor": "^0.2.0",
+    "karma-phantomjs-launcher": "^0.2.1",
+    "phantomjs": "^2.1.7",
+    "phantomjs-prebuilt": "^2.1.7",
+    "wiredep": "^3.0.0-beta"
+  }
+}
diff --git a/xos/tests/ui/template.module.js b/xos/tests/ui/template.module.js
new file mode 100644
index 0000000..1775ed0
--- /dev/null
+++ b/xos/tests/ui/template.module.js
@@ -0,0 +1,3 @@
+'use strict';
+
+angular.module('templates', []);
\ No newline at end of file