diff --git a/frontend-js/src/main/js/Functions.js b/frontend-js/src/main/js/Functions.js
index 2efead8718f9cc6db6173c2e79fbef5baf03fd7a..b2530bf5db61dc1907d2aed9e785e13de536be67 100644
--- a/frontend-js/src/main/js/Functions.js
+++ b/frontend-js/src/main/js/Functions.js
@@ -343,11 +343,6 @@ Functions.loadScript = function (url) {
       script.type = 'text/javascript';
       script.src = url;
       script.onload = function () {
-        MathJax.Hub.Config({
-          tex2jax: {
-            skipTags: ["script", "noscript", "style", "textarea", "pre", "code"]
-          }
-        });
         resolve();
       };
       head.appendChild(script);
diff --git a/frontend-js/src/main/js/gui/SubMenu.js b/frontend-js/src/main/js/gui/SubMenu.js
index dc943a491a253fe65e3c8b952c508f05a76eaf24..89946f94dc4e4d253d4724a19b716aba263312e4 100644
--- a/frontend-js/src/main/js/gui/SubMenu.js
+++ b/frontend-js/src/main/js/gui/SubMenu.js
@@ -5,6 +5,7 @@
 var AbstractGuiElement = require('./AbstractGuiElement');
 var Functions = require('../Functions');
 
+// noinspection JSUnusedLocalSymbols
 var logger = require('../logger');
 
 function SubMenu(params) {
@@ -18,40 +19,40 @@ function SubMenu(params) {
 SubMenu.prototype = Object.create(AbstractGuiElement.prototype);
 SubMenu.prototype.constructor = SubMenu;
 
-SubMenu.prototype._createGui = function(params) {
+SubMenu.prototype._createGui = function (params) {
   var self = this;
 
   var element = self.getElement();
   element.className = "dropdown-submenu";
 
   var link = Functions.createElement({
-    type : "a",
-    href : "#",
-    content : params.name,
+    type: "a",
+    href: "#",
+    content: params.name
   });
   link.tabIndex = -1;
   self.getElement().appendChild(link);
 
   var ul = Functions.createElement({
-    type : "ul",
-    className : "dropdown-menu",
+    type: "ul",
+    className: "dropdown-menu"
   });
   self.getElement().appendChild(ul);
   self.setUl(ul);
 
 };
-SubMenu.prototype.addOption = function(name, handler) {
+SubMenu.prototype.addOption = function (name, handler) {
   var self = this;
   if (name instanceof SubMenu) {
     self.getElement().appendChild(name.getElement());
   } else {
     var option = Functions.createElement({
-      type : "li",
+      type: "li"
     });
     var link = Functions.createElement({
-      type : "a",
-      href : "#",
-      content : name,
+      type: "a",
+      href: "#",
+      content: name
     });
     $(link).data("handler", handler);
     option.appendChild(link);
@@ -59,11 +60,11 @@ SubMenu.prototype.addOption = function(name, handler) {
   }
 };
 
-SubMenu.prototype.setUl = function(ul) {
+SubMenu.prototype.setUl = function (ul) {
   this._ul = ul;
 };
 
-SubMenu.prototype.getUl = function() {
+SubMenu.prototype.getUl = function () {
   return this._ul;
 };
 
diff --git a/frontend-js/src/main/js/gui/admin/ChooseValidatorsDialog.js b/frontend-js/src/main/js/gui/admin/ChooseValidatorsDialog.js
index 2138412ac457978265fd9b309e9634548bb44d2e..5dba50c8917f3a5bcab685c50653529ae7a1a32b 100644
--- a/frontend-js/src/main/js/gui/admin/ChooseValidatorsDialog.js
+++ b/frontend-js/src/main/js/gui/admin/ChooseValidatorsDialog.js
@@ -273,9 +273,9 @@ ChooseValidatorsDialog.prototype.createElementTree = function (configuration) {
     }
   };
 
-  var i;
+  var i, type;
   for (i = 0; i < elementTypes.length; i++) {
-    var type = elementTypes[i];
+    type = elementTypes[i];
     var name = type.className;
     if (name.indexOf(".") > 0) {
       name = name.substr(name.lastIndexOf(".") + 1);
@@ -288,7 +288,7 @@ ChooseValidatorsDialog.prototype.createElementTree = function (configuration) {
   }
 
   for (i = 0; i < reactionTypes.length; i++) {
-    var type = reactionTypes[i];
+    type = reactionTypes[i];
     treeNodes[type.className] = {
       text: type.name,
       data: type,
diff --git a/frontend-js/src/main/js/map/window/ReactionInfoWindow.js b/frontend-js/src/main/js/map/window/ReactionInfoWindow.js
index 200384d00e74d88f9697b4df952860d616b88bba..cd95953aba95b1b4d21b82e8aee0725bb6942b17 100644
--- a/frontend-js/src/main/js/map/window/ReactionInfoWindow.js
+++ b/frontend-js/src/main/js/map/window/ReactionInfoWindow.js
@@ -59,6 +59,13 @@ ReactionInfoWindow.prototype.createContentDiv = function () {
   } else {
     var kineticLaw = reaction.getKineticLaw();
     return Functions.loadScript('https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=TeX-MML-AM_CHTML').then(function () {
+      return MathJax.Hub.Config({
+        tex2jax: {
+          skipTags: ["script", "noscript", "style", "textarea", "pre", "code"]
+        }
+      });
+    }).then(function () {
+
       result.appendChild(Functions.createElement({type: "h4", content: "Kinetic law"}));
 
       if (kineticLaw.getMathMlPresentation() !== undefined) {
diff --git a/frontend-js/src/test/js/gui/export/GraphicsExportPanel-test.js b/frontend-js/src/test/js/gui/export/GraphicsExportPanel-test.js
index d53571bd2e2fb8dcd3e1b9d68fbb7c7d85d6864d..db7727993f913d32f7f9128ffc514f4adc75bf36 100644
--- a/frontend-js/src/test/js/gui/export/GraphicsExportPanel-test.js
+++ b/frontend-js/src/test/js/gui/export/GraphicsExportPanel-test.js
@@ -1,4 +1,5 @@
 "use strict";
+require("../../mocha-config");
 
 var GraphicsExportPanel = require('../../../../main/js/gui/export/GraphicsExportPanel');
 var ServerConnector = require('../../ServerConnector-mock');
diff --git a/frontend-js/src/test/js/map/AbstractCustomMap-test.js b/frontend-js/src/test/js/map/AbstractCustomMap-test.js
index dd47b2ed9e6b7103b8d4c5baf82ada4db56d3042..9337776ab5be00b6efadb912fb1b7db3d0b53119 100644
--- a/frontend-js/src/test/js/map/AbstractCustomMap-test.js
+++ b/frontend-js/src/test/js/map/AbstractCustomMap-test.js
@@ -1,6 +1,7 @@
 "use strict";
 
 var Promise = require("bluebird");
+require("../mocha-config");
 
 var AliasMarker = require('../../../main/js/map/marker/AliasMarker');
 var AliasSurface = require('../../../main/js/map/surface/AliasSurface');
diff --git a/frontend-js/src/test/js/map/CustomMapOptions-test.js b/frontend-js/src/test/js/map/CustomMapOptions-test.js
index 3389f14010eb83545951b2cd32034b5eb8aa38fe..d21987ba7feff8243ec0bd139f91ef6e6b3693b9 100644
--- a/frontend-js/src/test/js/map/CustomMapOptions-test.js
+++ b/frontend-js/src/test/js/map/CustomMapOptions-test.js
@@ -1,4 +1,5 @@
 "use strict";
+require("../mocha-config");
 
 var CustomMapOptions = require('../../../main/js/map/CustomMapOptions');
 var chai = require('chai');
diff --git a/frontend-js/src/test/js/map/Submap-test.js b/frontend-js/src/test/js/map/Submap-test.js
index b2449e94cfa8a7a4f22641bf3d1dc35fbe758e31..a3409131ffbeeceaae80a956fe4e616a13f27154 100644
--- a/frontend-js/src/test/js/map/Submap-test.js
+++ b/frontend-js/src/test/js/map/Submap-test.js
@@ -1,4 +1,5 @@
 "use strict";
+require("../mocha-config");
 
 var logger = require('../logger');
 
diff --git a/frontend-js/src/test/js/map/data/Comment-test.js b/frontend-js/src/test/js/map/data/Comment-test.js
index 49c3e11fbd0c5817340a3657edfacc76735a5240..ff593fd9b2d26b0fde2838bcae3ce1f4c24a80ed 100644
--- a/frontend-js/src/test/js/map/data/Comment-test.js
+++ b/frontend-js/src/test/js/map/data/Comment-test.js
@@ -1,5 +1,7 @@
 "use strict";
 
+require("../../mocha-config");
+
 var Comment = require('../../../../main/js/map/data/Comment');
 var chai = require('chai');
 var assert = chai.assert;
diff --git a/frontend-js/src/test/js/map/data/IdentifiedElement-test.js b/frontend-js/src/test/js/map/data/IdentifiedElement-test.js
index a272bf4b182d1656314bcbed0193662305b97c58..16d1c5c823ee95f523a63564cddce8392cec7037 100644
--- a/frontend-js/src/test/js/map/data/IdentifiedElement-test.js
+++ b/frontend-js/src/test/js/map/data/IdentifiedElement-test.js
@@ -1,5 +1,7 @@
 "use strict";
 
+require("../../mocha-config");
+
 var IdentifiedElement = require('../../../../main/js/map/data/IdentifiedElement');
 var Alias = require('../../../../main/js/map/data/Alias');
 var Reaction = require('../../../../main/js/map/data/Reaction');
diff --git a/frontend-js/src/test/js/map/data/LayoutData-test.js b/frontend-js/src/test/js/map/data/LayoutData-test.js
index 89c1b2d6244e4aeb48bf9103182c10b6f9efb578..3932802d58f9d892cdb5dbc5189e9a8f528fe75a 100644
--- a/frontend-js/src/test/js/map/data/LayoutData-test.js
+++ b/frontend-js/src/test/js/map/data/LayoutData-test.js
@@ -1,5 +1,7 @@
 "use strict";
 
+require("../../mocha-config");
+
 var LayoutAlias = require('../../../../main/js/map/data/LayoutAlias');
 var LayoutData = require('../../../../main/js/map/data/LayoutData');
 
diff --git a/frontend-js/src/test/js/map/data/PointData-test.js b/frontend-js/src/test/js/map/data/PointData-test.js
index 3ae65031671cd55e41ddf1ceb8766c4d75325064..c7d0e85b6d607a0b2fe02f49e92ca78789a2aeeb 100644
--- a/frontend-js/src/test/js/map/data/PointData-test.js
+++ b/frontend-js/src/test/js/map/data/PointData-test.js
@@ -1,5 +1,7 @@
 "use strict";
 
+require("../../mocha-config");
+
 var PointData = require('../../../../main/js/map/data/PointData');
 var IdentifiedElement = require('../../../../main/js/map/data/IdentifiedElement');
 var assert = require('assert');
diff --git a/frontend-js/src/test/js/map/data/Project-test.js b/frontend-js/src/test/js/map/data/Project-test.js
index a3e56f1806f550605021a4c2ddffeb92623675f1..e592311f844f064872cdc242d880c43b5eb9375f 100644
--- a/frontend-js/src/test/js/map/data/Project-test.js
+++ b/frontend-js/src/test/js/map/data/Project-test.js
@@ -1,4 +1,5 @@
 "use strict";
+require("../../mocha-config");
 
 var Project = require('../../../../main/js/map/data/Project');
 var ServerConnector = require('../../ServerConnector-mock');
diff --git a/frontend-js/src/test/js/map/data/TargettingStructure-test.js b/frontend-js/src/test/js/map/data/TargettingStructure-test.js
index b0f5612d5cbf55ea89a1e4a074edb5a526fe8522..7320f5db93badf2492a75c7ae10befb7562f6c4e 100644
--- a/frontend-js/src/test/js/map/data/TargettingStructure-test.js
+++ b/frontend-js/src/test/js/map/data/TargettingStructure-test.js
@@ -1,5 +1,7 @@
 "use strict";
 
+require("../../mocha-config");
+
 var IdentifiedElement = require('../../../../main/js/map/data/IdentifiedElement');
 var ServerConnector = require('../../ServerConnector-mock');
 
diff --git a/frontend-js/src/test/js/map/overlay/AbstractDbOverlay-test.js b/frontend-js/src/test/js/map/overlay/AbstractDbOverlay-test.js
index a29201f29f023de0708f59e05b41a3b84cdece13..98c948c508f2afc8f0a110ab2cca3f00f9755d6d 100644
--- a/frontend-js/src/test/js/map/overlay/AbstractDbOverlay-test.js
+++ b/frontend-js/src/test/js/map/overlay/AbstractDbOverlay-test.js
@@ -1,5 +1,7 @@
 "use strict";
 
+require("../../mocha-config");
+
 var AbstractDbOverlay = require('../../../../main/js/map/overlay/AbstractDbOverlay');
 
 var assert = require('assert');
diff --git a/frontend-js/src/test/js/map/overlay/CommentDbOverlay-test.js b/frontend-js/src/test/js/map/overlay/CommentDbOverlay-test.js
index 7e148461ffdeee9a58a37de7ee163d503f6b1cdd..ceecf2254835e0ea7e92484daa10d0f1e2919b8c 100644
--- a/frontend-js/src/test/js/map/overlay/CommentDbOverlay-test.js
+++ b/frontend-js/src/test/js/map/overlay/CommentDbOverlay-test.js
@@ -1,6 +1,7 @@
 "use strict";
 
 var logger = require('../../logger');
+require("../../mocha-config");
 
 var CommentDbOverlay = require('../../../../main/js/map/overlay/CommentDbOverlay');
 var IdentifiedElement = require('../../../../main/js/map/data/IdentifiedElement');
diff --git a/frontend-js/src/test/js/map/overlay/DbOverlayCollection-test.js b/frontend-js/src/test/js/map/overlay/DbOverlayCollection-test.js
index 61e9788ce8f404554775cbe11d97cd8d14885cd4..70ca81981a9167120558f4f7a638b9226afe3786 100644
--- a/frontend-js/src/test/js/map/overlay/DbOverlayCollection-test.js
+++ b/frontend-js/src/test/js/map/overlay/DbOverlayCollection-test.js
@@ -1,6 +1,7 @@
 "use strict";
 
 var logger = require('../../logger');
+require("../../mocha-config");
 
 var DbOverlayCollection = require('../../../../main/js/map/overlay/DbOverlayCollection');
 
diff --git a/frontend-js/src/test/js/map/overlay/DrugDbOverlay-test.js b/frontend-js/src/test/js/map/overlay/DrugDbOverlay-test.js
index 44629660a5fe56a6f63f75516d9e735503fdc0f0..7f9b2440570932224c20531e299b7f5b22628a9b 100644
--- a/frontend-js/src/test/js/map/overlay/DrugDbOverlay-test.js
+++ b/frontend-js/src/test/js/map/overlay/DrugDbOverlay-test.js
@@ -1,6 +1,7 @@
 "use strict";
 
 var logger = require('../../logger');
+require("../../mocha-config");
 
 var IdentifiedElement = require('../../../../main/js/map/data/IdentifiedElement');
 var DrugDbOverlay = require('../../../../main/js/map/overlay/DrugDbOverlay');
diff --git a/frontend-js/src/test/js/map/overlay/MiRnaDbOverlay-test.js b/frontend-js/src/test/js/map/overlay/MiRnaDbOverlay-test.js
index 3364a97e466747bcea6ca81f233a13e5052b9ee1..df21691ca0c71f05eb32d0a86c00d754c00f5ccc 100644
--- a/frontend-js/src/test/js/map/overlay/MiRnaDbOverlay-test.js
+++ b/frontend-js/src/test/js/map/overlay/MiRnaDbOverlay-test.js
@@ -1,6 +1,7 @@
 "use strict";
 
 var logger = require('../../logger');
+require("../../mocha-config");
 
 var IdentifiedElement = require('../../../../main/js/map/data/IdentifiedElement');
 var MiRnaDbOverlay = require('../../../../main/js/map/overlay/MiRnaDbOverlay');
diff --git a/frontend-js/src/test/js/map/surface/AliasSurface-test.js b/frontend-js/src/test/js/map/surface/AliasSurface-test.js
index d31f5e49351a32d57de8748548d7f53ee8a80a60..029e8a73307af4cec3d874b3a45c5afded5098a0 100644
--- a/frontend-js/src/test/js/map/surface/AliasSurface-test.js
+++ b/frontend-js/src/test/js/map/surface/AliasSurface-test.js
@@ -1,5 +1,6 @@
 "use strict";
 
+require("../../mocha-config");
 var logger = require('../../logger');
 
 var AliasSurface = require('../../../../main/js/map/surface/AliasSurface');
diff --git a/frontend-js/src/test/js/minerva-test.js b/frontend-js/src/test/js/minerva-test.js
index fd53d158f8fde5b329803cefb433c6bb179b17bf..eeb589fc2aabfe067d81181c58bcc6ec58df7e3c 100644
--- a/frontend-js/src/test/js/minerva-test.js
+++ b/frontend-js/src/test/js/minerva-test.js
@@ -2,10 +2,7 @@
 
 require("./mocha-config");
 
-var Alias = require('../../main/js/map/data/Alias');
 var minerva = require('../../main/js/minerva');
-var Project = require('../../main/js/map/data/Project');
-var GuiConnectorMock = require('./GuiConnector-mock');
 var SecurityError = require('../../main/js/SecurityError');
 var ServerConnectorMock = require('./ServerConnector-mock');
 var ProxyAccessPlugin = require('./plugin/ProxyAccessPlugin');
diff --git a/frontend-js/src/test/js/mocha-config.js b/frontend-js/src/test/js/mocha-config.js
index 0624a93c6fa52a3f4371771d2d5878e63df352dd..eb9151b5729ecce4c11dcbb2fd178a46f6a03aee 100644
--- a/frontend-js/src/test/js/mocha-config.js
+++ b/frontend-js/src/test/js/mocha-config.js
@@ -27,7 +27,15 @@ function mockBootstrap() {
 }
 
 before(function () {
-  require('../../main/js/Functions').loadScript = Promise.resolve;
+  require('../../main/js/Functions').loadScript = function () {
+    global.MathJax = {
+      Hub: {
+        Config: function () {
+        }
+      }
+    };
+    return Promise.resolve();
+  };
   // requirejs.config({
   //   baseUrl: path.dirname(require.main.filename) + "/../../../"
   // });
diff --git a/frontend-js/src/test/js/plugin/PluginManager-test.js b/frontend-js/src/test/js/plugin/PluginManager-test.js
index fd1f389da7423c828c0a2febb42d23df4b5ec117..ab03699985eafba027ece2e2cab7f3236e6299bc 100644
--- a/frontend-js/src/test/js/plugin/PluginManager-test.js
+++ b/frontend-js/src/test/js/plugin/PluginManager-test.js
@@ -2,7 +2,6 @@
 
 require("../mocha-config");
 
-var InvalidArgumentError = require('../../../main/js/InvalidArgumentError');
 var Plugin = require('../../../main/js/plugin/Plugin');
 var PluginManager = require('../../../main/js/plugin/PluginManager');
 var ProxyAccessPlugin = require('./ProxyAccessPlugin');
@@ -91,7 +90,7 @@ describe('PluginManager', function () {
     });
     it('valid', function () {
       var manager = new PluginManager(createParams());
-      assert.ok("http://onet.pl/");
+      assert.ok(manager.isValidUrl("http://onet.pl/"));
     });
   });