diff --git a/web/gui/src/main/webapp/tests/README.txt b/web/gui/src/main/webapp/tests/README.txt
index 1a6b767..831bf9a 100644
--- a/web/gui/src/main/webapp/tests/README.txt
+++ b/web/gui/src/main/webapp/tests/README.txt
@@ -37,7 +37,4 @@
 The debugger will break at the given point, allowing you to inspect context.
 
 ----------------------------------------------------------------------
-FIXME
-=====
 
-Most of the skipped test were failing because of: `ReferenceError: userPrefs is not defined`
diff --git a/web/gui/src/main/webapp/tests/app/fw/layer/flash-spec.js b/web/gui/src/main/webapp/tests/app/fw/layer/flash-spec.js
index 7d9a982..4c08cd5 100644
--- a/web/gui/src/main/webapp/tests/app/fw/layer/flash-spec.js
+++ b/web/gui/src/main/webapp/tests/app/fw/layer/flash-spec.js
@@ -45,9 +45,9 @@
         expect(flash).toBeDefined();
     });
 
-    xit('should define api functions', function () {
+    it('should define api functions', function () {
         expect(fs.areFunctions(flash, [
-            'initFlash', 'flash', 'enable'
+            'initFlash', 'flash', 'enable', 'tempDiv'
         ])).toBe(true);
     });
 
diff --git a/web/gui/src/main/webapp/tests/app/fw/layer/panel-spec.js b/web/gui/src/main/webapp/tests/app/fw/layer/panel-spec.js
index 452a4be..07a1b35 100644
--- a/web/gui/src/main/webapp/tests/app/fw/layer/panel-spec.js
+++ b/web/gui/src/main/webapp/tests/app/fw/layer/panel-spec.js
@@ -27,6 +27,8 @@
         $timeout = _$timeout_;
         fs = FnService;
         ps = PanelService;
+
+        spyOn(fs, 'debugOn').and.returnValue(true);
         d3Elem = d3.select('body').append('div').attr('id', 'floatpanels');
         ps.init();
     }));
@@ -44,7 +46,7 @@
         expect(ps).toBeDefined();
     });
 
-    xit('should define api functions', function () {
+    it('should define api functions', function () {
         expect(fs.areFunctions(ps, [
             'init', 'createPanel', 'destroyPanel'
         ])).toBeTruthy();
@@ -62,7 +64,7 @@
         expect(floatPanelSelection().size()).toBe(0);
     });
 
-    xit('should create a default panel', function () {
+    it('should create a default panel', function () {
         spyOn($log, 'warn');
         spyOn($log, 'debug');
         var p = ps.createPanel('foo');
@@ -107,13 +109,13 @@
         expect(floatPanelSelection().size()).toBe(1);
     });
 
-    xit('should note when there is no panel to destroy', function () {
+    it('should note when there is no panel to destroy', function () {
         spyOn($log, 'debug');
         ps.destroyPanel('bar');
         expect($log.debug).toHaveBeenCalledWith('no panel to destroy:', 'bar');
     });
 
-    xit('should destroy the panel', function () {
+    it('should destroy the panel', function () {
         spyOn($log, 'debug');
         var p = ps.createPanel('foo');
         expect(floatPanelSelection().size()).toBe(1);
@@ -123,7 +125,7 @@
         expect(floatPanelSelection().size()).toBe(0);
     });
 
-    xit('should allow alternate settings to be given', function () {
+    it('should allow alternate settings to be given', function () {
         spyOn($log, 'debug');
         var p = ps.createPanel('foo', { width: 250, edge: 'left' });
         expect($log.debug).toHaveBeenCalledWith('creating panel:', 'foo', {
diff --git a/web/gui/src/main/webapp/tests/app/fw/layer/veil-spec.js b/web/gui/src/main/webapp/tests/app/fw/layer/veil-spec.js
index 0b80e89..49f2d96 100644
--- a/web/gui/src/main/webapp/tests/app/fw/layer/veil-spec.js
+++ b/web/gui/src/main/webapp/tests/app/fw/layer/veil-spec.js
@@ -18,9 +18,7 @@
  ONOS GUI -- Layer -- Veil Service - Unit Tests
  */
 
-// FIXME ReferenceError: userPrefs is not defined
-
-xdescribe('factory: fw/layer/veil.js', function () {
+describe('factory: fw/layer/veil.js', function () {
     var $log, $route, vs, fs, ks, gs;
 
     beforeEach(module('onosLayer', 'onosNav', 'onosSvg', 'ngRoute', 'onosRemote'));
diff --git a/web/gui/src/main/webapp/tests/app/fw/mast/mast-spec.js b/web/gui/src/main/webapp/tests/app/fw/mast/mast-spec.js
index 34d0a03..0178d8a 100644
--- a/web/gui/src/main/webapp/tests/app/fw/mast/mast-spec.js
+++ b/web/gui/src/main/webapp/tests/app/fw/mast/mast-spec.js
@@ -18,9 +18,7 @@
  ONOS GUI -- Masthead Controller - Unit Tests
  */
 
-// FIXME ReferenceError: userPrefs is not defined
-
-xdescribe('Controller: MastCtrl', function () {
+describe('Controller: MastCtrl', function () {
     // instantiate the masthead module
     beforeEach(module('onosMast', 'onosUtil', 'onosLayer', 'onosWidget', 'onosSvg', 'onosRemote'));
 
@@ -29,7 +27,8 @@
     // we need an instance of the controller
     beforeEach(inject(function(_$log_, $controller, MastService, FnService) {
         $log = _$log_;
-        ctrl = $controller('MastCtrl');
+        var $scope = {}
+        ctrl = $controller('MastCtrl', {$scope: $scope});
         ms = MastService;
         fs = FnService;
     }));
diff --git a/web/gui/src/main/webapp/tests/app/fw/remote/rest-spec.js b/web/gui/src/main/webapp/tests/app/fw/remote/rest-spec.js
index a8916e7..cd859ba 100644
--- a/web/gui/src/main/webapp/tests/app/fw/remote/rest-spec.js
+++ b/web/gui/src/main/webapp/tests/app/fw/remote/rest-spec.js
@@ -17,7 +17,7 @@
 /*
  ONOS GUI -- Remote -- REST Service - Unit Tests
  */
-xdescribe('factory: fw/remote/rest.js', function() {
+describe('factory: fw/remote/rest.js', function() {
     var $log, $httpBackend, fs, rs, promise;
 
     beforeEach(module('onosUtil', 'onosRemote'));
@@ -27,7 +27,10 @@
             return {
                 protocol: function () { return 'http'; },
                 host: function () { return 'foo'; },
-                port: function () { return '80'; }
+                port: function () { return '80'; },
+                search: function() {
+                    return {debug: 'true'};
+                }
             };
         })
     }));
@@ -45,7 +48,8 @@
 
     it('should define api functions', function () {
         expect(fs.areFunctions(rs, [
-            'get'
+            'get',
+            'post'
         ])).toBeTruthy();
     });
 
diff --git a/web/gui/src/main/webapp/tests/app/fw/remote/urlfn-spec.js b/web/gui/src/main/webapp/tests/app/fw/remote/urlfn-spec.js
index 9c35976..a998e0a 100644
--- a/web/gui/src/main/webapp/tests/app/fw/remote/urlfn-spec.js
+++ b/web/gui/src/main/webapp/tests/app/fw/remote/urlfn-spec.js
@@ -18,9 +18,7 @@
  ONOS GUI -- Remote -- General Functions - Unit Tests
  */
 
-// FIXME TypeError: $loc.search is not a function
-
-xdescribe('factory: fw/remote/urlfn.js', function () {
+describe('factory: fw/remote/urlfn.js', function () {
     var $log, $loc, ufs, fs;
 
     var protocol, host, port;
@@ -32,7 +30,10 @@
         return {
             protocol: function () { return protocol; },
             host: function () { return host; },
-            port: function () { return port; }
+            port: function () { return port; },
+            search: function() {
+                return {debug: 'true'};
+            }
         };
        })
     }));
diff --git a/web/gui/src/main/webapp/tests/app/fw/remote/websocket-spec.js b/web/gui/src/main/webapp/tests/app/fw/remote/websocket-spec.js
index 9e211bc..c3599cb 100644
--- a/web/gui/src/main/webapp/tests/app/fw/remote/websocket-spec.js
+++ b/web/gui/src/main/webapp/tests/app/fw/remote/websocket-spec.js
@@ -18,9 +18,7 @@
  ONOS GUI -- Remote -- Web Socket Service - Unit Tests
  */
 
-// FIXME TypeError: $loc.search is not a function
-
-xdescribe('factory: fw/remote/websocket.js', function () {
+describe('factory: fw/remote/websocket.js', function () {
     var $log, fs, wss;
 
     var noop = function () {},
@@ -56,7 +54,10 @@
             return {
                 protocol: function () { return 'http'; },
                 host: function () { return 'foo'; },
-                port: function () { return '80'; }
+                port: function () { return '80'; },
+                search: function() {
+                    return {debug: 'true'};
+                }
             };
         })
     }));
@@ -77,7 +78,9 @@
         expect(fs.areFunctions(wss, [
             'resetSid', 'resetState',
             'createWebSocket', 'bindHandlers', 'unbindHandlers',
-            'addOpenListener', 'removeOpenListener', 'sendEvent'
+            'addOpenListener', 'removeOpenListener', 'sendEvent',
+            'isConnected', 'loggedInUser',
+            '_setVeilDelegate', '_setLoadingDelegate'
         ])).toBeTruthy();
     });
 
diff --git a/web/gui/src/main/webapp/tests/app/fw/remote/wsevent-spec.js b/web/gui/src/main/webapp/tests/app/fw/remote/wsevent-spec.js
index 6e3bbf8..a06aa9d 100644
--- a/web/gui/src/main/webapp/tests/app/fw/remote/wsevent-spec.js
+++ b/web/gui/src/main/webapp/tests/app/fw/remote/wsevent-spec.js
@@ -18,7 +18,7 @@
  ONOS GUI -- Remote -- Web Socket Event Service - Unit Tests
  */
 
-// NOTE WsEventService does not exist
+// NOTE WsEventService does not exist, it has been removed?
 
 xdescribe('factory: fw/remote/wsevent.js', function () {
     var $log, fs, wse;
diff --git a/web/gui/src/main/webapp/tests/app/fw/svg/geodata-spec.js b/web/gui/src/main/webapp/tests/app/fw/svg/geodata-spec.js
index 20406dd..52705f0 100644
--- a/web/gui/src/main/webapp/tests/app/fw/svg/geodata-spec.js
+++ b/web/gui/src/main/webapp/tests/app/fw/svg/geodata-spec.js
@@ -35,9 +35,9 @@
         expect(gds).toBeDefined();
     });
 
-    xit('should define api functions', function () {
+    it('should define api functions', function () {
         expect(fs.areFunctions(gds, [
-            'clearCache', 'fetchTopoData', 'createPathGenerator'
+            'clearCache', 'fetchTopoData', 'createPathGenerator', 'rescaleProjection'
         ])).toBeTruthy();
     });
 
@@ -46,20 +46,20 @@
         expect(promise).toBeNull();
     });
 
-    xit('should augment the id of a bundled map', function () {
+    it('should augment the id of a bundled map', function () {
         var id = '*foo';
         promise = gds.fetchTopoData(id);
         expect(promise.meta).toBeDefined();
         expect(promise.meta.id).toBe(id);
-        expect(promise.meta.url).toBe('data/map/foo.json');
+        expect(promise.meta.url).toBe('data/map/foo.topojson');
     });
 
-    xit('should treat an external id as the url itself', function () {
+    it('should treat an external id as the url itself', function () {
         var id = 'some/path/to/foo';
         promise = gds.fetchTopoData(id);
         expect(promise.meta).toBeDefined();
         expect(promise.meta.id).toBe(id);
-        expect(promise.meta.url).toBe(id + '.json');
+        expect(promise.meta.url).toBe(id + '.topojson');
     });
 
     it('should cache the returned objects', function () {
@@ -91,16 +91,16 @@
     });
 
 
-    xit('should log a warning if data fails to load', function () {
+    it('should log a warning if data fails to load', function () {
         var id = 'foo';
-        $httpBackend.expectGET('foo.json').respond(404, 'Not found');
+        $httpBackend.expectGET('foo.topojson').respond(404, 'Not found');
         spyOn($log, 'warn');
 
         promise = gds.fetchTopoData(id);
         $httpBackend.flush();
         expect(promise.topodata).toBeUndefined();
         expect($log.warn)
-            .toHaveBeenCalledWith('Failed to retrieve map TopoJSON data: foo.json',
+            .toHaveBeenCalledWith('Failed to retrieve map TopoJSON data: foo.topojson',
             404, 'Not found');
     });
 
@@ -125,8 +125,8 @@
         return simpleTopology({type: "LineString", arcs: [1, 2]});
     }
 
-    xit('should use default settings if none are supplied', function () {
-        var gen = gds.createPathGenerator(simpleLineStringTopo());
+    it('should use default settings if none are supplied', function () {
+        var gen = gds.createPathGenerator(simpleLineStringTopo(), {adjustScale: true});
         expect(gen.settings.objectTag).toBe('states');
         expect(gen.settings.logicalSize).toBe(1000);
         expect(gen.settings.mapFillScale).toBe(.95);
@@ -143,8 +143,8 @@
         expect(gen.settings.mapFillScale).toBe(.80);
     });
 
-    xit('should create transformed geodata, and a path generator', function () {
-        var gen = gds.createPathGenerator(simpleLineStringTopo());
+    it('should create transformed geodata, and a path generator', function () {
+        var gen = gds.createPathGenerator(simpleLineStringTopo(), {adjustScale: true});
         expect(fs.isO(gen.settings)).toBeTruthy();
         expect(fs.isO(gen.geodata)).toBeTruthy();
         expect(fs.isF(gen.pathgen)).toBeTruthy();
diff --git a/web/gui/src/main/webapp/tests/app/fw/widget/chartBuilder-spec.js b/web/gui/src/main/webapp/tests/app/fw/widget/chartBuilder-spec.js
index 7780c7f..b500526 100644
--- a/web/gui/src/main/webapp/tests/app/fw/widget/chartBuilder-spec.js
+++ b/web/gui/src/main/webapp/tests/app/fw/widget/chartBuilder-spec.js
@@ -25,10 +25,14 @@
         mockWss = {
             bindHandlers: function () {},
             sendEvent: function () {},
-            unbindHandlers: function () {}
+            unbindHandlers: function () {},
+            _setLoadingDelegate: function(){},
+            isConnected: function() {
+                return true;
+            }
         };
 
-    beforeEach(module('onosWidget', 'onosUtil', 'onosRemote', 'onosSvg'));
+    beforeEach(module('onosWidget', 'onosUtil', 'onosRemote', 'onosSvg', 'onosLayer'));
 
     beforeEach(function () {
         module(function ($provide) {
@@ -71,6 +75,7 @@
         expect(mockObj.scope.requestCallback).not.toBeDefined();
         cbs.buildChart(mockObj);
         expect(mockObj.scope.requestCallback).toBeDefined();
+        mockObj.scope.requestCallback();
         expect(mockWss.sendEvent).toHaveBeenCalled();
     });
 
@@ -88,4 +93,4 @@
         mockObj.scope.$destroy();
         expect(mockWss.unbindHandlers).toHaveBeenCalled();
     });
-}
\ No newline at end of file
+});
diff --git a/web/gui/src/main/webapp/tests/app/fw/widget/tableBuilder-spec.js b/web/gui/src/main/webapp/tests/app/fw/widget/tableBuilder-spec.js
index 4564a26..7b66d76 100644
--- a/web/gui/src/main/webapp/tests/app/fw/widget/tableBuilder-spec.js
+++ b/web/gui/src/main/webapp/tests/app/fw/widget/tableBuilder-spec.js
@@ -18,14 +18,18 @@
  ONOS GUI -- Widget -- Table Builder Service - Unit Tests
  */
 
-xdescribe('factory: fw/widget/tableBuilder.js', function () {
+describe('factory: fw/widget/tableBuilder.js', function () {
     var $log, $rootScope, fs, tbs, is;
 
     var mockObj,
         mockWss = {
             bindHandlers: function () {},
             sendEvent: function () {},
-            unbindHandlers: function () {}
+            unbindHandlers: function () {},
+            _setLoadingDelegate: function(){},
+            isConnected: function() {
+                return true;
+            }
         };
 
     beforeEach(module('onosWidget', 'onosUtil', 'onosRemote', 'onosSvg', 'onosLayer'));
diff --git a/web/gui/src/main/webapp/tests/app/onos-spec.js b/web/gui/src/main/webapp/tests/app/onos-spec.js
index f311e72..c7df8d8 100644
--- a/web/gui/src/main/webapp/tests/app/onos-spec.js
+++ b/web/gui/src/main/webapp/tests/app/onos-spec.js
@@ -26,10 +26,11 @@
     // we need an instance of the controller
     beforeEach(inject(function(_$log_, $controller) {
         $log = _$log_;
-        ctrl = $controller('OnosCtrl');
+        var $scope = {};
+        ctrl = $controller('OnosCtrl', { $scope: $scope });
     }));
 
-    xit('should report version 1.2.0', function () {
-        expect(ctrl.version).toEqual('1.2.0');
+    it('should report version 1.5.0', function () {
+        expect(ctrl.version).toEqual('1.5.0');
     });
 });
\ No newline at end of file
diff --git a/web/gui/src/main/webapp/tests/karma.ci.js b/web/gui/src/main/webapp/tests/karma.ci.js
index 5729f0b..64c04cd 100644
--- a/web/gui/src/main/webapp/tests/karma.ci.js
+++ b/web/gui/src/main/webapp/tests/karma.ci.js
@@ -40,7 +40,10 @@
 
         // unit test code...
         'app/*-spec.js',
-        'app/**/*-spec.js'
+        'app/**/*-spec.js',
+
+        // server mock
+        './server.mock.js'
     ],
 
 
diff --git a/web/gui/src/main/webapp/tests/karma.conf.js b/web/gui/src/main/webapp/tests/karma.conf.js
index 01fac6b..e77f903 100644
--- a/web/gui/src/main/webapp/tests/karma.conf.js
+++ b/web/gui/src/main/webapp/tests/karma.conf.js
@@ -40,7 +40,10 @@
 
         // unit test code...
         'app/*-spec.js',
-        'app/**/*-spec.js'
+        'app/**/*-spec.js',
+
+        // server mock
+        './server.mock.js'
     ],
 
 
diff --git a/web/gui/src/main/webapp/tests/server.mock.js b/web/gui/src/main/webapp/tests/server.mock.js
new file mode 100644
index 0000000..3ecdbdb
--- /dev/null
+++ b/web/gui/src/main/webapp/tests/server.mock.js
@@ -0,0 +1,2 @@
+onosAuth = '';
+userPrefs = {};
\ No newline at end of file
