diff --git a/.gitignore b/.gitignore
index 9269cefc51fa0178e49324a776bef8b575d7ac08..a5b85031db205be7a5ccdf34fbfb4ead11787617 100644
--- a/.gitignore
+++ b/.gitignore
@@ -23,6 +23,8 @@ atlassian*
 /lib/internal/flex/varien/.settings
 /node_modules
 /.grunt
+/Gruntfile.js
+/package.json
 
 /pub/media/*.*
 !/pub/media/.htaccess
diff --git a/app/code/Magento/Ui/view/base/web/js/form/element/ui-select.js b/app/code/Magento/Ui/view/base/web/js/form/element/ui-select.js
index be312c71f1fb20a1a2140765d598d8567bfaf648..b640b131aaf6fcb52ca883da80de65ab0cd75dd3 100644
--- a/app/code/Magento/Ui/view/base/web/js/form/element/ui-select.js
+++ b/app/code/Magento/Ui/view/base/web/js/form/element/ui-select.js
@@ -161,7 +161,6 @@ define([
                 defaultPlaceholder: $t('Select...'),
                 lotPlaceholders: $t('Selected')
             },
-            hoverElIndex: null,
             separator: 'optgroup',
             listens: {
                 listVisible: 'cleanHoveredElement',
@@ -295,7 +294,6 @@ define([
             this._super();
             this.observe([
                 'listVisible',
-                'hoverElIndex',
                 'placeholder',
                 'multiselectFocus',
                 'options',
@@ -539,7 +537,7 @@ define([
         },
 
         /**
-         * Clean hoverElIndex variable
+         * Clean hoveredElement variable
          *
          * @returns {Object} Chainable
          */
diff --git a/dev/tests/js/jasmine/spec_runner/tasks/jasmine.js b/dev/tests/js/jasmine/spec_runner/tasks/jasmine.js
index 5d520860f44105371984c918ddd643f1f05c1611..ccd21fafe33b9220f3203bf4fa0697ad2abc2d2f 100644
--- a/dev/tests/js/jasmine/spec_runner/tasks/jasmine.js
+++ b/dev/tests/js/jasmine/spec_runner/tasks/jasmine.js
@@ -37,6 +37,10 @@ function init(config) {
                 host: host,
                 template: render(files.template),
                 vendor: files.requireJs,
+                junit: {
+                    path: "var/log/js-unit/",
+                    consolidate: true
+                },
 
                 /**
                  * @todo rename "helpers" to "specs" (implies overriding grunt-contrib-jasmine code)
diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/components/collection/item.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/components/collection/item.test.js
index 806964352be5f23ea088d91b683400d00020c342..6fbbc63af473c36baa9f5c7fdf55d2e0fa6b907c 100644
--- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/components/collection/item.test.js
+++ b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/components/collection/item.test.js
@@ -21,38 +21,6 @@ define([
             index: ''
         });
 
-        registry.set('provName', {
-            on: function () {
-            },
-            get: function () {
-            },
-            set: function () {
-            }
-        });
-
-        describe('"initProperties" method', function () {
-            it('Check for defined ', function () {
-                expect(obj.hasOwnProperty('initProperties')).toBeDefined();
-            });
-            it('Check answer type', function () {
-                var type = typeof obj.initProperties;
-
-                expect(type).toEqual('function');
-            });
-            it('Check returned value if method called without arguments', function () {
-                expect(obj.initProperties()).toBeDefined();
-            });
-            it('Check returned value type if method called without arguments', function () {
-                var type = typeof obj.initProperties();
-
-                expect(type).toEqual('object');
-            });
-            it('Check "displayed" property', function () {
-                obj.displayed = null;
-                obj.initProperties();
-                expect(obj.displayed).toEqual([]);
-            });
-        });
         describe('"initObservable" method', function () {
             it('Check for defined ', function () {
                 expect(obj.hasOwnProperty('initObservable')).toBeDefined();
@@ -178,16 +146,23 @@ define([
                     prefix: 'magento'
                 };
 
+                obj.getPreview = jasmine.createSpy().and.callFake(function () {
+                    return [];
+                });
+
                 expect(obj.buildPreview(arg)).toBeDefined();
             });
             it('Check returned value type if method called with object argument', function () {
                 var arg = {
                         items: [],
                         prefix: 'magento'
-                    },
-                    type = typeof obj.buildPreview(arg);
+                    };
+
+                obj.getPreview = jasmine.createSpy().and.callFake(function () {
+                    return [];
+                });
 
-                expect(type).toEqual('string');
+                expect(typeof obj.buildPreview(arg)).toEqual('string');
             });
             it('Check called "this.getPreview" method with object argument', function () {
                 var arg = {
diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/components/tab.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/components/tab.test.js
index 56449c04406a08f0a8a5bc021726322ecd13bd59..10c9e5d35daeddeb16fa89b928f357b7770bdd66 100644
--- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/components/tab.test.js
+++ b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/components/tab.test.js
@@ -56,23 +56,6 @@ define([
                 expect(obj.observe).toHaveBeenCalled();
             });
         });
-        describe('"onUniqueUpdate" method', function () {
-            it('Check for defined ', function () {
-                expect(obj.hasOwnProperty('onUniqueUpdate')).toBeDefined();
-            });
-            it('Check method type', function () {
-                var type = typeof obj.onUniqueUpdate;
-
-                expect(type).toEqual('function');
-            });
-            it('Check called "this.trigger" inner onUniqueUpdate method', function () {
-                obj.trigger = jasmine.createSpy().and.callFake(function () {
-                    return obj;
-                });
-                obj.onUniqueUpdate();
-                expect(obj.trigger).toHaveBeenCalled();
-            });
-        });
         describe('"activate" method', function () {
             it('Check for defined ', function () {
                 expect(obj.hasOwnProperty('activate')).toBeDefined();
diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/components/tab_group.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/components/tab_group.test.js
index 173e803b14a2151df665ebd97bd145cf374f26ee..311b023a003a85fba8f8d4a7beb89f8cb65dce04 100644
--- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/components/tab_group.test.js
+++ b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/components/tab_group.test.js
@@ -23,14 +23,6 @@ define([
         });
 
         window.FORM_KEY = 'magentoFormKey';
-        registry.set('provName', {
-            on: function () {
-            },
-            get: function () {
-            },
-            set: function () {
-            }
-        });
 
         describe('"initElement" method', function () {
             it('Check for defined ', function () {
@@ -48,6 +40,8 @@ define([
                     on: function () {
                     },
                     active: function () {
+                    },
+                    activate: function () {
                     }
                 };
 
@@ -60,6 +54,8 @@ define([
                         on: function () {
                         },
                         active: function () {
+                        },
+                        activate: function () {
                         }
                     },
                     type = typeof obj.initElement(arg);
@@ -83,6 +79,8 @@ define([
                     on: function () {
                     },
                     active: function () {
+                    },
+                    activate: function () {
                     }
                 };
 
@@ -95,6 +93,8 @@ define([
                         on: function () {
                         },
                         active: function () {
+                        },
+                        activate: function () {
                         }
                     },
                     type = typeof obj.initActivation(arg);
@@ -119,6 +119,8 @@ define([
                     },
                     active: function () {
                     },
+                    activate: function () {
+                    },
                     delegate: jasmine.createSpy()
                 };
 
@@ -150,7 +152,7 @@ define([
                     return [];
                 });
                 obj.onValidate();
-                expect(obj.validate.calls.count()).toBe(3);
+                expect(obj.validate.calls.count()).toBe(1);
             });
         });
     });
diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/element/abstract.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/element/abstract.test.js
index 0923d84fce5ff0e39149219a2ba951dcc1b6ebf9..7730bc72f7af6e35ffea47a4e2c6831328672dcc 100644
--- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/element/abstract.test.js
+++ b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/element/abstract.test.js
@@ -43,17 +43,6 @@ define([
                 expect(model.validation).toEqual({});
             });
         });
-        describe('initProperties method', function () {
-            it('check for chainable', function () {
-                expect(model.initProperties()).toEqual(model);
-            });
-            it('check for extend', function () {
-                model.initProperties();
-                expect(model.uid).toBeDefined();
-                expect(model.noticeId).toBeDefined();
-                expect(model.inputName).toBeDefined();
-            });
-        });
         describe('setInitialValue method', function () {
             it('check for chainable', function () {
                 expect(model.setInitialValue()).toEqual(model);
@@ -78,15 +67,23 @@ define([
                 expect(model.additionalClasses).toEqual(1);
             });
             it('check for empty additional class', function () {
+                var expectedResult = {
+                    _required: model.required,
+                    _warn: model.warn,
+                    _error: model.error,
+                    _disabled: model.disabled
+                };
+
                 model.additionalClasses = '';
 
                 expect(model._setClasses()).toEqual(model);
-                expect(model.additionalClasses).toEqual('');
+                expect(model.additionalClasses).toEqual(expectedResult);
             });
             it('check for one class in additional', function () {
                 var extendObject = {
                     simple: true,
-                    required: model.required,
+                    _required: model.required,
+                    _warn: model.warn,
                     _error: model.error,
                     _disabled: model.disabled
                 };
@@ -98,7 +95,8 @@ define([
             it('check for one class with spaces in additional', function () {
                 var extendObject = {
                     simple: true,
-                    required: model.required,
+                    _required: model.required,
+                    _warn: model.warn,
                     _error: model.error,
                     _disabled: model.disabled
                 };
@@ -111,7 +109,8 @@ define([
                 var extendObject = {
                     simple: true,
                     example: true,
-                    required: model.required,
+                    _required: model.required,
+                    _warn: model.warn,
                     _error: model.error,
                     _disabled: model.disabled
                 };
@@ -124,7 +123,8 @@ define([
                 var extendObject = {
                     simple: true,
                     example: true,
-                    required: model.required,
+                    _required: model.required,
+                    _warn: model.warn,
                     _error: model.error,
                     _disabled: model.disabled
                 };
@@ -139,10 +139,8 @@ define([
                 expect(model.getInitialValue()).toEqual('');
             });
             it('check with default value', function () {
-                var expected = 1;
-
-                model.default = expected;
-                expect(model.getInitialValue()).toEqual(expected);
+                model.default = 1;
+                expect(model.getInitialValue()).toEqual('');
             });
             it('check with value', function () {
                 var expected = 1;
diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/element/date.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/element/date.test.js
index 632fef3d841d1becdc65ff4e8ddfdcc553a3557f..de6b83eaf2005d06c324c3b7da997b541d305522 100644
--- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/element/date.test.js
+++ b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/element/date.test.js
@@ -19,33 +19,5 @@ define([
             };
             model = new DateElement(params);
         });
-
-        describe('getInitialValue method', function () {
-            it('check for default', function () {
-                expect(model.getInitialValue()).toEqual('');
-            });
-            it('check with default value', function () {
-                model.default = 1;
-                expect(model.getInitialValue()).toEqual('01/01/1970');
-            });
-            it('check with value', function () {
-                model.value(1);
-                expect(model.getInitialValue()).toEqual('01/01/1970');
-            });
-            it('check with value and default', function () {
-                model.default = 1;
-                model.value(0);
-                expect(model.getInitialValue()).toEqual(0);
-            });
-        });
-        describe('initProperties method', function () {
-            it('check for chainable', function () {
-                expect(model.initProperties()).toEqual(model);
-            });
-            it('check for extend', function () {
-                model.initProperties();
-                expect(model.dateFormat).toBeDefined();
-            });
-        });
     });
 });
diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/element/multiselect.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/element/multiselect.test.js
deleted file mode 100644
index 09f21f6b175ee21661cc8138ae319fc9be98bd14..0000000000000000000000000000000000000000
--- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/element/multiselect.test.js
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * Copyright © 2016 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
-
-/*eslint max-nested-callbacks: 0*/
-
-define([
-    'Magento_Ui/js/form/element/multiselect'
-], function (MultiselectElement) {
-    'use strict';
-
-    describe('Magento_Ui/js/form/element/multiselect', function () {
-        var params, model;
-
-        beforeEach(function () {
-            params = {
-                dataScope: 'multiselect'
-            };
-            model = new MultiselectElement(params);
-        });
-
-        describe('getInitialValue method', function () {
-            it('check for default', function () {
-                expect(model.getInitialValue()).toEqual(undefined);
-            });
-            it('check with default value', function () {
-                model.indexedOptions = {
-                    Select: {
-                        value: 'value'
-                    }
-                };
-                model.default = 'Select';
-                expect(model.getInitialValue()).toEqual(['value']);
-            });
-            it('check with value', function () {
-                model.indexedOptions = {
-                    Select: {
-                        value: 'value'
-                    }
-                };
-                model.value('Select');
-                expect(model.getInitialValue()).toEqual(['value']);
-            });
-        });
-    });
-});
diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/element/select.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/element/select.test.js
index 6ce3428a6cb35f4a15063de0ba26e3612e1605d2..db5855b0a692bb7ac0c9b75de35d228abe309016 100644
--- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/element/select.test.js
+++ b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/element/select.test.js
@@ -52,64 +52,6 @@ define([
             it('check for chainable', function () {
                 expect(model.initConfig({})).toEqual(model);
             });
-            it('check with empty value and caption', function () {
-                var config = {
-                    options: [{
-                        label: 'Caption',
-                        value: null
-                    }, {
-                        label: 'Some label',
-                        value: 'Some value'
-                    }],
-                    caption: 'Main caption'
-                },
-                expected = {
-                    options: [config.options[1]],
-                    caption: config.caption
-                };
-
-                expect(model.initConfig(config)).toEqual(model);
-                expect(config).toEqual(expected);
-            });
-            it('check with empty value', function () {
-                var config = {
-                        options: [{
-                            label: 'Caption',
-                            value: null
-                        }, {
-                            label: 'Some label',
-                            value: 'Some value'
-                        }]
-                    },
-                    expected = {
-                        options: [config.options[1]],
-                        caption: config.options[0].label
-                    };
-
-                expect(model.initConfig(config)).toEqual(model);
-                expect(config).toEqual(expected);
-            });
-            it('check with multiple empty value', function () {
-                var config = {
-                        options: [{
-                            label: 'Caption',
-                            value: null
-                        }, {
-                            label: 'Some label',
-                            value: 'Some value'
-                        }, {
-                            label: 'Another caption',
-                            value: null
-                        }]
-                    },
-                    expected = {
-                        options: [config.options[1]],
-                        caption: config.options[0].label
-                    };
-
-                expect(model.initConfig(config)).toEqual(model);
-                expect(config).toEqual(expected);
-            });
         });
         describe('initObservable method', function () {
             it('check for chainable', function () {
diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/form.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/form.test.js
index 5a32d5c991e3e06b50647c03057a3cc19ac1239f..88203afba331333193482a79c3e061202e93a2b4 100644
--- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/form.test.js
+++ b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/form.test.js
@@ -67,26 +67,26 @@ define([
                 expect(type).toEqual('object');
             });
         });
-        describe('"initProperties" method', function () {
+        describe('"initConfig" method', function () {
             it('Check for defined ', function () {
-                expect(obj.hasOwnProperty('initProperties')).toBeDefined();
+                expect(obj.hasOwnProperty('initConfig')).toBeDefined();
             });
             it('Check method type', function () {
-                var type = typeof obj.initProperties;
+                var type = typeof obj.initConfig;
 
                 expect(type).toEqual('function');
             });
             it('Check returned value if method called without arguments', function () {
-                expect(obj.initProperties()).toBeDefined();
+                expect(obj.initConfig()).toBeDefined();
             });
             it('Check returned value type if method called without arguments', function () {
-                var type = typeof obj.initProperties();
+                var type = typeof obj.initConfig();
 
                 expect(type).toEqual('object');
             });
-            it('Check this.selector property (is modify in initProperties method)', function () {
+            it('Check this.selector property (is modify in initConfig method)', function () {
                 obj.selector = null;
-                obj.initProperties();
+                obj.initConfig();
                 expect(typeof obj.selector).toEqual('string');
             });
         });
@@ -117,33 +117,6 @@ define([
 
                 expect(type).toEqual('function');
             });
-            it('Check call method "this.validate" inner save method', function () {
-                obj.validate = jasmine.createSpy();
-                obj.source.get = jasmine.createSpy().and.callFake(function () {
-                    return true;
-                });
-                obj.save();
-                expect(obj.validate).toHaveBeenCalled();
-            });
-            it('Check call method "this.source.get" inner save method', function () {
-                obj.validate = jasmine.createSpy();
-                obj.source.get = jasmine.createSpy().and.callFake(function () {
-                    return true;
-                });
-                obj.save();
-                expect(obj.source.get).toHaveBeenCalled();
-            });
-            it('Check call method "this.submit" inner save method', function () {
-                obj.validate = jasmine.createSpy();
-                obj.source.get = jasmine.createSpy().and.callFake(function () {
-                    return false;
-                });
-                obj.submit = jasmine.createSpy().and.callFake(function () {
-                    return true;
-                });
-                obj.save();
-                expect(obj.source.get).toHaveBeenCalled();
-            });
         });
         describe('"submit" method', function () {
             it('Check for defined ', function () {
diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/ui-select.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/ui-select.test.js
index 6a646c7c709099b917a08df1f3f795cce262dca0..5ffa5792b0882385c26546d6fbd834f3dde68a03 100644
--- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/ui-select.test.js
+++ b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/ui-select.test.js
@@ -18,11 +18,13 @@ define([
     describe('Magento_Ui/js/form/element/ui-select', function () {
 
         var obj = new Constr({
+            name: 'uiSelect',
             dataScope: '',
             provider: 'provider'
         });
 
         obj.value = ko.observableArray([]);
+        obj.cacheOptions.plain = [];
 
         describe('"initialize" method', function () {
             it('Check for defined ', function () {
@@ -129,30 +131,6 @@ define([
             });
         });
 
-        describe('"initOptions" method', function () {
-            it('Check for defined ', function () {
-                expect(obj.hasOwnProperty('initOptions')).toBeDefined();
-            });
-            it('Check answer type', function () {
-                var type = typeof obj.initOptions;
-
-                expect(type).toEqual('function');
-            });
-            it('Check returned value if method called without arguments', function () {
-                expect(obj.initOptions()).toBeDefined();
-            });
-            it('Check returned value type if method called without arguments', function () {
-                var type = typeof obj.initOptions();
-
-                expect(type).toEqual('object');
-            });
-            it('Check "this.optionsConfig.options" property', function () {
-                obj.optionsConfig.options = null;
-                obj.initOptions();
-                expect(obj.optionsConfig.options).toEqual([]);
-            });
-        });
-
         describe('"cleanHoveredElement" method', function () {
             it('Check for defined ', function () {
                 expect(obj.hasOwnProperty('cleanHoveredElement')).toBeDefined();
@@ -170,11 +148,6 @@ define([
 
                 expect(type).toEqual('object');
             });
-            it('Check changes "this.hoverElIndex" observe variable', function () {
-                obj.hoverElIndex(5);
-                obj.cleanHoveredElement();
-                expect(obj.hoverElIndex()).toEqual(null);
-            });
         });
         describe('"isSelected" method', function () {
             it('Check for defined ', function () {
@@ -213,10 +186,6 @@ define([
 
                 expect(type).toEqual('boolean');
             });
-            it('Must return false if "hoverElIndex" does not equal value', function () {
-                obj.hoverElIndex(1);
-                expect(obj.isHovered(2)).toEqual(false);
-            });
         });
         describe('"toggleListVisible" method', function () {
             it('Check for defined ', function () {
@@ -281,34 +250,6 @@ define([
                 expect(obj.value()).toEqual([]);
             });
         });
-        describe('"onHoveredIn" method', function () {
-            it('Check for defined ', function () {
-                expect(obj.hasOwnProperty('onHoveredIn')).toBeDefined();
-            });
-            it('Check answer type', function () {
-                var type = typeof obj.onHoveredIn;
-
-                expect(type).toEqual('function');
-            });
-            it('Observe variable "hoverElIndex" must have transmitted value', function () {
-                obj.onHoveredIn({}, 5);
-                expect(obj.hoverElIndex()).toEqual(5);
-            });
-        });
-        describe('"onHoveredOut" method', function () {
-            it('Check for defined ', function () {
-                expect(obj.hasOwnProperty('onHoveredOut')).toBeDefined();
-            });
-            it('Check answer type', function () {
-                var type = typeof obj.onHoveredOut;
-
-                expect(type).toEqual('function');
-            });
-            it('Observe variable "hoverElIndex" must be null', function () {
-                obj.onHoveredOut();
-                expect(obj.hoverElIndex()).toEqual(null);
-            });
-        });
         describe('"onFocusIn" method', function () {
             it('Check for defined ', function () {
                 expect(obj.hasOwnProperty('onFocusIn')).toBeDefined();
@@ -319,7 +260,7 @@ define([
                 expect(type).toEqual('function');
             });
             it('Observe variable "multiselectFocus" must be true', function () {
-                obj.onFocusIn();
+                obj.onFocusIn({}, {});
                 expect(obj.multiselectFocus()).toEqual(true);
             });
         });
@@ -351,14 +292,6 @@ define([
                 obj.enterKeyHandler();
                 expect(obj.listVisible()).toEqual(true);
             });
-            it('if list visible is true, method "toggleOptionSelected" must be called with argument', function () {
-                obj.listVisible(true);
-                obj.hoverElIndex(0);
-                obj.options(['magento']);
-                obj.toggleOptionSelected = jasmine.createSpy();
-                obj.enterKeyHandler();
-                expect(obj.toggleOptionSelected).toHaveBeenCalledWith('magento');
-            });
         });
         describe('"escapeKeyHandler" method', function () {
             it('Check for defined ', function () {
@@ -388,23 +321,6 @@ define([
 
                 expect(type).toEqual('function');
             });
-            it('If "hoverElIndex" is null - "hoverElIndex" must be 0', function () {
-                obj.hoverElIndex(null);
-                obj.pageDownKeyHandler();
-                expect(obj.hoverElIndex()).toEqual(0);
-            });
-            it('If "hoverElIndex" is number - "hoverElIndex" must be number + 1', function () {
-                obj.hoverElIndex(1);
-                obj.options(['one', 'two', 'three']);
-                obj.pageDownKeyHandler();
-                expect(obj.hoverElIndex()).toEqual(2);
-            });
-            it('If "hoverElIndex" is number and number === options length -1, "hoverElIndex" must be 0', function () {
-                obj.hoverElIndex(1);
-                obj.options(['one', 'two']);
-                obj.pageDownKeyHandler();
-                expect(obj.hoverElIndex()).toEqual(0);
-            });
         });
         describe('"pageUpKeyHandler" method', function () {
             it('Check for defined ', function () {
@@ -415,24 +331,6 @@ define([
 
                 expect(type).toEqual('function');
             });
-            it('If "hoverElIndex" is null - "hoverElIndex" must be option length -1', function () {
-                obj.hoverElIndex(null);
-                obj.options(['one', 'two']);
-                obj.pageUpKeyHandler();
-                expect(obj.hoverElIndex()).toEqual(1);
-            });
-            it('If "hoverElIndex" is 0 - "hoverElIndex" must be option length -1', function () {
-                obj.hoverElIndex(0);
-                obj.options(['one', 'two']);
-                obj.pageUpKeyHandler();
-                expect(obj.hoverElIndex()).toEqual(1);
-            });
-            it('If "hoverElIndex" is number - "hoverElIndex" must be number - 1', function () {
-                obj.hoverElIndex(2);
-                obj.options(['one', 'two']);
-                obj.pageUpKeyHandler();
-                expect(obj.hoverElIndex()).toEqual(1);
-            });
         });
         describe('"keydownSwitcher" method', function () {
             it('Check for defined ', function () {
@@ -537,7 +435,7 @@ define([
                 expect(type).toEqual('function');
             });
             it('Check returned value if selected', function () {
-                obj.cacheOptions = [{value: 'magento'}, {value: 'magento2'}];
+                obj.cacheOptions.plain = [{value: 'magento'}, {value: 'magento2'}];
                 obj.value(['magento', 'magento2']);
 
                 expect(obj.getSelected()).toEqual([{value: 'magento'}, {value: 'magento2'}]);
diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/columns/actions.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/columns/actions.test.js
index c282660342ad1c25a7b0f35dd9d095fcaeb7604b..318e09453dc5af8f3f4d3f43e10c208c615a8b6c 100644
--- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/columns/actions.test.js
+++ b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/columns/actions.test.js
@@ -82,19 +82,5 @@ define([
             action.hidden = false;
             expect(model.isActionVisible(action)).toBeTruthy();
         });
-
-        it('Check toggleList function', function () {
-            model.toggleList(0);
-            expect(model.opened()).toEqual(0);
-            model.toggleList(0);
-            expect(model.opened()).toBeFalsy();
-        });
-
-        it('Check closeList function', function () {
-            model.toggleList(0);
-            expect(model.opened()).toEqual(0);
-            model.closeList(0);
-            expect(model.opened()).toBeFalsy();
-        });
     });
 });
\ No newline at end of file
diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/columns/column.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/columns/column.test.js
index b4db54bdb7b65fec6a557dd12f0d10e878277ece..ccfccdd195f0292163eab823ae5b15a61713594c 100644
--- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/columns/column.test.js
+++ b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/columns/column.test.js
@@ -17,7 +17,8 @@ define([
                 sortable: true,
                 sorting: false,
                 headerTmpl: 'header',
-                bodyTmpl: 'body'
+                bodyTmpl: 'body',
+                source: function () {}
             });
         });
 
@@ -27,11 +28,6 @@ define([
                 expect(column.sorting).toBe('asc');
             });
 
-            it('apply sorting in other direction', function () {
-                column.sort(true).sort(true);
-                expect(column.sorting).toBe('desc');
-            });
-
             it('remove sorting', function () {
                 column.sort(false);
                 expect(column.sorting).toBeFalsy();
diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/columns/date.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/columns/date.test.js
index e93209a5dfd04fbb6d897b650bc94cc7157b4f73..bee9a76a8ed390ab1aa8d6aaa8c5f5a13b2e6314 100644
--- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/columns/date.test.js
+++ b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/columns/date.test.js
@@ -22,21 +22,14 @@ define([
                 });
         });
 
-        describe('initProperties method', function () {
+        describe('initConfig method', function () {
             it('check for chainable', function () {
-                expect(date.initProperties()).toEqual(date);
+                expect(date.initConfig()).toEqual(date);
             });
             it('check for extend', function () {
-                date.initProperties();
+                date.initConfig();
                 expect(date.dateFormat).toBeDefined();
             });
         });
-
-        describe('getLabel method', function () {
-            it('check format', function () {
-                date.dateFormat = dateFormat;
-                expect(date.getLabel(dateRaw)).toBe(dateFormatted);
-            });
-        });
     });
 });
diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/columns/select.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/columns/select.test.js
index 9b9e0b35cf3ebc05a49ec2dbc26ebd15ae338d41..3179490ab1ed62391841b17df6f459e52b106db6 100644
--- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/columns/select.test.js
+++ b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/columns/select.test.js
@@ -25,11 +25,6 @@ define([
             it('get label while options empty', function () {
                 expect(select.getLabel(2)).toBe('');
             });
-
-            it('get label for existed value', function () {
-                select.options = opts;
-                expect(select.getLabel(2)).toBe('b');
-            });
         });
     });
 });
diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/controls/bookmarks/bookmarks.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/controls/bookmarks/bookmarks.test.js
deleted file mode 100644
index d85890b2c98f4372f5194684d011a4d1836a72a1..0000000000000000000000000000000000000000
--- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/controls/bookmarks/bookmarks.test.js
+++ /dev/null
@@ -1,104 +0,0 @@
-/**
- * Copyright © 2016 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
-
-define([
-    'Magento_Ui/js/grid/controls/bookmarks/bookmarks'
-], function (Bookmarks) {
-    'use strict';
-    describe('ui/js/grid/controls/bookmarks/bookmarks', function () {
-        var bookmarksElement, returnContext;
-
-        beforeEach(function () {
-            bookmarksElement = new Bookmarks({
-                index: 'index',
-                name: 'name',
-                indexField: 'id',
-                dataScope: 'scope',
-                provider: 'provider'
-            });
-
-        });
-        it('has initialize method', function () {
-            spyOn(bookmarksElement, "initialize");
-            bookmarksElement.initialize();
-            expect(bookmarksElement.initialize).toHaveBeenCalled();
-        });
-        it('has initStorage method', function () {
-            spyOn(bookmarksElement, "initStorage");
-            bookmarksElement.initStorage();
-            expect(bookmarksElement.initStorage).toHaveBeenCalled();
-        });
-        it('has initElement method', function () {
-            spyOn(bookmarksElement, "initElement");
-            bookmarksElement.initElement();
-            expect(bookmarksElement.initElement).toHaveBeenCalled();
-        });
-        it('has initViews method', function () {
-            spyOn(bookmarksElement, "initViews");
-            bookmarksElement.initViews();
-            expect(bookmarksElement.initViews).toHaveBeenCalled();
-        });
-        it('has createView method', function () {
-            spyOn(bookmarksElement, "createView");
-            bookmarksElement.createView();
-            expect(bookmarksElement.createView).toHaveBeenCalled();
-        });
-        it('has createNewView method', function () {
-            spyOn(bookmarksElement, "createNewView");
-            bookmarksElement.createNewView();
-            expect(bookmarksElement.createNewView).toHaveBeenCalled();
-        });
-        it('has removeView method', function () {
-            spyOn(bookmarksElement, "removeView");
-            bookmarksElement.removeView();
-            expect(bookmarksElement.removeView).toHaveBeenCalled();
-        });
-        it('has saveView method', function () {
-            spyOn(bookmarksElement, "saveView");
-            bookmarksElement.saveView();
-            expect(bookmarksElement.saveView).toHaveBeenCalled();
-        });
-        it('has applyView method', function () {
-            spyOn(bookmarksElement, "applyView");
-            bookmarksElement.applyView();
-            expect(bookmarksElement.applyView).toHaveBeenCalled();
-        });
-        it('has applyState method', function () {
-            spyOn(bookmarksElement, "applyState");
-            bookmarksElement.applyState();
-            expect(bookmarksElement.applyState).toHaveBeenCalled();
-        });
-        it('has saveSate method', function () {
-            spyOn(bookmarksElement, "saveSate");
-            bookmarksElement.saveSate();
-            expect(bookmarksElement.saveSate).toHaveBeenCalled();
-        });
-        it('has checkChanges method', function () {
-            spyOn(bookmarksElement, "checkChanges");
-            bookmarksElement.checkChanges();
-            expect(bookmarksElement.checkChanges).toHaveBeenCalled();
-        });
-        it('has _defaultPolyfill method', function () {
-            spyOn(bookmarksElement, "_defaultPolyfill");
-            bookmarksElement._defaultPolyfill();
-            expect(bookmarksElement._defaultPolyfill).toHaveBeenCalled();
-        });
-        it('has onActiveIndexChange method', function () {
-            spyOn(bookmarksElement, "onActiveIndexChange");
-            bookmarksElement.onActiveIndexChange();
-            expect(bookmarksElement.onActiveIndexChange).toHaveBeenCalled();
-        });
-        it('has onStateChange method', function () {
-            spyOn(bookmarksElement, "onStateChange");
-            bookmarksElement.onStateChange();
-            expect(bookmarksElement.onStateChange).toHaveBeenCalled();
-        });
-        it('has onEditingChange method', function () {
-            spyOn(bookmarksElement, "onEditingChange");
-            bookmarksElement.onEditingChange();
-            expect(bookmarksElement.onEditingChange).toHaveBeenCalled();
-        });
-    });
-});
diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/controls/bookmarks/view.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/controls/bookmarks/view.test.js
deleted file mode 100644
index 791dccb14003ceee6047477a2c1bb1da0031f688..0000000000000000000000000000000000000000
--- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/controls/bookmarks/view.test.js
+++ /dev/null
@@ -1,67 +0,0 @@
-/**
- * Copyright © 2016 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
-
-define([
-    'Magento_Ui/js/grid/controls/bookmarks/view'
-], function (BookmarkView) {
-        'use strict';
-    describe('ui/js/grid/controls/bookmarks/view', function () {
-        var view, returnContextOfItself;
-        beforeEach(function(){
-            view = new BookmarkView({
-                index: 'index',
-                name: 'name',
-                indexField: 'id',
-                dataScope: 'scope',
-                provider: 'provider'
-            });
-        });
-        it('has initialize method', function () {
-            spyOn(view, "initialize");
-            view.initialize();
-            expect(view.initialize).toHaveBeenCalled();
-        });
-        it('has initObservable method', function () {
-            spyOn(view, "initObservable");
-            view.initObservable();
-            expect(view.initObservable).toHaveBeenCalled();
-        });
-        it('has getData method', function () {
-            spyOn(view, "getData");
-            view.getData();
-            expect(view.getData).toHaveBeenCalled();
-        });
-        it('has setData method', function () {
-            spyOn(view, "setData");
-            view.setData();
-            expect(view.setData).toHaveBeenCalled();
-        });
-        it('has syncLabel method', function () {
-            spyOn(view, "syncLabel");
-            view.syncLabel();
-            expect(view.syncLabel).toHaveBeenCalled();
-        });
-        it('has startEdit method', function () {
-            spyOn(view, "startEdit");
-            view.startEdit();
-            expect(view.startEdit).toHaveBeenCalled();
-        });
-        it('has exportView method', function () {
-            spyOn(view, "exportView");
-            view.exportView();
-            expect(view.exportView).toHaveBeenCalled();
-        });
-        it('has onActivate method', function () {
-            spyOn(view, "onActivate");
-            view.onActivate();
-            expect(view.onActivate).toHaveBeenCalled();
-        });
-        it('has onActiveChange method', function () {
-            spyOn(view, "onActiveChange");
-            view.onActiveChange();
-            expect(view.onActiveChange).toHaveBeenCalled();
-        });
-    })
-});
diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/editing/bulk.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/editing/bulk.test.js
index 094ad409e5eb4415672702fb38eb219070b2fe54..bdbffbff347fe27c18b13b1c17b79f175f724ec2 100644
--- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/editing/bulk.test.js
+++ b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/editing/bulk.test.js
@@ -13,6 +13,7 @@ define([
 
         beforeEach(function () {
             bulkObj = new Bulk();
+            bulkObj.editor = jasmine.createSpy('editor');
         });
         it('has initObservable', function () {
             expect(bulkObj).toBeDefined();
@@ -33,5 +34,5 @@ define([
             bulkObj.updateState();
             expect(bulkObj.updateState).toHaveBeenCalled();
         });
-    })
-});
\ No newline at end of file
+    });
+});
diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/filters/filters.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/filters/filters.test.js
index 0555f056f5e90822b1aca09f39c1c27b08f7cf8a..05a65b038f3e3783d2af10d1ab75f1a2c0ee135f 100644
--- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/filters/filters.test.js
+++ b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/filters/filters.test.js
@@ -13,7 +13,9 @@ define([
             temp;
 
         beforeEach(function () {
-            filterObj = new Filter();
+            filterObj = new Filter({
+                name: 'filter'
+            });
         });
         it('has been initialized', function () {
             expect(filterObj).toBeDefined();
@@ -39,16 +41,6 @@ define([
             temp = filterObj.cancel();
             expect(temp).toBeDefined();
         });
-        it('has isOpened method', function () {
-            filterObj.opened = function () {
-                return true;
-            };
-            filterObj.hasVisible = function () {
-                return true;
-            };
-            temp = filterObj.isOpened();
-            expect(temp).toBeTruthy();
-        });
         it('has isFilterVisible method', function () {
             temp = {
                 visible: function () {
@@ -69,15 +61,5 @@ define([
             filterObj.hasVisible();
             expect(filterObj.hasVisible).toHaveBeenCalled();
         });
-        it('has extractActive method', function () {
-            spyOn(filterObj, 'extractActive');
-            filterObj.extractActive();
-            expect(filterObj.extractActive).toHaveBeenCalled();
-        });
-        it('has extractPreviews method', function () {
-            spyOn(filterObj, 'extractPreviews');
-            filterObj.extractPreviews();
-            expect(filterObj.extractPreviews).toHaveBeenCalled();
-        });
     });
-});
\ No newline at end of file
+});
diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/filters/range.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/filters/range.test.js
index 44640d6ef206367191e630c36dcdd5271982e268..c2f798927fa8e34fa453d505f532371ee0e801e0 100644
--- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/filters/range.test.js
+++ b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/filters/range.test.js
@@ -28,18 +28,6 @@ define([
             group.elems.push({id:1}, {id:1});
             expect(group.elems()).not.toEqual([]);
         });
-        it('Check for reset elements.', function () {
-            var elem = {
-                value: false,
-                reset: function() {
-                    this.value = true;
-                }
-            };
-
-            group.elems.push(elem);
-            expect(group.reset()).toBe(group);
-            expect(group.elems.first().value).toBe(true);
-        });
         it('Check for clear elements.', function () {
             var elem = {
                 value: 'text',
diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/paging/paging.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/paging/paging.test.js
index 36c2823eaf9e62706bc4d0d12174fedad4d25049..a240e5cfd432597d4bb38e10957b4495d4ed48b2 100644
--- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/paging/paging.test.js
+++ b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/paging/paging.test.js
@@ -39,103 +39,17 @@ define([
             });
         });
 
-        describe('countPages method', function () {
-            it('correct number of pages', function () {
-                paging.countPages();
-                expect(paging.pages).toBe(4);
-            });
-
-            it('if no records', function () {
-                paging.totalRecords = 0;
-                paging.countPages();
-                expect(paging.pages).toBe(1);
-            });
-        });
-
-        describe('page manipualations', function () {
-            it('setPage method', function () {
-                paging.setPage(2);
-                expect(paging.current).toBe(2);
-            });
-
-            it('next', function () {
-                paging.current = 1;
-                paging.next();
-                expect(paging.current).toBe(2);
-            });
-
-            it('next out of boundary', function () {
-                paging.current = 4;
-                paging.next();
-                expect(paging.current).toBe(4);
-            });
-
-            it('prev', function () {
-                paging.current = 4;
-                paging.prev();
-                expect(paging.current).toBe(3);
-            });
-
-            it('prev out of boundary', function () {
-                paging.current = 1;
-                paging.prev();
-                expect(paging.current).toBe(1);
-            });
-
-            it('goFirst', function () {
-                paging.goFirst();
-                expect(paging.current).toBe(1);
-            });
-
-            it('goLast', function () {
-                paging.goLast();
-                expect(paging.current).toBe(4);
-            });
-
-            it('isFirst for 1st page', function () {
-                paging.current = 1;
-                expect(paging.isFirst()).toBeTruthy();
-            });
-
-            it('isFirst for 2nd page', function () {
-                paging.current = 2;
-                expect(paging.isFirst()).toBeFalsy();
-            });
-
-            it('isLast for last page', function () {
-                paging.current = 4;
-                expect(paging.isLast()).toBeTruthy();
-            });
-
-            it('isLast for first page', function () {
-                paging.current = 1;
-                expect(paging.isLast()).toBeFalsy();
-            });
-        });
-
-        describe('countPages method', function () {
-            it('correct number of pages', function () {
-                paging.countPages();
-                expect(paging.pages).toBe(4);
-            });
-
-            it('if no records', function () {
-                paging.totalRecords = 0;
-                paging.countPages();
-                expect(paging.pages).toBe(1);
-            });
-        });
-
         describe('onPagesChange method', function () {
             it('pages amount became less than current', function () {
                 paging.current = 4;
                 expect(paging.current).toBe(4);
-                paging.onPagesChange(2);
-                expect(paging.current).toBe(2);
+                paging.pageSize = 3;
+                paging.onPagesChange();
+                expect(paging.current).toBe(3);
             });
         });
 
-        describe('ititObservable method', function () {
+        describe('initObservable method', function () {
             it('_current will be defined', function () {
                 expect(paging._current).toBeDefined();
             });
@@ -144,14 +58,6 @@ define([
                 paging.current = 2;
                 expect(paging._current()).toBe(2);
             });
-
-            it('write into current', function () {
-                spyOn(paging, 'normalize').and.callThrough();
-                spyOn(paging._current, 'notifySubscribers');
-                paging._current(4);
-                expect(paging.current).toBe(4);
-                expect(paging._current.notifySubscribers).toHaveBeenCalledWith(4);
-            });
         });
     });
 });
diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/resize.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/resize.test.js
index 948bfb84a85da7621273661ccf8da12483e196ab..4cbb9e73d5ae770bb1121b635dbf7ab4da260ecc 100644
--- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/resize.test.js
+++ b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/resize.test.js
@@ -63,10 +63,10 @@ define([
                         index: 1,
                         column: data,
                         on: function (arg1, arg2) {}
-                    }
+                    };
                 });
                 spyOn(ko, 'contextFor').and.callFake(function () {
-                    return {$index: 1, $parent: obj}
+                    return {$index: 1, $parent: obj};
                 });
                 $._data = jasmine.createSpy().and.callFake(function () {
                     return {
@@ -82,45 +82,6 @@ define([
                 type = typeof obj.initColumn;
                 expect(type).toEqual('function');
             });
-            it('Check call "this.getDefaultWidth" method', function () {
-                spyOn(obj, 'getDefaultWidth');
-                obj.initColumn('magento');
-                expect(obj.getDefaultWidth).toHaveBeenCalledWith('magento');
-            });
-            it('Check call "this.hasColumn" method', function () {
-                spyOn(obj, 'hasColumn').and.callFake(function () {
-                    return false;
-                });
-                obj.initColumn('magento');
-                expect(obj.hasColumn).toHaveBeenCalled();
-            });
-            it('Check call "this.initResizableElement" method', function () {
-                spyOn(obj, 'hasColumn').and.callFake(function () {
-                    return false;
-                });
-                spyOn(obj, 'initResizableElement').and.callFake(function (arg) {
-                    return true;
-                });
-                obj.initColumn('magento');
-                expect(obj.initResizableElement).toHaveBeenCalled();
-            });
-            it('Check call "this.setStopPropagationHandler" method', function () {
-                spyOn(obj, 'hasColumn').and.callFake(function () {
-                    return false;
-                });
-                spyOn(obj, 'setStopPropagationHandler').and.callFake(function (arg) {
-                    return true;
-                });
-                obj.initColumn('magento');
-                expect(obj.setStopPropagationHandler).toHaveBeenCalledWith('magento');
-            });
-            it('Check call "this.refreshLastColumn" method', function () {
-                spyOn(obj, 'refreshLastColumn').and.callFake(function (arg) {
-                    return true;
-                });
-                obj.initColumn('magento');
-                expect(obj.refreshLastColumn).toHaveBeenCalledWith('magento');
-            });
         });
         describe('"initResizableElement" method', function () {
             beforeEach(function(){
@@ -194,9 +155,9 @@ define([
                     }
                 });
                 spyOn(ko, 'contextFor').and.callFake(function () {
-                    return {$index: ko.observable(1), $parent: obj}
+                    return {$index: ko.observable(1), $parent: obj};
                 });
-                spyOn(obj, 'getNextElement').and.callFake(function () {
+                spyOn(obj, 'getNextElements').and.callFake(function () {
                     return true;
                 });
                 event = {stopImmediatePropagation: function(){}}
@@ -215,9 +176,9 @@ define([
                 obj.mousedownHandler(event);
                 expect(obj.hasColumn).toHaveBeenCalled();
             });
-            it('Check call "this.getNextElement" method', function () {
+            it('Check call "this.getNextElements" method', function () {
                 obj.mousedownHandler(event);
-                expect(obj.getNextElement).toHaveBeenCalled();
+                expect(obj.getNextElements).toHaveBeenCalled();
             });
         });
         describe('"mousemoveHandler" method', function () {
@@ -261,7 +222,7 @@ define([
                 expect(obj.storageColumnsData[2]).toEqual(200);
             });
         });
-        describe('"getNextElement" method', function () {
+        describe('"getNextElements" method', function () {
             beforeEach(function(){
                 spyOn(ko, 'dataFor').and.callFake(function (data) {
                     return {
@@ -275,24 +236,24 @@ define([
                 });
             });
             it('Check for defined ', function () {
-                expect(obj.hasOwnProperty('getNextElement')).toBeDefined();
+                expect(obj.hasOwnProperty('getNextElements')).toBeDefined();
             });
             it('Check method type', function () {
-                type = typeof obj.getNextElement;
+                type = typeof obj.getNextElements;
                 expect(type).toEqual('function');
             });
             it('Check call "this.hasColumn" method', function () {
                 spyOn(obj, 'hasColumn').and.callFake(function () {
                     return 'magento';
                 });
-                obj.getNextElement('magento');
+                obj.getNextElements('magento');
                 expect(obj.hasColumn).toHaveBeenCalled();
             });
             it('Check returned value', function () {
                 spyOn(obj, 'hasColumn').and.callFake(function () {
                     return 'magento';
                 });
-                expect(obj.getNextElement('magento')).toEqual('magento');
+                expect(obj.getNextElements('magento')).toEqual('magento');
             });
         });
         describe('"getDefaultWidth" method', function () {
@@ -337,21 +298,11 @@ define([
                 arg = { index: 'magento' };
                 expect(typeof obj.hasColumn(arg, false)).toEqual('boolean');
             });
-            it('Must return false if object columnsElements has not model.index property', function () {
-                arg = { index: 'magento' };
-                obj.columnsElements = {};
-                expect(obj.hasColumn(arg, false)).toEqual(false);
-            });
             it('Must return true if object columnsElements has  model.index property', function () {
                 arg = { index: 'magento' };
                 obj.columnsElements = {magento: 'magentoProp'};
                 expect(obj.hasColumn(arg, false)).toEqual(true);
             });
-            it('Must return property if object columnsElements has property and second argument is true', function () {
-                arg = { index: 'magento' };
-                obj.columnsElements = {magento: 'magentoProp'};
-                expect(obj.hasColumn(arg, true)).toEqual('magentoProp');
-            });
         });
         describe('"hasRow" method', function () {
             it('Check for defined ', function () {
diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/search/search.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/search/search.test.js
index b407fe3bebeae0153d60fe37a76953a50a1d72f6..e10061263d13a14214e50ab1266f809c96ec0883 100644
--- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/search/search.test.js
+++ b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/search/search.test.js
@@ -7,7 +7,7 @@ define([
 ], function (Search) {
     'use strict';
 
-    describe('Magento_Ui/js/search/search', function () {
+    describe('Magento_Ui/js/grid/search/search', function () {
         var searchObj,
             temp;
 
@@ -31,23 +31,6 @@ define([
             searchObj.initChips();
             expect(searchObj.chips).toHaveBeenCalled();
         });
-        it('has clear', function () {
-            spyOn(searchObj, 'value');
-            searchObj.clear();
-            expect(searchObj.value).toHaveBeenCalled();
-        });
-        it('has clear', function () {
-            spyOn(searchObj, 'inputValue');
-            searchObj.cancel();
-            expect(searchObj.inputValue).toHaveBeenCalled();
-        });
-        it('has apply', function () {
-            spyOn(searchObj, 'value');
-            spyOn(searchObj, 'inputValue');
-            searchObj.apply();
-            expect(searchObj.value).toHaveBeenCalled();
-            expect(searchObj.inputValue).toHaveBeenCalled();
-        });
         it('has updatePreview', function () {
             spyOn(searchObj, 'updatePreview');
             searchObj.updatePreview();
diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/sticky/sticky.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/sticky/sticky.test.js
index 4c2b68d8fcd01046895f88589d339948b032b269..426b453ab42852caf01763e5d6f73ff11933fffb 100644
--- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/sticky/sticky.test.js
+++ b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/grid/sticky/sticky.test.js
@@ -135,10 +135,13 @@ define([
                 stickyObj.resetToTop();
                 expect(stickyObj.resetToTop).toHaveBeenCalled();
             });
-            it('has toggleContainerVisibility event', function () {
-                spyOn(stickyObj, 'visible');
+            it('has "toggleContainerVisibility" method', function () {
+                stickyObj.visible = false;
                 stickyObj.toggleContainerVisibility();
-                expect(stickyObj.visible).toHaveBeenCalled();
+                expect(stickyObj.visible).toEqual(true);
+                stickyObj.visible = true;
+                stickyObj.toggleContainerVisibility();
+                expect(stickyObj.visible).toEqual(false);
             });
             it('has adjustContainerElemsWidth event', function () {
                 stickyObj.resizeContainer = function(){
@@ -156,17 +159,6 @@ define([
                 stickyObj.adjustOffset();
                 expect(stickyObj.adjustOffset).toHaveBeenCalled();
             });
-            it('has checkPos event', function () {
-                stickyObj.visible = function(){
-                    return false;
-                };
-                stickyObj.getMustBeSticky = function(){
-                    return false;
-                };
-
-                data = stickyObj.checkPos();
-                expect(data).toBeDefined();
-            })
         });
     })
 });
\ No newline at end of file
diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/component/core.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/component/core.test.js
deleted file mode 100644
index 9a0e8c2c4de0874406e61619b43ba471f166beff..0000000000000000000000000000000000000000
--- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/component/core.test.js
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- * Copyright © 2016 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
-
-define([
-    'Magento_Ui/js/lib/component/core'
-], function (core) {
-    'use strict';
-
-    describe('Magento_Ui/js/lib/component/core', function () {
-        var coreObj,
-            returnedValue;
-
-        beforeEach(function () {
-            coreObj = core;
-        });
-        it('has initialize', function () {
-            spyOn(coreObj, 'initialize');
-            coreObj.initialize();
-            expect(coreObj.initialize).toHaveBeenCalled();
-        });
-        it('has initProperties', function () {
-            returnedValue = coreObj.initProperties();
-            expect(typeof returnedValue).toEqual('object');
-        });
-        it('has initObservable', function () {
-            spyOn(coreObj, 'initObservable');
-            coreObj.initObservable();
-            expect(coreObj.initObservable).toHaveBeenCalled();
-        });
-        it('has initLinks', function () {
-            spyOn(coreObj, 'initLinks');
-            coreObj.initLinks();
-            expect(coreObj.initLinks).toHaveBeenCalled();
-        });
-        it('has initModules', function () {
-            returnedValue = coreObj.initModules();
-            expect(typeof returnedValue).toEqual('object');
-        });
-        it('has initUnique', function () {
-            returnedValue = coreObj.initUnique();
-            expect(typeof returnedValue).toEqual('object');
-        });
-        it('has initContainer', function () {
-            spyOn(coreObj, 'initContainer');
-            coreObj.initContainer();
-            expect(coreObj.initContainer).toHaveBeenCalled();
-        });
-        it('has initElement', function () {
-            spyOn(coreObj, 'initElement');
-            coreObj.initElement();
-            expect(coreObj.initElement).toHaveBeenCalled();
-        });
-        it('has getTemplate', function () {
-            spyOn(coreObj, 'getTemplate');
-            coreObj.getTemplate();
-            expect(coreObj.getTemplate).toHaveBeenCalled();
-        });
-        it('has setUnique', function () {
-            spyOn(coreObj, 'setUnique');
-            coreObj.setUnique();
-            expect(coreObj.setUnique).toHaveBeenCalled();
-        });
-        it('has onUniqueUpdate', function () {
-            spyOn(coreObj, 'onUniqueUpdate');
-            coreObj.onUniqueUpdate();
-            expect(coreObj.onUniqueUpdate).toHaveBeenCalled();
-        });
-    });
-});
diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/component/links.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/component/links.test.js
index cf122dbc31fdfe14c0e7654abd232f2558562447..ff17bd826b5c212cf7e2fe624d7da70a3fca2177 100644
--- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/component/links.test.js
+++ b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/component/links.test.js
@@ -19,9 +19,6 @@ define([
             };
 
         });
-        it('has defaults', function () {
-            expect(typeof linksObj.defaults).toEqual('object');
-        });
         it('has setLinks method', function () {
             returnedValue = linksObj.setLinks(undefined, 'imports');
             expect(typeof returnedValue).toEqual('object');
diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/component/manip.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/component/manip.test.js
deleted file mode 100644
index 51c460ab648ad948a756a12b131873740959ffe8..0000000000000000000000000000000000000000
--- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/component/manip.test.js
+++ /dev/null
@@ -1,67 +0,0 @@
-/**
- * Copyright © 2016 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
-define([
-        'Magento_Ui/js/lib/component/manip'
-    ], function (manip) {
-        'use strict';
-
-        describe( 'Magento_Ui/js/lib/component/manip', function(){
-            var manipObj,
-                returnedValue;
-
-            beforeEach(function(){
-                manipObj = manip;
-            });
-            it('has getRegion method', function(){
-                returnedValue = manipObj.getRegion("region");
-                expect(returnedValue).toBeDefined();
-            });
-            it('has updateRegion method', function(){
-                returnedValue = manipObj.updateRegion([],"region");
-                expect(typeof returnedValue).toEqual('object');
-            });
-            it('has insertChild method', function(){
-                spyOn(manipObj, "insertChild");
-                manipObj.insertChild();
-                expect(manipObj.insertChild).toHaveBeenCalled();
-            });
-            it('has removeChild method', function(){
-                spyOn(manipObj, "removeChild");
-                manipObj.removeChild();
-                expect(manipObj.removeChild).toHaveBeenCalled();
-            });
-            it('has destroy method', function(){
-                spyOn(manipObj, "destroy");
-                manipObj.destroy();
-                expect(manipObj.destroy).toHaveBeenCalled();
-            });
-            it('has _dropHandlers method', function(){
-                spyOn(manipObj, "_dropHandlers");
-                manipObj._dropHandlers();
-                expect(manipObj._dropHandlers).toHaveBeenCalled();
-            });
-            it('has _clearData method', function(){
-                spyOn(manipObj, "_clearData");
-                manipObj._clearData();
-                expect(manipObj._clearData).toHaveBeenCalled();
-            });
-            it('has _clearRefs method', function(){
-                spyOn(manipObj, "_clearRefs");
-                manipObj._clearRefs();
-                expect(manipObj._clearRefs).toHaveBeenCalled();
-            });
-            it('has _insert method', function(){
-                spyOn(manipObj, "_insert");
-                manipObj._insert();
-                expect(manipObj._insert).toHaveBeenCalled();
-            });
-            it('has _update method', function(){
-                spyOn(manipObj, "_update");
-                manipObj._update();
-                expect(manipObj._update).toHaveBeenCalled();
-            });
-
-        });
-    });
diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/component/provider.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/component/provider.test.js
deleted file mode 100644
index 47e531677abef865d39428b21722d12ab87f5b29..0000000000000000000000000000000000000000
--- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/component/provider.test.js
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * Copyright © 2016 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
-define([
-        'Magento_Ui/js/lib/component/provider'
-    ], function (provider) {
-        'use strict';
-
-        describe( 'Magento_Ui/js/lib/component/provider', function(){
-            var providerObj,
-                returnedValue;
-
-            beforeEach(function(){
-                providerObj = provider;
-            });
-            it('has observe method', function(){
-                returnedValue = providerObj.observe("elems");
-                expect(typeof  returnedValue).toEqual('object');
-            });
-            it('has set method', function(){
-                spyOn(providerObj, "set");
-                providerObj.set();
-                expect(providerObj.set).toHaveBeenCalled();
-            });
-            it('has remove method', function(){
-                spyOn(providerObj, "remove");
-                providerObj.remove();
-                expect(providerObj.remove).toHaveBeenCalled();
-            });
-            it('has restore method', function(){
-                spyOn(providerObj, "restore");
-                providerObj.restore();
-                expect(providerObj.restore).toHaveBeenCalled();
-            });
-            it('has removeStored method', function(){
-                spyOn(providerObj, "removeStored");
-                providerObj.removeStored();
-                expect(providerObj.removeStored).toHaveBeenCalled();
-            });
-        });
-    });
diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/component/traversal.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/component/traversal.test.js
deleted file mode 100644
index c6b6784475f3b81506b8c7ee58774a1a9bf318dd..0000000000000000000000000000000000000000
--- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/component/traversal.test.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * Copyright © 2016 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
-define([
-        'Magento_Ui/js/lib/component/traversal'
-    ], function (traversal) {
-        'use strict';
-
-        describe( 'Magento_Ui/js/lib/component/traversal', function(){
-            var traversalObj;
-
-            beforeEach(function(){
-                traversalObj = traversal;
-            });
-            it('has delegate method', function(){
-                spyOn(traversalObj, "delegate");
-                traversalObj.delegate();
-                expect(traversalObj.delegate).toHaveBeenCalled();
-            });
-        });
-    });
diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/ko/bind/i18n.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/ko/bind/i18n.test.js
index 8d0a99361ea547eb8b1894346861c20a6fceae42..8f7485a2f0bed94f9460be567d8e39c2f7ded2cb 100644
--- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/ko/bind/i18n.test.js
+++ b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/ko/bind/i18n.test.js
@@ -82,36 +82,5 @@ define([
             expect(elWithVariable.attr(dataTranslateAttrName))
                 .toEqual(dataTranslateAttr.replace(/\$/g, variableText).replace(/\&/g, variableText));
         });
-
-        it('if inline translation is on, ' +
-        'and there is translation for this text,' +
-        ' set translated text for element', function () {
-            turnOnInlineTranslation();
-            $.mage.translate.add(staticText, staticTextTranslatedRaw);
-            $.mage.translate.add(variableText, variableTranslatedRaw);
-            spyOn($.mage.translate, 'parsedTranslate').and.callThrough();
-
-            context.config.config = {
-                'Magento_Ui/js/lib/knockout/bindings/i18n': {
-                    inlineTranslation: true
-                }
-            };
-
-            ko.applyBindingsToNode(elWithStaticText[0], {
-                i18n: staticText
-            });
-            ko.applyBindingsToNode(elWithVariable[0], {
-                i18n: variable
-            });
-
-            expect($.mage.translate.parsedTranslate).toHaveBeenCalledWith(staticText);
-            expect($.mage.translate.parsedTranslate).toHaveBeenCalledWith(variableText);
-            expect(elWithStaticText.text()).toEqual(staticTextTranslated);
-            expect(elWithVariable.text()).toEqual(variableTranslated);
-            expect(elWithStaticText.attr(dataTranslateAttrName))
-                .toEqual(dataTranslateAttr.replace(/\$/g, staticText).replace(/\&/g, staticTextTranslated));
-            expect(elWithVariable.attr(dataTranslateAttrName))
-                .toEqual(dataTranslateAttr.replace(/\$/g, variableText).replace(/\&/g, variableTranslated));
-        });
     });
 });
diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/registry/events.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/registry/events.test.js
deleted file mode 100644
index b6f9c42086040cad3daafdce3d27f3681f317f11..0000000000000000000000000000000000000000
--- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/registry/events.test.js
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * Copyright © 2016 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
-
-
-define([
-    'Magento_Ui/js/lib/registry/events'
-], function (EventBus) {
-    'use strict';
-
-    describe('Magento_Ui/js/lib/registry/events', function () {
-        var storage = {
-                has : function(){
-                    return false;
-                },
-                get : function(){
-                    return [];
-                }
-            },
-            eventsClass = new EventBus(storage);
-
-        describe('"resolve" method', function () {
-            it('Check for defined ', function () {
-                expect(eventsClass.resolve()).toBeDefined();
-            });
-            it('Check answer type', function () {
-                var type = typeof(eventsClass.resolve());
-
-                expect(type).toEqual('object');
-            });
-        });
-        describe('"wait" method', function () {
-            it('Check for defined ', function () {
-                expect(eventsClass.wait([],{})).toBeDefined();
-            });
-            it('Check return object property "requests" defined', function () {
-                var thisObject = eventsClass.wait([],{}).requests;
-
-                expect(thisObject).toBeDefined();
-            });
-            it('Check return object property "requests" type', function () {
-                var thisObject = typeof(eventsClass.wait([],{}).requests);
-
-                expect(thisObject).toEqual('object');
-            });
-        });
-        describe('"_resolve" method', function () {
-            it('Check completion method', function () {
-                eventsClass.request = [{
-                    callback: function(){return true;},
-                    deps: {}
-                }];
-                expect(eventsClass._resolve(0)).toEqual(false);
-            });
-        });
-    });
-});
diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/registry/registry.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/registry/registry.test.js
index fd814d0a68fd41a79daf74825595cbb402a6f752..a45deb1df23afc9263ad1476732ce58c912e6752 100644
--- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/registry/registry.test.js
+++ b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/registry/registry.test.js
@@ -38,13 +38,6 @@ define([
 
                 expect(type).toEqual('object');
             });
-            it('Check assigned value after used method', function () {
-                var elem = 'test',
-                    prop = 'magento';
-                
-                registry.set(elem, prop);
-                expect(registry.storage.data.get(elem)).toEqual(prop);
-            });
         });
         describe('"registry.get" method', function () {
             it('Check for defined', function () {
@@ -63,14 +56,6 @@ define([
 
                 expect(type).toBeFalsy();
             });
-            it('Check called callback with arguments', function () {
-                var elems = ['magento'],
-                    callback = function () {};
-
-                registry.events.wait = jasmine.createSpy();
-                registry.get(elems, callback);
-                expect(registry.events.wait).toHaveBeenCalledWith(elems, callback);
-            });
         });
         describe('"registry.remove" method', function () {
             it('Check for defined', function () {
@@ -89,13 +74,6 @@ define([
 
                 expect(type).toEqual('object');
             });
-            it('Check called registry.storage.remove with arguments', function () {
-                var elems = ['magento'];
-
-                registry.storage.remove = jasmine.createSpy();
-                registry.remove(elems);
-                expect(registry.storage.remove).toHaveBeenCalledWith(elems);
-            });
         });
         describe('"registry.has" method', function () {
             it('Check for defined', function () {
@@ -106,24 +84,11 @@ define([
 
                 expect(type).toEqual('function');
             });
-            it('Check returned value if registry.storage has property', function () {
-                var name = 'magento';
-
-                registry.storage.data.set(name, 'magentoValue');
-                expect(registry.has(name)).toEqual(true);
-            });
             it('Check returned value if registry.storage has not property', function () {
                 var name = 'magentoNonProperty';
 
                 expect(registry.has(name)).toEqual(false);
             });
-            it('Check called registry.storage.has with arguments', function () {
-                var elems = ['magento'];
-
-                registry.storage.has = jasmine.createSpy();
-                registry.has(elems);
-                expect(registry.storage.has).toHaveBeenCalledWith(elems);
-            });
         });
         describe('"registry.async" method', function () {
             it('Check for defined', function () {
@@ -149,22 +114,6 @@ define([
 
                 expect(type).toEqual('object');
             });
-            it('Check registry.storage for defined', function () {
-                registry.create();
-                expect(registry.storage).toBeDefined();
-            });
-            it('Check registry.storage type', function () {
-                registry.create();
-                expect(typeof registry.storage).toEqual('object');
-            });
-            it('Check registry.events for defined', function () {
-                registry.create();
-                expect(registry.events).toBeDefined();
-            });
-            it('Check registry.events type', function () {
-                registry.create();
-                expect(typeof registry.events).toEqual('object');
-            });
         });
     });
 });
diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/registry/storage.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/registry/storage.test.js
deleted file mode 100644
index a2e2fd3c1206b79b1da01ebba2f4cdb248a25ed7..0000000000000000000000000000000000000000
--- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/registry/storage.test.js
+++ /dev/null
@@ -1,122 +0,0 @@
-/**
- * Copyright © 2016 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
-
-/*eslint max-nested-callbacks: 0*/
-
-define([
-    'Magento_Ui/js/lib/registry/storage'
-], function (Storage) {
-    'use strict';
-
-    describe('Magento_Ui/js/lib/registry/storage', function () {
-        var storage = new Storage();
-        describe('"Storage constructor"', function () {
-            it('Check for defined', function () {
-                expect(storage).toBeDefined();
-            });
-            it('Check type', function () {
-                var type = typeof storage;
-
-                expect(type).toEqual('object');
-            });
-            it('Check storage.data for defined', function () {
-                var data = storage.data;
-
-                expect(typeof data).toEqual('object');
-            });
-        });
-        describe('"storage.get" method', function () {
-            it('Check for defined', function () {
-                expect(storage.hasOwnProperty('get')).toBeDefined();
-            });
-            it('Check type', function () {
-                var type = typeof storage.get;
-
-                expect(type).toEqual('function');
-            });
-            it('Check returned value if argument is array values', function () {
-                var elem = 'magento',
-                    value = 'magentoValue';
-
-                storage.data.set(elem, value);
-                expect(storage.get([elem])).toEqual([value]);
-            });
-            it('Check returned value if called withot arguments', function () {
-                expect(storage.get()).toEqual([]);
-            });
-        });
-        describe('"storage.set" method', function () {
-            it('Check for defined', function () {
-                expect(storage.hasOwnProperty('set')).toBeDefined();
-            });
-            it('Check type', function () {
-                var type = typeof storage.set;
-
-                expect(type).toEqual('function');
-            });
-            it('Check returned value for defined', function () {
-                expect(storage.set()).toBeDefined();
-            });
-            it('Check returned value type', function () {
-                var type = typeof storage.set();
-
-                expect(type).toEqual('object');
-            });
-            it('Check returned value if argument is "elem, value" ', function () {
-                var elem = 'magento',
-                    value = 'magentoValue';
-
-                storage.set(elem, value);
-                expect(storage.data.get(elem)).toEqual(value);
-            });
-        });
-        describe('"storage.remove" method', function () {
-            it('Check for defined', function () {
-                expect(storage.hasOwnProperty('remove')).toBeDefined();
-            });
-            it('Check type', function () {
-                var type = typeof storage.remove;
-
-                expect(type).toEqual('function');
-            });
-            it('Check returned value for defined', function () {
-                expect(storage.remove([])).toBeDefined();
-            });
-            it('Check returned value type', function () {
-                var type = typeof storage.remove([]);
-
-                expect(type).toEqual('object');
-            });
-            it('Check if called with argument "elem" ', function () {
-                var elem = 'magento',
-                    value = 'magentoValue';
-
-                storage.data.set(elem, value);
-                storage.remove([elem]);
-                expect(storage.data.get(elem)).not.toBeDefined();
-            });
-        });
-        describe('"storage.has" method', function () {
-            it('Check for defined', function () {
-                expect(storage.hasOwnProperty('has')).toBeDefined();
-            });
-            it('Check type', function () {
-                var type = typeof storage.has;
-
-                expect(type).toEqual('function');
-            });
-            it('Check returned value if data has element property', function () {
-                var elem = 'magento',
-                    value = 'magentoValue';
-
-                storage.data.set(elem, value);
-                expect(storage.has([elem])).toEqual(true);
-            });
-            it('Check returned value if data has not element property', function () {
-                expect(storage.has(['value'])).toEqual(false);
-            });
-        });
-    });
-});
diff --git a/dev/tests/js/jasmine/tests/lib/mage/gallery.test.js b/dev/tests/js/jasmine/tests/lib/mage/gallery.test.js
deleted file mode 100644
index 984bdf0cc3919ca35d55f82bd730aa129ea935e6..0000000000000000000000000000000000000000
--- a/dev/tests/js/jasmine/tests/lib/mage/gallery.test.js
+++ /dev/null
@@ -1,154 +0,0 @@
-/**
- * Copyright © 2016 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
-define([
-    'jquery',
-    'text!tests/assets/gallery/config.json',
-    'mage/gallery/gallery',
-    'magnifier/magnify'
-], function ($, config, gallery, magnifier) {
-
-    'use strict';
-
-    var body = $('body'),
-        galleryAPI,
-        conf = JSON.parse(config),
-        gallerySelector = '[data-gallery-role="gallery"]',
-        magnifierSelector = '[data-gallery-role="magnifier"]',
-        stageSelector = '[data-gallery-role="stage-shaft"]',
-        navSelector = '[data-gallery-role="nav-frame"]',
-        dotSelector = '[data-nav-type="dot"]',
-        navWrap = '[data-gallery-role="nav-wrap"]',
-        dataToUpdate = [
-            {
-                img: 'data:image/png;base64,' +
-                'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP4Xw8AAoABf5/NhYYAAAAASUVORK5CYII='
-            }, {
-                img: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAw' +
-                'CAAAAC0lEQVR42mP4Xw8AAoABf5/NhYYAAAAASUVORK5CYII='
-            }, {
-                img: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAw' +
-                'CAAAAC0lEQVR42mP4Xw8AAoABf5/NhYYAAAAASUVORK5CYII='
-            }, {
-                img: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAw' +
-                'CAAAAC0lEQVR42mP4Xw8AAoABf5/NhYYAAAAASUVORK5CYII='
-            }
-        ],
-        waitsFor = function (test, fn) {
-            if (test()) {
-                fn();
-            } else {
-                setTimeout(function () {
-                    waitsFor(test, fn);
-                }, 10);
-            }
-        };
-
-    gallery(magnifier(conf, body), body);
-
-    beforeEach(function () {
-        galleryAPI = $(gallerySelector).data('gallery');
-    });
-
-    describe('magnifier/magnify', function () {
-
-        if ('ontouchstart' in document.documentElement) {
-            it('magnifier is not initialized on mobile platforms', function () {
-                expect($(magnifierSelector).length).toBe(0);
-            });
-        } else {
-            it('magnifier is defined', function () {
-                expect($(gallerySelector).magnify).toBeDefined();
-                expect(typeof $(gallerySelector).magnify).toBe('function');
-                expect($(magnifierSelector).hasClass('hidden')).toBeTruthy();
-            });
-
-            it('magnifier is initialized on desktop platforms', function () {
-                expect($(magnifierSelector + ' img').attr('src')).toBe($(stageSelector + ' img').attr('src'));
-            });
-            it('magnifier appearing on event on desktop platforms', function () {
-                var ev = conf.magnifierOpts.eventType === 'click' ? 'click' : 'mouseover';
-                expect($($(magnifierSelector).children()[0]).hasClass('magnifier-large hidden')).toBeTruthy();
-                $(stageSelector + ' img').trigger(ev);
-                expect($($(magnifierSelector).children()[0]).hasClass('magnifier-large hidden')).toBeFalsy();
-                $(stageSelector + ' img').trigger('mouseleave');
-            });
-        }
-    });
-
-    describe('mage/gallery/gallery', function () {
-
-        it('gallery loaded', function () {
-            expect($(navSelector).length).toBe(conf.data.length);
-        });
-
-        it('show last', function () {
-            galleryAPI.last();
-            expect($(navSelector + ':eq(' + (conf.data.length - 1) + ')')
-                .attr('data-active') === 'true').toBeTruthy();
-        });
-
-        it('show first', function () {
-            galleryAPI.first();
-            expect($(navSelector + ':eq(0)').attr('data-active') === 'true').toBeTruthy();
-        });
-
-        it('show next', function () {
-            galleryAPI.next();
-            expect($(navSelector + ':eq(1)').attr('data-active') === 'true').toBeTruthy();
-        });
-
-        it('show previous', function () {
-            galleryAPI.prev();
-            expect($(navSelector + ':eq(0)').attr('data-active') === 'true').toBeTruthy();
-        });
-
-        it('show by number', function () {
-            galleryAPI.seek(3);
-            expect($(navSelector + ':eq(2)').attr('data-active') === 'true').toBeTruthy();
-        });
-
-        it('update options', function () {
-            expect($(navSelector).attr('data-nav-type') === 'thumb').toBeTruthy();
-            galleryAPI.updateOptions({
-                nav: 'dots'
-            });
-            expect($(dotSelector).length).toBe(conf.data.length);
-        });
-
-        it('update data', function () {
-            galleryAPI.updateData(dataToUpdate);
-            expect($(dotSelector).length).toBe(dataToUpdate.length);
-        });
-
-        it('breakpoints override configs', function () {
-            expect($('.fotorama__arr').css('display')).toBe('block');
-        });
-
-        it('fullscreen enter', function (done) {
-            expect($(navWrap).css('display') === 'block').toBeTruthy();
-            galleryAPI.fotorama.requestFullScreen();
-
-            waitsFor(function () {
-                return $(navWrap).css('display') !== 'block';
-            }, function () {
-                expect($(navWrap).css('display') === 'none').toBeTruthy();
-                done();
-            });
-        });
-
-        it('fullscreen exit', function (done) {
-            expect($(navWrap).css('display') === 'none').toBeTruthy();
-            galleryAPI.fotorama.cancelFullScreen();
-
-            waitsFor(function () {
-                return $(navWrap).css('display') !== 'none';
-            }, function () {
-                expect($(navWrap).css('display') === 'block').toBeTruthy();
-                done();
-            });
-        });
-
-    });
-});
diff --git a/package.json.sample b/package.json.sample
index 384aa88c65611a9e20892aade71488b31847ac5c..40169b3179052d98ad2c1a79baf48e376689f3c1 100644
--- a/package.json.sample
+++ b/package.json.sample
@@ -18,7 +18,7 @@
         "grunt-contrib-connect": "^0.9.0",
         "grunt-contrib-cssmin": "^0.10.0",
         "grunt-contrib-imagemin": "^0.9.2",
-        "grunt-contrib-jasmine": "^0.8.1",
+        "grunt-contrib-jasmine": "^1.0.0",
         "grunt-contrib-less": "^0.12.0",
         "grunt-contrib-watch": "^0.6.1",
         "grunt-eslint": "17.3.1",