diff --git a/web/gui/src/main/webapp/tests/app/view/topo/topoEvent-spec.js b/web/gui/src/main/webapp/tests/app/view/topo/topoEvent-spec.js
index 7e35dd9..ef94711 100644
--- a/web/gui/src/main/webapp/tests/app/view/topo/topoEvent-spec.js
+++ b/web/gui/src/main/webapp/tests/app/view/topo/topoEvent-spec.js
@@ -18,14 +18,17 @@
  ONOS GUI -- Topo View -- Topo Event Service - Unit Tests
  */
 describe('factory: view/topo/topoEvent.js', function() {
-    var $log, fs, tes;
+    var $log, fs, tes, bns;
 
-    beforeEach(module('ovTopo', 'onosNav', 'onosUtil', 'onosLayer', 'ngRoute'));
+    beforeEach(module('ovTopo', 'onosNav', 'onosUtil', 'onosLayer', 'ngRoute',
+        'onosWidget'));
 
-    beforeEach(inject(function (_$log_, FnService, TopoEventService) {
+    beforeEach(inject(function (_$log_, FnService,
+                                TopoEventService, ButtonService) {
         $log = _$log_;
         fs = FnService;
         tes = TopoEventService;
+        bns = ButtonService;
     }));
 
     it('should define TopoEventService', function () {
diff --git a/web/gui/src/main/webapp/tests/app/view/topo/topoFilter-spec.js b/web/gui/src/main/webapp/tests/app/view/topo/topoFilter-spec.js
index fc5b512..eebccfc 100644
--- a/web/gui/src/main/webapp/tests/app/view/topo/topoFilter-spec.js
+++ b/web/gui/src/main/webapp/tests/app/view/topo/topoFilter-spec.js
@@ -18,7 +18,7 @@
  ONOS GUI -- Topo View -- Topo Filter Service - Unit Tests
  */
 describe('factory: view/topo/topoFilter.js', function() {
-    var $log, fs, fltr, api;
+    var $log, fs, fltr, bns, api;
 
     var mockNodes = {
             each: function () {},
@@ -29,12 +29,15 @@
             classed: function () {}
         };
 
-    beforeEach(module('ovTopo', 'onosUtil', 'onosLayer', 'ngRoute', 'onosNav'));
+    beforeEach(module('ovTopo', 'onosUtil', 'onosLayer', 'ngRoute', 'onosNav',
+        'onosWidget'));
 
-    beforeEach(inject(function (_$log_, FnService, TopoFilterService) {
+    beforeEach(inject(function (_$log_, FnService,
+                                TopoFilterService, ButtonService) {
         $log = _$log_;
         fs = FnService;
         fltr = TopoFilterService;
+        bns = ButtonService;
 
         api = {
             node: function () { return mockNodes; },
diff --git a/web/gui/src/main/webapp/tests/app/view/topo/topoForce-spec.js b/web/gui/src/main/webapp/tests/app/view/topo/topoForce-spec.js
index 37fe0ef..edb1cc5 100644
--- a/web/gui/src/main/webapp/tests/app/view/topo/topoForce-spec.js
+++ b/web/gui/src/main/webapp/tests/app/view/topo/topoForce-spec.js
@@ -18,14 +18,17 @@
  ONOS GUI -- Topo View -- Topo Force Service - Unit Tests
  */
 describe('factory: view/topo/topoForce.js', function() {
-    var $log, fs, tfs;
+    var $log, fs, tfs, bns;
 
-    beforeEach(module('ovTopo', 'onosUtil', 'onosLayer', 'ngRoute', 'onosNav'));
+    beforeEach(module('ovTopo', 'onosUtil', 'onosLayer', 'ngRoute', 'onosNav',
+        'onosWidget'));
 
-    beforeEach(inject(function (_$log_, FnService, TopoForceService) {
+    beforeEach(inject(function (_$log_, FnService,
+                                TopoForceService, ButtonService) {
         $log = _$log_;
         fs = FnService;
         tfs = TopoForceService;
+        bns = ButtonService;
     }));
 
     it('should define TopoForceService', function () {
diff --git a/web/gui/src/main/webapp/tests/app/view/topo/topoPanel-spec.js b/web/gui/src/main/webapp/tests/app/view/topo/topoPanel-spec.js
index b4ad55c..1b2a573 100644
--- a/web/gui/src/main/webapp/tests/app/view/topo/topoPanel-spec.js
+++ b/web/gui/src/main/webapp/tests/app/view/topo/topoPanel-spec.js
@@ -18,14 +18,17 @@
  ONOS GUI -- Topo View -- Topo Panel Service - Unit Tests
  */
 describe('factory: view/topo/topoPanel.js', function() {
-    var $log, fs, tps;
+    var $log, fs, tps, bns;
 
-    beforeEach(module('ovTopo', 'onosUtil', 'onosLayer', 'ngRoute', 'onosNav'));
+    beforeEach(module('ovTopo', 'onosUtil', 'onosLayer', 'ngRoute', 'onosNav',
+        'onosWidget'));
 
-    beforeEach(inject(function (_$log_, FnService, TopoPanelService) {
+    beforeEach(inject(function (_$log_, FnService,
+                                TopoPanelService, ButtonService) {
         $log = _$log_;
         fs = FnService;
         tps = TopoPanelService;
+        bns = ButtonService;
     }));
 
     it('should define TopoPanelService', function () {
diff --git a/web/gui/src/main/webapp/tests/app/view/topo/topoSelect-spec.js b/web/gui/src/main/webapp/tests/app/view/topo/topoSelect-spec.js
index d78a4fd..c8c051c 100644
--- a/web/gui/src/main/webapp/tests/app/view/topo/topoSelect-spec.js
+++ b/web/gui/src/main/webapp/tests/app/view/topo/topoSelect-spec.js
@@ -18,14 +18,17 @@
  ONOS GUI -- Topo View -- Topo Selection Service - Unit Tests
  */
 describe('factory: view/topo/topoSelect.js', function() {
-    var $log, fs, tss;
+    var $log, fs, tss, bns;
 
-    beforeEach(module('ovTopo', 'onosUtil', 'onosLayer', 'ngRoute', 'onosNav'));
+    beforeEach(module('ovTopo', 'onosUtil', 'onosLayer', 'ngRoute', 'onosNav',
+        'onosWidget'));
 
-    beforeEach(inject(function (_$log_, FnService, TopoSelectService) {
+    beforeEach(inject(function (_$log_, FnService,
+                                TopoSelectService, ButtonService) {
         $log = _$log_;
         fs = FnService;
         tss = TopoSelectService;
+        bns = ButtonService;
     }));
 
     it('should define TopoSelectService', function () {
