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
