diff --git a/spec/javascripts/.eslintrc b/spec/javascripts/.eslintrc
index 7792acffac285691fe088a9b5d5b51d430868ed0..dcbcd014dc3c2730c05f4e411268e0872d18ee12 100644
--- a/spec/javascripts/.eslintrc
+++ b/spec/javascripts/.eslintrc
@@ -1,15 +1,28 @@
 {
-  "plugins": ["jasmine"],
   "env": {
     "jasmine": true
   },
   "extends": "plugin:jasmine/recommended",
+  "globals": {
+    "appendLoadFixtures": false,
+    "appendLoadStyleFixtures": false,
+    "appendSetFixtures": false,
+    "appendSetStyleFixtures": false,
+    "getJSONFixture": false,
+    "loadFixtures": false,
+    "loadJSONFixtures": false,
+    "loadStyleFixtures": false,
+    "preloadFixtures": false,
+    "preloadStyleFixtures": false,
+    "readFixtures": false,
+    "sandbox": false,
+    "setFixtures": false,
+    "setStyleFixtures": false,
+    "spyOnEvent": false
+  },
+  "plugins": ["jasmine"],
   "rules": {
     "prefer-arrow-callback": 0,
     "func-names": 0
-  },
-  "globals": {
-    "fixture": false,
-    "spyOnEvent": false
   }
 }
diff --git a/spec/javascripts/abuse_reports_spec.js.es6 b/spec/javascripts/abuse_reports_spec.js.es6
index 49e562495655be3ed9eb968a63fa712beca6ec64..cf19aa050315a0b1e56983d5bad83673fae5a811 100644
--- a/spec/javascripts/abuse_reports_spec.js.es6
+++ b/spec/javascripts/abuse_reports_spec.js.es6
@@ -13,10 +13,10 @@
       (index, element) => element.innerText.indexOf(searchText) > -1,
     ).first();
 
-    fixture.preload(FIXTURE);
+    preloadFixtures(FIXTURE);
 
     beforeEach(function () {
-      fixture.load(FIXTURE);
+      loadFixtures(FIXTURE);
       this.abuseReports = new global.AbuseReports();
       messages = $('.abuse-reports .message');
     });
diff --git a/spec/javascripts/activities_spec.js.es6 b/spec/javascripts/activities_spec.js.es6
index f0138945637ff3b23ddaa67a5f6ab572a6022f45..b3617a45bd47207ffb67ea5acc3f552edee82e50 100644
--- a/spec/javascripts/activities_spec.js.es6
+++ b/spec/javascripts/activities_spec.js.es6
@@ -35,7 +35,7 @@
 
   describe('Activities', () => {
     beforeEach(() => {
-      fixture.load(fixtureTemplate);
+      loadFixtures(fixtureTemplate);
       new gl.Activities();
     });
 
diff --git a/spec/javascripts/awards_handler_spec.js b/spec/javascripts/awards_handler_spec.js
index 89201c8cb8b71c1de7ef5220910257405cbaa8a2..faba2837d419c07df28ccc5f6928bf9eda15ca3c 100644
--- a/spec/javascripts/awards_handler_spec.js
+++ b/spec/javascripts/awards_handler_spec.js
@@ -34,9 +34,9 @@
   };
 
   describe('AwardsHandler', function() {
-    fixture.preload('issues/open-issue.html.raw');
+    preloadFixtures('issues/open-issue.html.raw');
     beforeEach(function() {
-      fixture.load('issues/open-issue.html.raw');
+      loadFixtures('issues/open-issue.html.raw');
       awardsHandler = new AwardsHandler;
       spyOn(awardsHandler, 'postEmoji').and.callFake((function(_this) {
         return function(url, emoji, cb) {
diff --git a/spec/javascripts/behaviors/autosize_spec.js b/spec/javascripts/behaviors/autosize_spec.js
index b4573e53a4e01ec73acf6c8085acb68102c74e3d..e77d732a32a7a67d3246d191ab59cb9a150f3a92 100644
--- a/spec/javascripts/behaviors/autosize_spec.js
+++ b/spec/javascripts/behaviors/autosize_spec.js
@@ -6,7 +6,7 @@
   describe('Autosize behavior', function() {
     var load;
     beforeEach(function() {
-      return fixture.set('<textarea class="js-autosize" style="resize: vertical"></textarea>');
+      return setFixtures('<textarea class="js-autosize" style="resize: vertical"></textarea>');
     });
     it('does not overwrite the resize property', function() {
       load();
diff --git a/spec/javascripts/behaviors/quick_submit_spec.js b/spec/javascripts/behaviors/quick_submit_spec.js
index f4a977b9dea03ec9a38065d9157521ff4d068dbe..1a1f34cfdc08ee7b5162897e635c83d9379a7e0c 100644
--- a/spec/javascripts/behaviors/quick_submit_spec.js
+++ b/spec/javascripts/behaviors/quick_submit_spec.js
@@ -5,9 +5,9 @@
 (function() {
   describe('Quick Submit behavior', function() {
     var keydownEvent;
-    fixture.preload('static/behaviors/quick_submit.html.raw');
+    preloadFixtures('static/behaviors/quick_submit.html.raw');
     beforeEach(function() {
-      fixture.load('static/behaviors/quick_submit.html.raw');
+      loadFixtures('static/behaviors/quick_submit.html.raw');
       $('form').submit(function(e) {
         // Prevent a form submit from moving us off the testing page
         return e.preventDefault();
diff --git a/spec/javascripts/behaviors/requires_input_spec.js b/spec/javascripts/behaviors/requires_input_spec.js
index 8b21551bd1031cee5a7a5da39253d2a296e59778..1f62591c06d6e3f599726dc181ceef1dcaa15122 100644
--- a/spec/javascripts/behaviors/requires_input_spec.js
+++ b/spec/javascripts/behaviors/requires_input_spec.js
@@ -4,9 +4,9 @@
 
 (function() {
   describe('requiresInput', function() {
-    fixture.preload('static/behaviors/requires_input.html.raw');
+    preloadFixtures('static/behaviors/requires_input.html.raw');
     beforeEach(function() {
-      return fixture.load('static/behaviors/requires_input.html.raw');
+      return loadFixtures('static/behaviors/requires_input.html.raw');
     });
     it('disables submit when any field is required', function() {
       $('.js-requires-input').requiresInput();
diff --git a/spec/javascripts/bootstrap_linked_tabs_spec.js.es6 b/spec/javascripts/bootstrap_linked_tabs_spec.js.es6
index e5256520c247bda528ffcb4d47800b2e71318e8f..ea953d0f5a556b9aa5c76da61e868406196acc9a 100644
--- a/spec/javascripts/bootstrap_linked_tabs_spec.js.es6
+++ b/spec/javascripts/bootstrap_linked_tabs_spec.js.es6
@@ -2,10 +2,10 @@
 
 (() => {
   describe('Linked Tabs', () => {
-    fixture.preload('static/linked_tabs.html.raw');
+    preloadFixtures('static/linked_tabs.html.raw');
 
     beforeEach(() => {
-      fixture.load('static/linked_tabs.html.raw');
+      loadFixtures('static/linked_tabs.html.raw');
     });
 
     describe('when is initialized', () => {
diff --git a/spec/javascripts/build_spec.js.es6 b/spec/javascripts/build_spec.js.es6
index 3983cad4c137122cdaff5bd93b4aed2cbcfccbf5..0c556382980bb13b4307493b36a79be3003b0a6c 100644
--- a/spec/javascripts/build_spec.js.es6
+++ b/spec/javascripts/build_spec.js.es6
@@ -17,10 +17,10 @@ describe('Build', () => {
     offset: BUILD_TRACE.length, n_open_tags: 0, fg_color: null, bg_color: null, style_mask: 0,
   }));
 
-  fixture.preload('builds/build-with-artifacts.html.raw');
+  preloadFixtures('builds/build-with-artifacts.html.raw');
 
   beforeEach(() => {
-    fixture.load('builds/build-with-artifacts.html.raw');
+    loadFixtures('builds/build-with-artifacts.html.raw');
     spyOn($, 'ajax');
   });
 
diff --git a/spec/javascripts/dashboard_spec.js.es6 b/spec/javascripts/dashboard_spec.js.es6
index 76fe48785191dc291f8af6ddda929daa39e36b76..3f6b328348de46fb1ee3eff2407b6497448de1e7 100644
--- a/spec/javascripts/dashboard_spec.js.es6
+++ b/spec/javascripts/dashboard_spec.js.es6
@@ -17,9 +17,9 @@
       $(document).trigger('todo:toggle', newCount);
     }
 
-    fixture.preload(fixtureTemplate);
+    preloadFixtures(fixtureTemplate);
     beforeEach(() => {
-      fixture.load(fixtureTemplate);
+      loadFixtures(fixtureTemplate);
       new global.Sidebar();
     });
 
diff --git a/spec/javascripts/environments/environment_actions_spec.js.es6 b/spec/javascripts/environments/environment_actions_spec.js.es6
index c2ac352348390c5f29d97b055cf686d59463857e..056e4d41e93e56b6a8067fb601c39646bd445179 100644
--- a/spec/javascripts/environments/environment_actions_spec.js.es6
+++ b/spec/javascripts/environments/environment_actions_spec.js.es6
@@ -2,10 +2,10 @@
 //= require environments/components/environment_actions
 
 describe('Actions Component', () => {
-  fixture.preload('static/environments/element.html.raw');
+  preloadFixtures('static/environments/element.html.raw');
 
   beforeEach(() => {
-    fixture.load('static/environments/element.html.raw');
+    loadFixtures('static/environments/element.html.raw');
   });
 
   it('should render a dropdown with the provided actions', () => {
diff --git a/spec/javascripts/environments/environment_external_url_spec.js.es6 b/spec/javascripts/environments/environment_external_url_spec.js.es6
index d578a017d44956300a86cd5fe627d42ee8456fcd..950a5d53fad76021569336326ffe4fa601552ab8 100644
--- a/spec/javascripts/environments/environment_external_url_spec.js.es6
+++ b/spec/javascripts/environments/environment_external_url_spec.js.es6
@@ -2,9 +2,9 @@
 //= require environments/components/environment_external_url
 
 describe('External URL Component', () => {
-  fixture.preload('static/environments/element.html.raw');
+  preloadFixtures('static/environments/element.html.raw');
   beforeEach(() => {
-    fixture.load('static/environments/element.html.raw');
+    loadFixtures('static/environments/element.html.raw');
   });
 
   it('should link to the provided externalUrl prop', () => {
diff --git a/spec/javascripts/environments/environment_item_spec.js.es6 b/spec/javascripts/environments/environment_item_spec.js.es6
index 7b53152108f6d2fc95a69f967116259dac4d50ad..c178b9cc1ec17c4e33449e4b485d25f89cc551b8 100644
--- a/spec/javascripts/environments/environment_item_spec.js.es6
+++ b/spec/javascripts/environments/environment_item_spec.js.es6
@@ -3,9 +3,9 @@
 //= require environments/components/environment_item
 
 describe('Environment item', () => {
-  fixture.preload('static/environments/table.html.raw');
+  preloadFixtures('static/environments/table.html.raw');
   beforeEach(() => {
-    fixture.load('static/environments/table.html.raw');
+    loadFixtures('static/environments/table.html.raw');
   });
 
   describe('When item is folder', () => {
diff --git a/spec/javascripts/environments/environment_rollback_spec.js.es6 b/spec/javascripts/environments/environment_rollback_spec.js.es6
index bfa20d6f2e5f5031ee6fd3ee7eaa8eb7d47c7ee4..21241116e29f86cbb9d85c9bd7d60a7d0e29db1a 100644
--- a/spec/javascripts/environments/environment_rollback_spec.js.es6
+++ b/spec/javascripts/environments/environment_rollback_spec.js.es6
@@ -1,12 +1,12 @@
 //= require vue
 //= require environments/components/environment_rollback
 describe('Rollback Component', () => {
-  fixture.preload('static/environments/element.html.raw');
+  preloadFixtures('static/environments/element.html.raw');
 
   const retryURL = 'https://gitlab.com/retry';
 
   beforeEach(() => {
-    fixture.load('static/environments/element.html.raw');
+    loadFixtures('static/environments/element.html.raw');
   });
 
   it('Should link to the provided retryUrl', () => {
diff --git a/spec/javascripts/environments/environment_stop_spec.js.es6 b/spec/javascripts/environments/environment_stop_spec.js.es6
index c3c5f2cc4c866478899fd7f4b2f9ccf742515701..bb998a32f32ff31f8d2d1ca3a4edf41a9d150b70 100644
--- a/spec/javascripts/environments/environment_stop_spec.js.es6
+++ b/spec/javascripts/environments/environment_stop_spec.js.es6
@@ -1,13 +1,13 @@
 //= require vue
 //= require environments/components/environment_stop
 describe('Stop Component', () => {
-  fixture.preload('static/environments/element.html.raw');
+  preloadFixtures('static/environments/element.html.raw');
 
   let stopURL;
   let component;
 
   beforeEach(() => {
-    fixture.load('static/environments/element.html.raw');
+    loadFixtures('static/environments/element.html.raw');
 
     stopURL = '/stop';
     component = new window.gl.environmentsList.StopComponent({
diff --git a/spec/javascripts/extensions/jquery_spec.js b/spec/javascripts/extensions/jquery_spec.js
index 76309930f27861decf6fd0ca4d5fa8d6fb00dcf1..91846bb9143bd7074f35f9db0e22f8dc93a4f696 100644
--- a/spec/javascripts/extensions/jquery_spec.js
+++ b/spec/javascripts/extensions/jquery_spec.js
@@ -6,7 +6,7 @@
   describe('jQuery extensions', function() {
     describe('disable', function() {
       beforeEach(function() {
-        return fixture.set('<input type="text" />');
+        return setFixtures('<input type="text" />');
       });
       it('adds the disabled attribute', function() {
         var $input;
@@ -23,7 +23,7 @@
     });
     return describe('enable', function() {
       beforeEach(function() {
-        return fixture.set('<input type="text" disabled="disabled" class="disabled" />');
+        return setFixtures('<input type="text" disabled="disabled" class="disabled" />');
       });
       it('removes the disabled attribute', function() {
         var $input;
diff --git a/spec/javascripts/gl_dropdown_spec.js.es6 b/spec/javascripts/gl_dropdown_spec.js.es6
index 5f9359007ac5f758e462281b39a9602fd3024db7..ce96571bd52e28c0be3ff96e9d80e716f45bafa2 100644
--- a/spec/javascripts/gl_dropdown_spec.js.es6
+++ b/spec/javascripts/gl_dropdown_spec.js.es6
@@ -43,8 +43,7 @@
   }
 
   describe('Dropdown', function describeDropdown() {
-    fixture.preload('static/gl_dropdown.html.raw');
-    fixture.preload('projects.json');
+    preloadFixtures('static/gl_dropdown.html.raw');
 
     function initDropDown(hasRemote, isFilterable) {
       this.dropdownButtonElement = $('#js-project-dropdown', this.dropdownContainerElement).glDropdown({
@@ -61,10 +60,10 @@
     }
 
     beforeEach(() => {
-      fixture.load('static/gl_dropdown.html.raw');
+      loadFixtures('static/gl_dropdown.html.raw');
       this.dropdownContainerElement = $('.dropdown.inline');
       this.$dropdownMenuElement = $('.dropdown-menu', this.dropdownContainerElement);
-      this.projectsData = fixture.load('projects.json')[0];
+      this.projectsData = getJSONFixture('projects.json');
     });
 
     afterEach(() => {
diff --git a/spec/javascripts/gl_field_errors_spec.js.es6 b/spec/javascripts/gl_field_errors_spec.js.es6
index d314b23a7ed21678a5cfdb2b92f099997ba04d58..e5d934540af258e9c11ff86975aca48963cd4bf2 100644
--- a/spec/javascripts/gl_field_errors_spec.js.es6
+++ b/spec/javascripts/gl_field_errors_spec.js.es6
@@ -4,11 +4,11 @@
 //= require gl_field_errors
 
 ((global) => {
-  fixture.preload('static/gl_field_errors.html.raw');
+  preloadFixtures('static/gl_field_errors.html.raw');
 
   describe('GL Style Field Errors', function() {
     beforeEach(function() {
-      fixture.load('static/gl_field_errors.html.raw');
+      loadFixtures('static/gl_field_errors.html.raw');
       const $form = this.$form = $('form.gl-show-field-errors');
       this.fieldErrors = new global.GlFieldErrors($form);
     });
diff --git a/spec/javascripts/header_spec.js b/spec/javascripts/header_spec.js
index b413a3357f31b86b8181965bf555ded46042db8e..b5262afa1cfb4406b70338cc13bd8797cca8d256 100644
--- a/spec/javascripts/header_spec.js
+++ b/spec/javascripts/header_spec.js
@@ -17,9 +17,9 @@
       $(document).trigger('todo:toggle', newCount);
     }
 
-    fixture.preload(fixtureTemplate);
+    preloadFixtures(fixtureTemplate);
     beforeEach(function() {
-      fixture.load(fixtureTemplate);
+      loadFixtures(fixtureTemplate);
     });
 
     it('should update todos-pending-count after receiving the todo:toggle event', function() {
diff --git a/spec/javascripts/issuable_spec.js.es6 b/spec/javascripts/issuable_spec.js.es6
index 846a3907c3d633b0c623d704cf355c5fec416189..917a6267b9229e1ddd197c981aa946bcfadb7bb7 100644
--- a/spec/javascripts/issuable_spec.js.es6
+++ b/spec/javascripts/issuable_spec.js.es6
@@ -21,10 +21,10 @@
   }
 
   describe('Issuable', () => {
-    fixture.preload('static/issuable_filter.html.raw');
+    preloadFixtures('static/issuable_filter.html.raw');
 
     beforeEach(() => {
-      fixture.load('static/issuable_filter.html.raw');
+      loadFixtures('static/issuable_filter.html.raw');
       Issuable.init();
     });
 
@@ -37,7 +37,7 @@
 
       beforeEach(() => {
         $filtersForm = $('.js-filter-form');
-        fixture.load('static/issuable_filter.html.raw');
+        loadFixtures('static/issuable_filter.html.raw');
         resetForm($filtersForm);
       });
 
diff --git a/spec/javascripts/issue_spec.js b/spec/javascripts/issue_spec.js
index 421936a47860888c1c85e333b315f7d9854f8c9a..eb07421826c95e053eb4cbbd7e277da354f3c7d7 100644
--- a/spec/javascripts/issue_spec.js
+++ b/spec/javascripts/issue_spec.js
@@ -8,9 +8,9 @@
   var INVALID_URL = 'http://goesnowhere.nothing/whereami';
   var $boxClosed, $boxOpen, $btnClose, $btnReopen;
 
-  fixture.preload('issues/closed-issue.html.raw');
-  fixture.preload('issues/issue-with-task-list.html.raw');
-  fixture.preload('issues/open-issue.html.raw');
+  preloadFixtures('issues/closed-issue.html.raw');
+  preloadFixtures('issues/issue-with-task-list.html.raw');
+  preloadFixtures('issues/open-issue.html.raw');
 
   function expectErrorMessage() {
     var $flashMessage = $('div.flash-alert');
@@ -61,8 +61,8 @@
 
   describe('Issue', function() {
     describe('task lists', function() {
-      fixture.load('issues/issue-with-task-list.html.raw');
       beforeEach(function() {
+        loadFixtures('issues/issue-with-task-list.html.raw');
         this.issue = new Issue();
       });
 
@@ -86,7 +86,7 @@
 
   describe('close issue', function() {
     beforeEach(function() {
-      fixture.load('issues/open-issue.html.raw');
+      loadFixtures('issues/open-issue.html.raw');
       findElements();
       this.issue = new Issue();
 
@@ -140,7 +140,7 @@
 
   describe('reopen issue', function() {
     beforeEach(function() {
-      fixture.load('issues/closed-issue.html.raw');
+      loadFixtures('issues/closed-issue.html.raw');
       findElements();
       this.issue = new Issue();
 
diff --git a/spec/javascripts/labels_issue_sidebar_spec.js.es6 b/spec/javascripts/labels_issue_sidebar_spec.js.es6
index de788ef7027215a7b4aa5d3377d43dd8beea4f69..e3146559a4a44f1bf4f636091d8d8a3761ce98ba 100644
--- a/spec/javascripts/labels_issue_sidebar_spec.js.es6
+++ b/spec/javascripts/labels_issue_sidebar_spec.js.es6
@@ -17,10 +17,10 @@
 (() => {
   let saveLabelCount = 0;
   describe('Issue dropdown sidebar', () => {
-    fixture.preload('static/issue_sidebar_label.html.raw');
+    preloadFixtures('static/issue_sidebar_label.html.raw');
 
     beforeEach(() => {
-      fixture.load('static/issue_sidebar_label.html.raw');
+      loadFixtures('static/issue_sidebar_label.html.raw');
       new IssuableContext('{"id":1,"name":"Administrator","username":"root"}');
       new LabelsSelect();
 
diff --git a/spec/javascripts/line_highlighter_spec.js b/spec/javascripts/line_highlighter_spec.js
index 15f2c0e6ed4c13c25c535da5c92c954b73861d33..31f516b41bfc874f7d19c2dc006d405b1aba67d2 100644
--- a/spec/javascripts/line_highlighter_spec.js
+++ b/spec/javascripts/line_highlighter_spec.js
@@ -6,7 +6,7 @@
 (function() {
   describe('LineHighlighter', function() {
     var clickLine;
-    fixture.preload('static/line_highlighter.html.raw');
+    preloadFixtures('static/line_highlighter.html.raw');
     clickLine = function(number, eventData) {
       var e;
       if (eventData == null) {
@@ -20,7 +20,7 @@
       }
     };
     beforeEach(function() {
-      fixture.load('static/line_highlighter.html.raw');
+      loadFixtures('static/line_highlighter.html.raw');
       this["class"] = new LineHighlighter();
       this.css = this["class"].highlightClass;
       return this.spies = {
diff --git a/spec/javascripts/merge_request_spec.js b/spec/javascripts/merge_request_spec.js
index 68afb4af3c1368033b6fc1dd3e643580170fe98b..9b232617fe53abb9467f38697ea3362f617fb122 100644
--- a/spec/javascripts/merge_request_spec.js
+++ b/spec/javascripts/merge_request_spec.js
@@ -6,9 +6,9 @@
 (function() {
   describe('MergeRequest', function() {
     return describe('task lists', function() {
-      fixture.preload('static/merge_requests_show.html.raw');
+      preloadFixtures('static/merge_requests_show.html.raw');
       beforeEach(function() {
-        fixture.load('static/merge_requests_show.html.raw');
+        loadFixtures('static/merge_requests_show.html.raw');
         return this.merge = new MergeRequest();
       });
       it('modifies the Markdown field', function() {
diff --git a/spec/javascripts/merge_request_tabs_spec.js b/spec/javascripts/merge_request_tabs_spec.js
index 1104f123b25b8ec1fa7eebab198f198196c29d25..98201fb98ed5afd4461d04cd810507b41593e0b1 100644
--- a/spec/javascripts/merge_request_tabs_spec.js
+++ b/spec/javascripts/merge_request_tabs_spec.js
@@ -16,7 +16,7 @@
       };
       $.extend(stubLocation, defaults, stubs || {});
     };
-    fixture.preload('static/merge_request_tabs.html.raw');
+    preloadFixtures('static/merge_request_tabs.html.raw');
 
     beforeEach(function () {
       this.class = new gl.MergeRequestTabs({ stubLocation: stubLocation });
@@ -30,7 +30,7 @@
     describe('#activateTab', function () {
       beforeEach(function () {
         spyOn($, 'ajax').and.callFake(function () {});
-        fixture.load('static/merge_request_tabs.html.raw');
+        loadFixtures('static/merge_request_tabs.html.raw');
         this.subject = this.class.activateTab;
       });
       it('shows the first tab when action is show', function () {
diff --git a/spec/javascripts/mini_pipeline_graph_dropdown_spec.js.es6 b/spec/javascripts/mini_pipeline_graph_dropdown_spec.js.es6
index 0cbfce8fbab9ea0a49b45ded052222ee4213d44b..a1c2fe3df374e9cad2a71df9bd7fb29ffca55707 100644
--- a/spec/javascripts/mini_pipeline_graph_dropdown_spec.js.es6
+++ b/spec/javascripts/mini_pipeline_graph_dropdown_spec.js.es6
@@ -5,10 +5,10 @@
 
 (() => {
   describe('Mini Pipeline Graph Dropdown', () => {
-    fixture.preload('static/mini_dropdown_graph.html.raw');
+    preloadFixtures('static/mini_dropdown_graph.html.raw');
 
     beforeEach(() => {
-      fixture.load('static/mini_dropdown_graph.html.raw');
+      loadFixtures('static/mini_dropdown_graph.html.raw');
     });
 
     describe('When is initialized', () => {
diff --git a/spec/javascripts/new_branch_spec.js b/spec/javascripts/new_branch_spec.js
index ba2c6f419e9ac79bf846700ae07a4fcc5c1a38dd..e0dc549a9f4eaa306d88a65becf72171598ca907 100644
--- a/spec/javascripts/new_branch_spec.js
+++ b/spec/javascripts/new_branch_spec.js
@@ -8,7 +8,7 @@
   describe('Branch', function() {
     return describe('create a new branch', function() {
       var expectToHaveError, fillNameWith;
-      fixture.preload('static/new_branch.html.raw');
+      preloadFixtures('static/new_branch.html.raw');
       fillNameWith = function(value) {
         return $('.js-branch-name').val(value).trigger('blur');
       };
@@ -16,7 +16,7 @@
         return expect($('.js-branch-name-error span').text()).toEqual(error);
       };
       beforeEach(function() {
-        fixture.load('static/new_branch.html.raw');
+        loadFixtures('static/new_branch.html.raw');
         $('form').on('submit', function(e) {
           return e.preventDefault();
         });
diff --git a/spec/javascripts/notes_spec.js b/spec/javascripts/notes_spec.js
index 5ea50ce43f781bfe2e7cbf0307c94b3443564c03..f0f71fe6ca830c6bc22d4b3d3619354094ce286c 100644
--- a/spec/javascripts/notes_spec.js
+++ b/spec/javascripts/notes_spec.js
@@ -13,10 +13,10 @@
 
   describe('Notes', function() {
     var commentsTemplate = 'issues/issue_with_comment.html.raw';
-    fixture.preload(commentsTemplate);
+    preloadFixtures(commentsTemplate);
 
     beforeEach(function () {
-      fixture.load(commentsTemplate);
+      loadFixtures(commentsTemplate);
       gl.utils.disableButtonIfEmptyField = _.noop;
       window.project_uploads_path = 'http://test.host/uploads';
     });
diff --git a/spec/javascripts/pipelines_spec.js.es6 b/spec/javascripts/pipelines_spec.js.es6
index 27b9c4a2e28ed2eee9589527520f22917dd6ab43..f0f9ad7430d5ed5b492807539ffad030b2b4f4e3 100644
--- a/spec/javascripts/pipelines_spec.js.es6
+++ b/spec/javascripts/pipelines_spec.js.es6
@@ -2,10 +2,10 @@
 
 (() => {
   describe('Pipelines', () => {
-    fixture.preload('static/pipeline_graph.html.raw');
+    preloadFixtures('static/pipeline_graph.html.raw');
 
     beforeEach(() => {
-      fixture.load('static/pipeline_graph.html.raw');
+      loadFixtures('static/pipeline_graph.html.raw');
     });
 
     it('should be defined', () => {
diff --git a/spec/javascripts/project_title_spec.js b/spec/javascripts/project_title_spec.js
index 677094f2c9d6e484278334834653b808e75d16aa..27b071f266d4d8e2b66b2cf0071fb3475193d9cd 100644
--- a/spec/javascripts/project_title_spec.js
+++ b/spec/javascripts/project_title_spec.js
@@ -16,10 +16,9 @@
   window.gon.api_version = 'v3';
 
   describe('Project Title', function() {
-    fixture.preload('static/project_title.html.raw');
-    fixture.preload('projects.json');
+    preloadFixtures('static/project_title.html.raw');
     beforeEach(function() {
-      fixture.load('static/project_title.html.raw');
+      loadFixtures('static/project_title.html.raw');
       return this.project = new Project();
     });
     return describe('project list', function() {
@@ -34,7 +33,7 @@
 
       beforeEach((function(_this) {
         return function() {
-          _this.projects_data = fixture.load('projects.json')[0];
+          _this.projects_data = getJSONFixture('projects.json');
           return spyOn(jQuery, 'ajax').and.callFake(fakeAjaxResponse.bind(_this));
         };
       })(this));
diff --git a/spec/javascripts/right_sidebar_spec.js b/spec/javascripts/right_sidebar_spec.js
index a083dbf033a217cba784f95d114e6da4a93729ee..b2ee0ce5963c5ffa9def022e96c2353e6793bee7 100644
--- a/spec/javascripts/right_sidebar_spec.js
+++ b/spec/javascripts/right_sidebar_spec.js
@@ -36,9 +36,9 @@
 
   describe('RightSidebar', function() {
     var fixtureName = 'issues/open-issue.html.raw';
-    fixture.preload(fixtureName);
+    preloadFixtures(fixtureName);
     beforeEach(function() {
-      fixture.load(fixtureName);
+      loadFixtures(fixtureName);
       this.sidebar = new Sidebar;
       $aside = $('.right-sidebar');
       $page = $('.page-with-sidebar');
@@ -67,7 +67,7 @@
     it('should broadcast todo:toggle event when add todo clicked', function() {
       spyOn(jQuery, 'ajax').and.callFake(function() {
         var d = $.Deferred();
-        var response = fixture.load('todos.json');
+        var response = getJSONFixture('todos.json');
         d.resolve(response);
         return d.promise();
       });
diff --git a/spec/javascripts/search_autocomplete_spec.js b/spec/javascripts/search_autocomplete_spec.js
index b6e7815c6cc8e1c879c2c5a57c9e0be49e78edf5..e13c4ad772cc40d0e33f9d91e163368bbcd1c0ce 100644
--- a/spec/javascripts/search_autocomplete_spec.js
+++ b/spec/javascripts/search_autocomplete_spec.js
@@ -112,9 +112,9 @@
   };
 
   describe('Search autocomplete dropdown', function() {
-    fixture.preload('static/search_autocomplete.html.raw');
+    preloadFixtures('static/search_autocomplete.html.raw');
     beforeEach(function() {
-      fixture.load('static/search_autocomplete.html.raw');
+      loadFixtures('static/search_autocomplete.html.raw');
       return widget = new gl.SearchAutocomplete;
     });
     it('should show Dashboard specific dropdown menu', function() {
diff --git a/spec/javascripts/shortcuts_issuable_spec.js b/spec/javascripts/shortcuts_issuable_spec.js
index 7bc898aed5daaae3f2db4a0992cf85ec7a75c1d8..ae5d639ad9c9cf2735fb2a3c23ddac83da40c3c8 100644
--- a/spec/javascripts/shortcuts_issuable_spec.js
+++ b/spec/javascripts/shortcuts_issuable_spec.js
@@ -6,9 +6,9 @@
 (function() {
   describe('ShortcutsIssuable', function() {
     var fixtureName = 'issues/open-issue.html.raw';
-    fixture.preload(fixtureName);
+    preloadFixtures(fixtureName);
     beforeEach(function() {
-      fixture.load(fixtureName);
+      loadFixtures(fixtureName);
       document.querySelector('.js-new-note-form').classList.add('js-main-target-form');
       return this.shortcut = new ShortcutsIssuable();
     });
diff --git a/spec/javascripts/signin_tabs_memoizer_spec.js.es6 b/spec/javascripts/signin_tabs_memoizer_spec.js.es6
index 416a5b1aafb4bdfac3ccdeab978e889feb5b36f8..c274b9c45f448f29111a56a43603f9104f886f1d 100644
--- a/spec/javascripts/signin_tabs_memoizer_spec.js.es6
+++ b/spec/javascripts/signin_tabs_memoizer_spec.js.es6
@@ -15,10 +15,10 @@
       return memo;
     }
 
-    fixture.preload(fixtureTemplate);
+    preloadFixtures(fixtureTemplate);
 
     beforeEach(() => {
-      fixture.load(fixtureTemplate);
+      loadFixtures(fixtureTemplate);
     });
 
     it('does nothing if no tab was previously selected', () => {
diff --git a/spec/javascripts/smart_interval_spec.js.es6 b/spec/javascripts/smart_interval_spec.js.es6
index 1b7ca97cde48c6e071e012c5b40a0e76f3465c76..39d236986b982ae194843be373e927a16e687087 100644
--- a/spec/javascripts/smart_interval_spec.js.es6
+++ b/spec/javascripts/smart_interval_spec.js.es6
@@ -103,7 +103,7 @@
     describe('DOM Events', function () {
       beforeEach(function () {
         // This ensures DOM and DOM events are initialized for these specs.
-        fixture.set('<div></div>');
+        setFixtures('<div></div>');
 
         this.smartInterval = createDefaultSmartInterval();
       });
diff --git a/spec/javascripts/spec_helper.js b/spec/javascripts/spec_helper.js
index 831dfada95224abb52880d14d150a352e50ff915..f8e3aca29fa5269614e5d704c030890d16806961 100644
--- a/spec/javascripts/spec_helper.js
+++ b/spec/javascripts/spec_helper.js
@@ -37,12 +37,12 @@
 // file as a manifest.
 // For more information: http://github.com/modeset/teaspoon
 
-(function() {
-
-
-}).call(this);
+// set our fixtures path
+jasmine.getFixtures().fixturesPath = '/teaspoon/fixtures';
+jasmine.getJSONFixtures().fixturesPath = '/teaspoon/fixtures';
 
 // defined in ActionDispatch::TestRequest
 // see https://github.com/rails/rails/blob/v4.2.7.1/actionpack/lib/action_dispatch/testing/test_request.rb#L7
 window.gl = window.gl || {};
-gl.TEST_HOST = 'http://test.host';
+window.gl.TEST_HOST = 'http://test.host';
+window.gon = window.gon || {};
diff --git a/spec/javascripts/syntax_highlight_spec.js b/spec/javascripts/syntax_highlight_spec.js
index ac411f6c3060801fbd6efbf92886845c46304d69..5984ce8ffd4e1be190e049b997a69ca23b99ee44 100644
--- a/spec/javascripts/syntax_highlight_spec.js
+++ b/spec/javascripts/syntax_highlight_spec.js
@@ -13,7 +13,7 @@
     };
     describe('on a js-syntax-highlight element', function() {
       beforeEach(function() {
-        return fixture.set('<div class="js-syntax-highlight"></div>');
+        return setFixtures('<div class="js-syntax-highlight"></div>');
       });
       return it('applies syntax highlighting', function() {
         stubUserColorScheme('monokai');
@@ -23,7 +23,7 @@
     });
     return describe('on a parent element', function() {
       beforeEach(function() {
-        return fixture.set("<div class=\"parent\">\n  <div class=\"js-syntax-highlight\"></div>\n  <div class=\"foo\"></div>\n  <div class=\"js-syntax-highlight\"></div>\n</div>");
+        return setFixtures("<div class=\"parent\">\n  <div class=\"js-syntax-highlight\"></div>\n  <div class=\"foo\"></div>\n  <div class=\"js-syntax-highlight\"></div>\n</div>");
       });
       it('applies highlighting to all applicable children', function() {
         stubUserColorScheme('monokai');
@@ -33,7 +33,7 @@
       });
       return it('prevents an infinite loop when no matches exist', function() {
         var highlight;
-        fixture.set('<div></div>');
+        setFixtures('<div></div>');
         highlight = function() {
           return $('div').syntaxHighlight();
         };
diff --git a/spec/javascripts/u2f/authenticate_spec.js b/spec/javascripts/u2f/authenticate_spec.js
index f6399b2286572f90c98056ec15a6c7c267bf0e21..dc2f49679853502412c1346c3b677d9eb703bb9a 100644
--- a/spec/javascripts/u2f/authenticate_spec.js
+++ b/spec/javascripts/u2f/authenticate_spec.js
@@ -10,10 +10,10 @@
 
 (function() {
   describe('U2FAuthenticate', function() {
-    fixture.preload('u2f/authenticate.html.raw');
+    preloadFixtures('u2f/authenticate.html.raw');
 
     beforeEach(function() {
-      fixture.load('u2f/authenticate.html.raw');
+      loadFixtures('u2f/authenticate.html.raw');
       this.u2fDevice = new MockU2FDevice;
       this.container = $("#js-authenticate-u2f");
       this.component = new window.gl.U2FAuthenticate(
diff --git a/spec/javascripts/u2f/register_spec.js b/spec/javascripts/u2f/register_spec.js
index 7eda2ac4c249bbf703a861464fe4a541d513a9d3..ab4c5edd044b4fd9baa185c43c8df76f37a62af9 100644
--- a/spec/javascripts/u2f/register_spec.js
+++ b/spec/javascripts/u2f/register_spec.js
@@ -10,10 +10,10 @@
 
 (function() {
   describe('U2FRegister', function() {
-    fixture.preload('u2f/register.html.raw');
+    preloadFixtures('u2f/register.html.raw');
 
     beforeEach(function() {
-      fixture.load('u2f/register.html.raw');
+      loadFixtures('u2f/register.html.raw');
       this.u2fDevice = new MockU2FDevice;
       this.container = $("#js-register-u2f");
       this.component = new U2FRegister(this.container, $("#js-register-u2f-templates"), {}, "token");
diff --git a/spec/javascripts/vue_common_components/commit_spec.js.es6 b/spec/javascripts/vue_common_components/commit_spec.js.es6
index 26dfdb94aae490a2d6ba17d4e62b1b636270eb75..d6c6f786fb16b9ccacdd52b8deed51a631ce8ad2 100644
--- a/spec/javascripts/vue_common_components/commit_spec.js.es6
+++ b/spec/javascripts/vue_common_components/commit_spec.js.es6
@@ -5,7 +5,7 @@ describe('Commit component', () => {
   let component;
 
   it('should render a code-fork icon if it does not represent a tag', () => {
-    fixture.set('<div class="test-commit-container"></div>');
+    setFixtures('<div class="test-commit-container"></div>');
     component = new window.gl.CommitComponent({
       el: document.querySelector('.test-commit-container'),
       propsData: {
@@ -30,7 +30,7 @@ describe('Commit component', () => {
 
   describe('Given all the props', () => {
     beforeEach(() => {
-      fixture.set('<div class="test-commit-container"></div>');
+      setFixtures('<div class="test-commit-container"></div>');
 
       props = {
         tag: true,
@@ -105,7 +105,7 @@ describe('Commit component', () => {
 
   describe('When commit title is not provided', () => {
     it('should render default message', () => {
-      fixture.set('<div class="test-commit-container"></div>');
+      setFixtures('<div class="test-commit-container"></div>');
       props = {
         tag: false,
         commitRef: {
diff --git a/spec/javascripts/zen_mode_spec.js b/spec/javascripts/zen_mode_spec.js
index d80ce5a7f7e3a546cb6213027923d13db5fd5424..64ccfdc9f187126ab536036e52069fefe25e05dc 100644
--- a/spec/javascripts/zen_mode_spec.js
+++ b/spec/javascripts/zen_mode_spec.js
@@ -10,9 +10,9 @@
 
   describe('ZenMode', function() {
     var fixtureName = 'issues/open-issue.html.raw';
-    fixture.preload(fixtureName);
+    preloadFixtures(fixtureName);
     beforeEach(function() {
-      fixture.load(fixtureName);
+      loadFixtures(fixtureName);
       spyOn(Dropzone, 'forElement').and.callFake(function() {
         return {
           enable: function() {