summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitlab-ci.yml12
-rw-r--r--config/karma.config.js27
-rw-r--r--config/webpack.config.js7
-rw-r--r--lib/tasks/gitlab/test.rake2
-rw-r--r--lib/tasks/test.rake2
-rw-r--r--package.json10
-rw-r--r--spec/javascripts/abuse_reports_spec.js.es65
-rw-r--r--spec/javascripts/activities_spec.js.es69
-rw-r--r--spec/javascripts/awards_handler_spec.js8
-rw-r--r--spec/javascripts/behaviors/autosize_spec.js2
-rw-r--r--spec/javascripts/behaviors/quick_submit_spec.js3
-rw-r--r--spec/javascripts/behaviors/requires_input_spec.js3
-rw-r--r--spec/javascripts/boards/boards_store_spec.js.es625
-rw-r--r--spec/javascripts/boards/issue_spec.js.es625
-rw-r--r--spec/javascripts/boards/list_spec.js.es625
-rw-r--r--spec/javascripts/bootstrap_linked_tabs_spec.js.es63
-rw-r--r--spec/javascripts/build_spec.js.es611
-rw-r--r--spec/javascripts/dashboard_spec.js.es68
-rw-r--r--spec/javascripts/datetime_utility_spec.js.es62
-rw-r--r--spec/javascripts/diff_comments_store_spec.js.es67
-rw-r--r--spec/javascripts/environments/environment_actions_spec.js.es65
-rw-r--r--spec/javascripts/environments/environment_external_url_spec.js.es65
-rw-r--r--spec/javascripts/environments/environment_item_spec.js.es67
-rw-r--r--spec/javascripts/environments/environment_rollback_spec.js.es66
-rw-r--r--spec/javascripts/environments/environment_stop_spec.js.es66
-rw-r--r--spec/javascripts/environments/environments_store_spec.js.es66
-rw-r--r--spec/javascripts/environments/mock_data.js.es61
-rw-r--r--spec/javascripts/extensions/array_spec.js.es62
-rw-r--r--spec/javascripts/extensions/element_spec.js.es62
-rw-r--r--spec/javascripts/extensions/jquery_spec.js2
-rw-r--r--spec/javascripts/extensions/object_spec.js.es62
-rw-r--r--spec/javascripts/gl_dropdown_spec.js.es610
-rw-r--r--spec/javascripts/gl_field_errors_spec.js.es64
-rw-r--r--spec/javascripts/graphs/stat_graph_contributors_graph_spec.js2
-rw-r--r--spec/javascripts/graphs/stat_graph_contributors_util_spec.js2
-rw-r--r--spec/javascripts/graphs/stat_graph_spec.js2
-rw-r--r--spec/javascripts/header_spec.js6
-rw-r--r--spec/javascripts/issuable_spec.js.es64
-rw-r--r--spec/javascripts/issue_spec.js5
-rw-r--r--spec/javascripts/labels_issue_sidebar_spec.js.es621
-rw-r--r--spec/javascripts/lib/utils/common_utils_spec.js.es62
-rw-r--r--spec/javascripts/line_highlighter_spec.js3
-rw-r--r--spec/javascripts/merge_request_spec.js3
-rw-r--r--spec/javascripts/merge_request_tabs_spec.js9
-rw-r--r--spec/javascripts/merge_request_widget_spec.js4
-rw-r--r--spec/javascripts/mini_pipeline_graph_dropdown_spec.js.es64
-rw-r--r--spec/javascripts/new_branch_spec.js5
-rw-r--r--spec/javascripts/notes_spec.js9
-rw-r--r--spec/javascripts/pipelines_spec.js.es62
-rw-r--r--spec/javascripts/pretty_time_spec.js.es62
-rw-r--r--spec/javascripts/project_title_spec.js16
-rw-r--r--spec/javascripts/right_sidebar_spec.js9
-rw-r--r--spec/javascripts/search_autocomplete_spec.js17
-rw-r--r--spec/javascripts/shortcuts_issuable_spec.js3
-rw-r--r--spec/javascripts/signin_tabs_memoizer_spec.js.es63
-rw-r--r--spec/javascripts/smart_interval_spec.js.es64
-rw-r--r--spec/javascripts/spec_helper.js46
-rw-r--r--spec/javascripts/subbable_resource_spec.js.es67
-rw-r--r--spec/javascripts/syntax_highlight_spec.js3
-rw-r--r--spec/javascripts/u2f/authenticate_spec.js11
-rw-r--r--spec/javascripts/u2f/register_spec.js11
-rw-r--r--spec/javascripts/vue_common_components/commit_spec.js.es63
-rw-r--r--spec/javascripts/zen_mode_spec.js3
-rw-r--r--vendor/assets/javascripts/jquery.turbolinks.js21
64 files changed, 260 insertions, 236 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 2ec9dfd2165..6e727333929 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -291,7 +291,7 @@ rake db:seed_fu:
paths:
- log/development.log
-teaspoon:
+karma:
cache:
paths:
- vendor/ruby
@@ -300,9 +300,9 @@ teaspoon:
<<: *use-db
<<: *dedicated-runner
script:
- - npm install
- npm link istanbul
- - rake teaspoon
+ - rake webpack:compile
+ - npm run karma-start
artifacts:
name: coverage-javascript
expire_in: 31d
@@ -381,8 +381,6 @@ lint:javascript:
- node_modules/
stage: test
image: "node:7.1"
- before_script:
- - npm install
script:
- npm --silent run eslint
@@ -393,8 +391,6 @@ lint:javascript:report:
- node_modules/
stage: post-test
image: "node:7.1"
- before_script:
- - npm install
script:
- find app/ spec/ -name '*.js' -or -name '*.js.es6' -exec sed --in-place 's|/\* eslint-disable .*\*/||' {} \; # run report over all files
- npm --silent run eslint-report || true # ignore exit code
@@ -444,7 +440,7 @@ pages:
<<: *dedicated-runner
dependencies:
- coverage
- - teaspoon
+ - karma
- lint:javascript:report
script:
- mv public/ .public/
diff --git a/config/karma.config.js b/config/karma.config.js
new file mode 100644
index 00000000000..478ef082547
--- /dev/null
+++ b/config/karma.config.js
@@ -0,0 +1,27 @@
+var path = require('path');
+var webpackConfig = require('./webpack.config.js');
+var ROOT_PATH = path.resolve(__dirname, '..');
+
+// Karma configuration
+module.exports = function(config) {
+ config.set({
+ basePath: ROOT_PATH,
+ frameworks: ['jquery-2.1.0', 'jasmine'],
+ files: [
+ 'spec/javascripts/*_spec.js',
+ 'spec/javascripts/*_spec.js.es6',
+ { pattern: 'spec/javascripts/fixtures/**/*.html', included: false, served: true },
+ { pattern: 'spec/javascripts/fixtures/**/*.json', included: false, served: true },
+ ],
+ preprocessors: {
+ 'spec/javascripts/*_spec.js': ['webpack'],
+ 'spec/javascripts/*_spec.js.es6': ['webpack'],
+ 'app/assets/javascripts/**/*.js': ['webpack'],
+ 'app/assets/javascripts/**/*.js.es6': ['webpack'],
+ },
+
+ webpack: webpackConfig,
+
+ webpackMiddleware: { stats: 'errors-only' },
+ });
+};
diff --git a/config/webpack.config.js b/config/webpack.config.js
index da2a19838e4..5cba995888a 100644
--- a/config/webpack.config.js
+++ b/config/webpack.config.js
@@ -58,7 +58,7 @@ var config = {
{
test: /\.(js|es6)$/,
loader: 'imports-loader',
- query: 'this=>window'
+ query: '$=jquery,jQuery=jquery,this=>window'
},
{
test: /\.json$/,
@@ -87,7 +87,10 @@ var config = {
'vendor': path.join(ROOT_PATH, 'vendor/assets/javascripts'),
'vue$': 'vue/dist/vue.js',
'vue-resource$': 'vue-resource/dist/vue-resource.js'
- }
+ },
+ root: [
+ path.join(ROOT_PATH, 'app/assets/javascripts'),
+ ],
}
}
diff --git a/lib/tasks/gitlab/test.rake b/lib/tasks/gitlab/test.rake
index 4d4e746503a..ec7aec1621c 100644
--- a/lib/tasks/gitlab/test.rake
+++ b/lib/tasks/gitlab/test.rake
@@ -6,7 +6,7 @@ namespace :gitlab do
%W(rake rubocop),
%W(rake spinach),
%W(rake spec),
- %W(rake teaspoon)
+ %W(npm run karma-start)
]
cmds.each do |cmd|
diff --git a/lib/tasks/test.rake b/lib/tasks/test.rake
index d3dcbd2c29b..83f53e5454b 100644
--- a/lib/tasks/test.rake
+++ b/lib/tasks/test.rake
@@ -7,5 +7,5 @@ end
unless Rails.env.production?
desc "GitLab | Run all tests on CI with simplecov"
- task test_ci: [:rubocop, :brakeman, :teaspoon, :spinach, :spec]
+ task test_ci: [:rubocop, :brakeman, :'karma-start', :spinach, :spec]
end
diff --git a/package.json b/package.json
index 97a98ad7cfc..ec012e9c3bd 100644
--- a/package.json
+++ b/package.json
@@ -4,7 +4,8 @@
"dev-server": "node_modules/.bin/webpack-dev-server --config config/webpack.config.js",
"eslint": "eslint --max-warnings 0 --ext .js,.js.es6 .",
"eslint-fix": "npm run eslint -- --fix",
- "eslint-report": "npm run eslint -- --format html --output-file ./eslint-report.html"
+ "eslint-report": "npm run eslint -- --format html --output-file ./eslint-report.html",
+ "karma-start": "karma start config/karma.config.js"
},
"dependencies": {
"babel": "^5.8.38",
@@ -35,6 +36,11 @@
"eslint-plugin-import": "^2.2.0",
"eslint-plugin-jasmine": "^2.1.0",
"istanbul": "^0.4.5",
- "karma": "^1.3.0"
+ "jasmine-core": "^2.5.2",
+ "jasmine-jquery": "^2.1.1",
+ "karma": "^1.3.0",
+ "karma-jasmine": "^1.1.0",
+ "karma-jquery": "^0.1.0",
+ "karma-webpack": "^1.8.0"
}
}
diff --git a/spec/javascripts/abuse_reports_spec.js.es6 b/spec/javascripts/abuse_reports_spec.js.es6
index cf19aa05031..dadee40f9b9 100644
--- a/spec/javascripts/abuse_reports_spec.js.es6
+++ b/spec/javascripts/abuse_reports_spec.js.es6
@@ -1,5 +1,6 @@
-/*= require lib/utils/text_utility */
-/*= require abuse_reports */
+require('./spec_helper');
+require('lib/utils/text_utility');
+require('abuse_reports');
((global) => {
describe('Abuse Reports', () => {
diff --git a/spec/javascripts/activities_spec.js.es6 b/spec/javascripts/activities_spec.js.es6
index b3617a45bd4..61fabd37170 100644
--- a/spec/javascripts/activities_spec.js.es6
+++ b/spec/javascripts/activities_spec.js.es6
@@ -1,9 +1,10 @@
/* eslint-disable no-unused-expressions, comma-spacing, prefer-const, no-prototype-builtins, semi, no-new, keyword-spacing, no-plusplus, no-shadow, max-len */
-/*= require js.cookie.js */
-/*= require jquery.endless-scroll.js */
-/*= require pager */
-/*= require activities */
+require('./spec_helper');
+require('vendor/js.cookie.js');
+require('vendor/jquery.endless-scroll.js');
+require('pager');
+require('activities');
(() => {
window.gon || (window.gon = {});
diff --git a/spec/javascripts/awards_handler_spec.js b/spec/javascripts/awards_handler_spec.js
index faba2837d41..88757e5c236 100644
--- a/spec/javascripts/awards_handler_spec.js
+++ b/spec/javascripts/awards_handler_spec.js
@@ -1,10 +1,10 @@
/* eslint-disable space-before-function-paren, no-var, one-var, one-var-declaration-per-line, no-unused-expressions, comma-dangle, new-parens, no-unused-vars, quotes, jasmine/no-spec-dupes, prefer-template, padded-blocks, max-len */
/* global AwardsHandler */
-/*= require awards_handler */
-/*= require jquery */
-/*= require js.cookie */
-/*= require ./fixtures/emoji_menu */
+require('./spec_helper');
+require('awards_handler');
+require('vendor/js.cookie');
+require('./fixtures/emoji_menu');
(function() {
var awardsHandler, lazyAssert, urlRoot;
diff --git a/spec/javascripts/behaviors/autosize_spec.js b/spec/javascripts/behaviors/autosize_spec.js
index e77d732a32a..e05793cf2e3 100644
--- a/spec/javascripts/behaviors/autosize_spec.js
+++ b/spec/javascripts/behaviors/autosize_spec.js
@@ -1,6 +1,6 @@
/* eslint-disable space-before-function-paren, no-var, comma-dangle, no-return-assign, padded-blocks, max-len */
-/*= require behaviors/autosize */
+require('behaviors/autosize');
(function() {
describe('Autosize behavior', function() {
diff --git a/spec/javascripts/behaviors/quick_submit_spec.js b/spec/javascripts/behaviors/quick_submit_spec.js
index 1a1f34cfdc0..4a00b1b2d38 100644
--- a/spec/javascripts/behaviors/quick_submit_spec.js
+++ b/spec/javascripts/behaviors/quick_submit_spec.js
@@ -1,6 +1,7 @@
/* eslint-disable space-before-function-paren, no-var, no-return-assign, comma-dangle, jasmine/no-spec-dupes, new-cap, padded-blocks, max-len */
-/*= require behaviors/quick_submit */
+require('./spec_helper');
+require('behaviors/quick_submit');
(function() {
describe('Quick Submit behavior', function() {
diff --git a/spec/javascripts/behaviors/requires_input_spec.js b/spec/javascripts/behaviors/requires_input_spec.js
index 1f62591c06d..44d91d41abf 100644
--- a/spec/javascripts/behaviors/requires_input_spec.js
+++ b/spec/javascripts/behaviors/requires_input_spec.js
@@ -1,6 +1,7 @@
/* eslint-disable space-before-function-paren, no-var, padded-blocks */
-/*= require behaviors/requires_input */
+require('./spec_helper');
+require('behaviors/requires_input');
(function() {
describe('requiresInput', function() {
diff --git a/spec/javascripts/boards/boards_store_spec.js.es6 b/spec/javascripts/boards/boards_store_spec.js.es6
index b3a1afa28a5..d995380c620 100644
--- a/spec/javascripts/boards/boards_store_spec.js.es6
+++ b/spec/javascripts/boards/boards_store_spec.js.es6
@@ -6,19 +6,18 @@
/* global listObj */
/* global listObjDuplicate */
-//= require jquery
-//= require jquery_ujs
-//= require js.cookie
-//= require vue
-//= require vue-resource
-//= require lib/utils/url_utility
-//= require boards/models/issue
-//= require boards/models/label
-//= require boards/models/list
-//= require boards/models/user
-//= require boards/services/board_service
-//= require boards/stores/boards_store
-//= require ./mock_data
+require('jquery_ujs');
+require('js.cookie');
+require('vue');
+require('vue-resource');
+require('lib/utils/url_utility');
+require('boards/models/issue');
+require('boards/models/label');
+require('boards/models/list');
+require('boards/models/user');
+require('boards/services/board_service');
+require('boards/stores/boards_store');
+require('./mock_data');
describe('Store', () => {
beforeEach(() => {
diff --git a/spec/javascripts/boards/issue_spec.js.es6 b/spec/javascripts/boards/issue_spec.js.es6
index c8a61a0a9b5..2cdbdd725b1 100644
--- a/spec/javascripts/boards/issue_spec.js.es6
+++ b/spec/javascripts/boards/issue_spec.js.es6
@@ -2,19 +2,18 @@
/* global BoardService */
/* global ListIssue */
-//= require jquery
-//= require jquery_ujs
-//= require js.cookie
-//= require vue
-//= require vue-resource
-//= require lib/utils/url_utility
-//= require boards/models/issue
-//= require boards/models/label
-//= require boards/models/list
-//= require boards/models/user
-//= require boards/services/board_service
-//= require boards/stores/boards_store
-//= require ./mock_data
+require('jquery_ujs');
+require('js.cookie');
+require('vue');
+require('vue-resource');
+require('lib/utils/url_utility');
+require('boards/models/issue');
+require('boards/models/label');
+require('boards/models/list');
+require('boards/models/user');
+require('boards/services/board_service');
+require('boards/stores/boards_store');
+require('./mock_data');
describe('Issue model', () => {
let issue;
diff --git a/spec/javascripts/boards/list_spec.js.es6 b/spec/javascripts/boards/list_spec.js.es6
index 7d942ec3d65..dd82f482207 100644
--- a/spec/javascripts/boards/list_spec.js.es6
+++ b/spec/javascripts/boards/list_spec.js.es6
@@ -5,19 +5,18 @@
/* global List */
/* global listObj */
-//= require jquery
-//= require jquery_ujs
-//= require js.cookie
-//= require vue
-//= require vue-resource
-//= require lib/utils/url_utility
-//= require boards/models/issue
-//= require boards/models/label
-//= require boards/models/list
-//= require boards/models/user
-//= require boards/services/board_service
-//= require boards/stores/boards_store
-//= require ./mock_data
+require('jquery_ujs');
+require('js.cookie');
+require('vue');
+require('vue-resource');
+require('lib/utils/url_utility');
+require('boards/models/issue');
+require('boards/models/label');
+require('boards/models/list');
+require('boards/models/user');
+require('boards/services/board_service');
+require('boards/stores/boards_store');
+require('./mock_data');
describe('List model', () => {
let list;
diff --git a/spec/javascripts/bootstrap_linked_tabs_spec.js.es6 b/spec/javascripts/bootstrap_linked_tabs_spec.js.es6
index ea953d0f5a5..b6d223dcb80 100644
--- a/spec/javascripts/bootstrap_linked_tabs_spec.js.es6
+++ b/spec/javascripts/bootstrap_linked_tabs_spec.js.es6
@@ -1,4 +1,5 @@
-//= require lib/utils/bootstrap_linked_tabs
+require('./spec_helper');
+require('lib/utils/bootstrap_linked_tabs');
(() => {
describe('Linked Tabs', () => {
diff --git a/spec/javascripts/build_spec.js.es6 b/spec/javascripts/build_spec.js.es6
index 0c556382980..8b0c797647b 100644
--- a/spec/javascripts/build_spec.js.es6
+++ b/spec/javascripts/build_spec.js.es6
@@ -2,11 +2,12 @@
/* global Build */
/* global Turbolinks */
-//= require lib/utils/datetime_utility
-//= require build
-//= require breakpoints
-//= require jquery.nicescroll
-//= require turbolinks
+require('./spec_helper');
+require('lib/utils/datetime_utility');
+require('build');
+require('breakpoints');
+require('vendor/jquery.nicescroll');
+require('vendor/turbolinks');
describe('Build', () => {
const BUILD_URL = `${gl.TEST_HOST}/frontend-fixtures/builds-project/builds/1`;
diff --git a/spec/javascripts/dashboard_spec.js.es6 b/spec/javascripts/dashboard_spec.js.es6
index 3f6b328348d..4223215c096 100644
--- a/spec/javascripts/dashboard_spec.js.es6
+++ b/spec/javascripts/dashboard_spec.js.es6
@@ -1,9 +1,9 @@
/* eslint-disable no-new, padded-blocks */
-/*= require sidebar */
-/*= require jquery */
-/*= require js.cookie */
-/*= require lib/utils/text_utility */
+require('./spec_helper');
+require('sidebar');
+require('vendor/js.cookie');
+require('lib/utils/text_utility');
((global) => {
describe('Dashboard', () => {
diff --git a/spec/javascripts/datetime_utility_spec.js.es6 b/spec/javascripts/datetime_utility_spec.js.es6
index 8ece24555c5..713e7742988 100644
--- a/spec/javascripts/datetime_utility_spec.js.es6
+++ b/spec/javascripts/datetime_utility_spec.js.es6
@@ -1,4 +1,4 @@
-//= require lib/utils/datetime_utility
+require('lib/utils/datetime_utility');
(() => {
describe('Date time utils', () => {
diff --git a/spec/javascripts/diff_comments_store_spec.js.es6 b/spec/javascripts/diff_comments_store_spec.js.es6
index 18805d26ac0..f27ba0f93f7 100644
--- a/spec/javascripts/diff_comments_store_spec.js.es6
+++ b/spec/javascripts/diff_comments_store_spec.js.es6
@@ -1,10 +1,9 @@
/* eslint-disable no-extra-semi, jasmine/no-global-setup, dot-notation, jasmine/no-expect-in-setup-teardown, max-len */
/* global CommentsStore */
-//= require vue
-//= require diff_notes/models/discussion
-//= require diff_notes/models/note
-//= require diff_notes/stores/comments
+require('diff_notes/models/discussion');
+require('diff_notes/models/note');
+require('diff_notes/stores/comments');
(() => {
function createDiscussion(noteId = 1, resolved = true) {
diff --git a/spec/javascripts/environments/environment_actions_spec.js.es6 b/spec/javascripts/environments/environment_actions_spec.js.es6
index 056e4d41e93..34330f7bfd6 100644
--- a/spec/javascripts/environments/environment_actions_spec.js.es6
+++ b/spec/javascripts/environments/environment_actions_spec.js.es6
@@ -1,5 +1,6 @@
-//= require vue
-//= require environments/components/environment_actions
+require('./spec_helper');
+require('vue');
+require('environments/components/environment_actions');
describe('Actions Component', () => {
preloadFixtures('static/environments/element.html.raw');
diff --git a/spec/javascripts/environments/environment_external_url_spec.js.es6 b/spec/javascripts/environments/environment_external_url_spec.js.es6
index 950a5d53fad..71785e7ecf1 100644
--- a/spec/javascripts/environments/environment_external_url_spec.js.es6
+++ b/spec/javascripts/environments/environment_external_url_spec.js.es6
@@ -1,5 +1,6 @@
-//= require vue
-//= require environments/components/environment_external_url
+require('./spec_helper');
+require('vue');
+require('environments/components/environment_external_url');
describe('External URL Component', () => {
preloadFixtures('static/environments/element.html.raw');
diff --git a/spec/javascripts/environments/environment_item_spec.js.es6 b/spec/javascripts/environments/environment_item_spec.js.es6
index c178b9cc1ec..be753498269 100644
--- a/spec/javascripts/environments/environment_item_spec.js.es6
+++ b/spec/javascripts/environments/environment_item_spec.js.es6
@@ -1,6 +1,7 @@
-//= require vue
-//= require timeago
-//= require environments/components/environment_item
+require('./spec_helper');
+require('vue');
+require('timeago');
+require('environments/components/environment_item');
describe('Environment item', () => {
preloadFixtures('static/environments/table.html.raw');
diff --git a/spec/javascripts/environments/environment_rollback_spec.js.es6 b/spec/javascripts/environments/environment_rollback_spec.js.es6
index 21241116e29..72f44014258 100644
--- a/spec/javascripts/environments/environment_rollback_spec.js.es6
+++ b/spec/javascripts/environments/environment_rollback_spec.js.es6
@@ -1,5 +1,7 @@
-//= require vue
-//= require environments/components/environment_rollback
+require('./spec_helper');
+require('vue');
+require('environments/components/environment_rollback');
+
describe('Rollback Component', () => {
preloadFixtures('static/environments/element.html.raw');
diff --git a/spec/javascripts/environments/environment_stop_spec.js.es6 b/spec/javascripts/environments/environment_stop_spec.js.es6
index bb998a32f32..37ae970859c 100644
--- a/spec/javascripts/environments/environment_stop_spec.js.es6
+++ b/spec/javascripts/environments/environment_stop_spec.js.es6
@@ -1,5 +1,7 @@
-//= require vue
-//= require environments/components/environment_stop
+require('./spec_helper');
+require('vue');
+require('environments/components/environment_stop');
+
describe('Stop Component', () => {
preloadFixtures('static/environments/element.html.raw');
diff --git a/spec/javascripts/environments/environments_store_spec.js.es6 b/spec/javascripts/environments/environments_store_spec.js.es6
index 17c00acf63e..eefe87be5aa 100644
--- a/spec/javascripts/environments/environments_store_spec.js.es6
+++ b/spec/javascripts/environments/environments_store_spec.js.es6
@@ -1,8 +1,8 @@
/* global environmentsList */
-//= require vue
-//= require environments/stores/environments_store
-//= require ./mock_data
+require('vue');
+require('environments/stores/environments_store');
+require('./mock_data');
(() => {
describe('Store', () => {
diff --git a/spec/javascripts/environments/mock_data.js.es6 b/spec/javascripts/environments/mock_data.js.es6
index 9e16bc3e6a5..bc5f6246cba 100644
--- a/spec/javascripts/environments/mock_data.js.es6
+++ b/spec/javascripts/environments/mock_data.js.es6
@@ -1,4 +1,5 @@
/* eslint-disable no-unused-vars */
+
const environmentsList = [
{
id: 31,
diff --git a/spec/javascripts/extensions/array_spec.js.es6 b/spec/javascripts/extensions/array_spec.js.es6
index 2ec759c8e80..5396e0eb639 100644
--- a/spec/javascripts/extensions/array_spec.js.es6
+++ b/spec/javascripts/extensions/array_spec.js.es6
@@ -1,6 +1,6 @@
/* eslint-disable space-before-function-paren, no-var, padded-blocks */
-/*= require extensions/array */
+require('extensions/array');
(function() {
describe('Array extensions', function() {
diff --git a/spec/javascripts/extensions/element_spec.js.es6 b/spec/javascripts/extensions/element_spec.js.es6
index c5b86d35204..49544ae8b5c 100644
--- a/spec/javascripts/extensions/element_spec.js.es6
+++ b/spec/javascripts/extensions/element_spec.js.es6
@@ -1,4 +1,4 @@
-/*= require extensions/element */
+require('extensions/element');
(() => {
describe('Element extensions', function () {
diff --git a/spec/javascripts/extensions/jquery_spec.js b/spec/javascripts/extensions/jquery_spec.js
index 91846bb9143..3163414b134 100644
--- a/spec/javascripts/extensions/jquery_spec.js
+++ b/spec/javascripts/extensions/jquery_spec.js
@@ -1,6 +1,6 @@
/* eslint-disable space-before-function-paren, no-var, padded-blocks */
-/*= require extensions/jquery */
+require('extensions/jquery');
(function() {
describe('jQuery extensions', function() {
diff --git a/spec/javascripts/extensions/object_spec.js.es6 b/spec/javascripts/extensions/object_spec.js.es6
index 3b71c255b30..77ffa1a35ae 100644
--- a/spec/javascripts/extensions/object_spec.js.es6
+++ b/spec/javascripts/extensions/object_spec.js.es6
@@ -1,4 +1,4 @@
-/*= require extensions/object */
+require('extensions/object');
describe('Object extensions', () => {
describe('assign', () => {
diff --git a/spec/javascripts/gl_dropdown_spec.js.es6 b/spec/javascripts/gl_dropdown_spec.js.es6
index ce96571bd52..fac5b20ea7e 100644
--- a/spec/javascripts/gl_dropdown_spec.js.es6
+++ b/spec/javascripts/gl_dropdown_spec.js.es6
@@ -1,11 +1,11 @@
/* eslint-disable comma-dangle, prefer-const, no-param-reassign, no-plusplus, semi, no-unused-expressions, arrow-spacing, max-len */
/* global Turbolinks */
-/*= require jquery */
-/*= require gl_dropdown */
-/*= require turbolinks */
-/*= require lib/utils/common_utils */
-/*= require lib/utils/type_utility */
+require('./spec_helper');
+require('gl_dropdown');
+require('vendor/turbolinks');
+require('lib/utils/common_utils');
+require('lib/utils/type_utility');
(() => {
const NON_SELECTABLE_CLASSES = '.divider, .separator, .dropdown-header, .dropdown-menu-empty-link';
diff --git a/spec/javascripts/gl_field_errors_spec.js.es6 b/spec/javascripts/gl_field_errors_spec.js.es6
index e5d934540af..763e1bb5685 100644
--- a/spec/javascripts/gl_field_errors_spec.js.es6
+++ b/spec/javascripts/gl_field_errors_spec.js.es6
@@ -1,7 +1,7 @@
/* eslint-disable space-before-function-paren, arrow-body-style, indent, padded-blocks */
-//= require jquery
-//= require gl_field_errors
+require('./spec_helper');
+require('gl_field_errors');
((global) => {
preloadFixtures('static/gl_field_errors.html.raw');
diff --git a/spec/javascripts/graphs/stat_graph_contributors_graph_spec.js b/spec/javascripts/graphs/stat_graph_contributors_graph_spec.js
index bc5cbeb6a40..a914eda90bb 100644
--- a/spec/javascripts/graphs/stat_graph_contributors_graph_spec.js
+++ b/spec/javascripts/graphs/stat_graph_contributors_graph_spec.js
@@ -3,7 +3,7 @@
/* global ContributorsGraph */
/* global ContributorsMasterGraph */
-//= require graphs/stat_graph_contributors_graph
+require('graphs/stat_graph_contributors_graph');
describe("ContributorsGraph", function () {
describe("#set_x_domain", function () {
diff --git a/spec/javascripts/graphs/stat_graph_contributors_util_spec.js b/spec/javascripts/graphs/stat_graph_contributors_util_spec.js
index 751f3d175e2..4f82e1c46db 100644
--- a/spec/javascripts/graphs/stat_graph_contributors_util_spec.js
+++ b/spec/javascripts/graphs/stat_graph_contributors_util_spec.js
@@ -1,7 +1,7 @@
/* eslint-disable quotes, padded-blocks, no-var, camelcase, object-curly-spacing, semi, indent, object-property-newline, comma-dangle, comma-spacing, spaced-comment, max-len, key-spacing, vars-on-top, quote-props, no-multi-spaces */
/* global ContributorsStatGraphUtil */
-//= require graphs/stat_graph_contributors_util
+require('graphs/stat_graph_contributors_util');
describe("ContributorsStatGraphUtil", function () {
diff --git a/spec/javascripts/graphs/stat_graph_spec.js b/spec/javascripts/graphs/stat_graph_spec.js
index 0da124632ae..a017f35831d 100644
--- a/spec/javascripts/graphs/stat_graph_spec.js
+++ b/spec/javascripts/graphs/stat_graph_spec.js
@@ -1,7 +1,7 @@
/* eslint-disable quotes, padded-blocks, semi */
/* global StatGraph */
-//= require graphs/stat_graph
+require('graphs/stat_graph');
describe("StatGraph", function () {
diff --git a/spec/javascripts/header_spec.js b/spec/javascripts/header_spec.js
index b5262afa1cf..cb12fa327d4 100644
--- a/spec/javascripts/header_spec.js
+++ b/spec/javascripts/header_spec.js
@@ -1,7 +1,7 @@
/* eslint-disable space-before-function-paren, padded-blocks, no-var */
-/*= require header */
-/*= require lib/utils/text_utility */
-/*= require jquery */
+require('./spec_helper');
+require('header');
+require('lib/utils/text_utility');
(function() {
diff --git a/spec/javascripts/issuable_spec.js.es6 b/spec/javascripts/issuable_spec.js.es6
index 917a6267b92..2daadfa0c77 100644
--- a/spec/javascripts/issuable_spec.js.es6
+++ b/spec/javascripts/issuable_spec.js.es6
@@ -1,8 +1,8 @@
/* global Issuable */
/* global Turbolinks */
-//= require issuable
-//= require turbolinks
+require('issuable');
+require('turbolinks');
(() => {
const BASE_URL = '/user/project/issues?scope=all&state=closed';
diff --git a/spec/javascripts/issue_spec.js b/spec/javascripts/issue_spec.js
index eb07421826c..126b3682d5d 100644
--- a/spec/javascripts/issue_spec.js
+++ b/spec/javascripts/issue_spec.js
@@ -1,8 +1,9 @@
/* eslint-disable space-before-function-paren, no-var, one-var, one-var-declaration-per-line, no-use-before-define, indent, no-trailing-spaces, comma-dangle, padded-blocks, max-len */
/* global Issue */
-/*= require lib/utils/text_utility */
-/*= require issue */
+require('./spec_helper');
+require('lib/utils/text_utility');
+require('issue');
(function() {
var INVALID_URL = 'http://goesnowhere.nothing/whereami';
diff --git a/spec/javascripts/labels_issue_sidebar_spec.js.es6 b/spec/javascripts/labels_issue_sidebar_spec.js.es6
index e3146559a4a..885e975c32b 100644
--- a/spec/javascripts/labels_issue_sidebar_spec.js.es6
+++ b/spec/javascripts/labels_issue_sidebar_spec.js.es6
@@ -2,17 +2,16 @@
/* global IssuableContext */
/* global LabelsSelect */
-//= require lib/utils/type_utility
-//= require jquery
-//= require bootstrap
-//= require gl_dropdown
-//= require select2
-//= require jquery.nicescroll
-//= require api
-//= require create_label
-//= require issuable_context
-//= require users_select
-//= require labels_select
+require('./spec_helper');
+require('lib/utils/type_utility');
+require('gl_dropdown');
+require('select2');
+require('vendor/jquery.nicescroll');
+require('api');
+require('create_label');
+require('issuable_context');
+require('users_select');
+require('labels_select');
(() => {
let saveLabelCount = 0;
diff --git a/spec/javascripts/lib/utils/common_utils_spec.js.es6 b/spec/javascripts/lib/utils/common_utils_spec.js.es6
index ef75f600898..46aa0702bda 100644
--- a/spec/javascripts/lib/utils/common_utils_spec.js.es6
+++ b/spec/javascripts/lib/utils/common_utils_spec.js.es6
@@ -1,4 +1,4 @@
-//= require lib/utils/common_utils
+require('lib/utils/common_utils');
(() => {
describe('common_utils', () => {
diff --git a/spec/javascripts/line_highlighter_spec.js b/spec/javascripts/line_highlighter_spec.js
index 31f516b41bf..fb549b846e0 100644
--- a/spec/javascripts/line_highlighter_spec.js
+++ b/spec/javascripts/line_highlighter_spec.js
@@ -1,7 +1,8 @@
/* eslint-disable space-before-function-paren, no-var, no-param-reassign, quotes, prefer-template, no-else-return, new-cap, dot-notation, no-return-assign, comma-dangle, no-new, one-var, one-var-declaration-per-line, no-plusplus, jasmine/no-spec-dupes, no-underscore-dangle, padded-blocks, max-len */
/* global LineHighlighter */
-/*= require line_highlighter */
+require('./spec_helper');
+require('line_highlighter');
(function() {
describe('LineHighlighter', function() {
diff --git a/spec/javascripts/merge_request_spec.js b/spec/javascripts/merge_request_spec.js
index 9b232617fe5..bbfa6aa67a5 100644
--- a/spec/javascripts/merge_request_spec.js
+++ b/spec/javascripts/merge_request_spec.js
@@ -1,7 +1,8 @@
/* eslint-disable space-before-function-paren, no-return-assign, padded-blocks */
/* global MergeRequest */
-/*= require merge_request */
+require('./spec_helper');
+require('merge_request');
(function() {
describe('MergeRequest', function() {
diff --git a/spec/javascripts/merge_request_tabs_spec.js b/spec/javascripts/merge_request_tabs_spec.js
index 98201fb98ed..a8fa47cdd57 100644
--- a/spec/javascripts/merge_request_tabs_spec.js
+++ b/spec/javascripts/merge_request_tabs_spec.js
@@ -1,9 +1,10 @@
/* eslint-disable no-var, comma-dangle, object-shorthand */
-/*= require merge_request_tabs */
-//= require breakpoints
-//= require lib/utils/common_utils
-//= require jquery.scrollTo
+require('./spec_helper');
+require('merge_request_tabs');
+require('breakpoints');
+require('lib/utils/common_utils');
+require('vendor/jquery.scrollTo');
(function () {
describe('MergeRequestTabs', function () {
diff --git a/spec/javascripts/merge_request_widget_spec.js b/spec/javascripts/merge_request_widget_spec.js
index 6f91529db00..b29f5bad234 100644
--- a/spec/javascripts/merge_request_widget_spec.js
+++ b/spec/javascripts/merge_request_widget_spec.js
@@ -1,7 +1,7 @@
/* eslint-disable space-before-function-paren, quotes, comma-dangle, dot-notation, indent, quote-props, no-var, padded-blocks, max-len */
-/*= require merge_request_widget */
-/*= require lib/utils/datetime_utility */
+require('merge_request_widget');
+require('lib/utils/datetime_utility');
(function() {
describe('MergeRequestWidget', function() {
diff --git a/spec/javascripts/mini_pipeline_graph_dropdown_spec.js.es6 b/spec/javascripts/mini_pipeline_graph_dropdown_spec.js.es6
index a1c2fe3df37..32b80a4f4bd 100644
--- a/spec/javascripts/mini_pipeline_graph_dropdown_spec.js.es6
+++ b/spec/javascripts/mini_pipeline_graph_dropdown_spec.js.es6
@@ -1,7 +1,7 @@
/* eslint-disable no-new */
-//= require flash
-//= require mini_pipeline_graph_dropdown
+require('flash');
+require('mini_pipeline_graph_dropdown');
(() => {
describe('Mini Pipeline Graph Dropdown', () => {
diff --git a/spec/javascripts/new_branch_spec.js b/spec/javascripts/new_branch_spec.js
index e0dc549a9f4..8d8c8ec9b0d 100644
--- a/spec/javascripts/new_branch_spec.js
+++ b/spec/javascripts/new_branch_spec.js
@@ -1,8 +1,9 @@
/* eslint-disable space-before-function-paren, one-var, no-var, one-var-declaration-per-line, no-return-assign, quotes, padded-blocks, max-len */
/* global NewBranchForm */
-/*= require jquery-ui/autocomplete */
-/*= require new_branch_form */
+require('./spec_helper');
+require('jquery-ui/ui/autocomplete');
+require('new_branch_form');
(function() {
describe('Branch', function() {
diff --git a/spec/javascripts/notes_spec.js b/spec/javascripts/notes_spec.js
index 9cdb0a5d5aa..d3cf2f6a0bb 100644
--- a/spec/javascripts/notes_spec.js
+++ b/spec/javascripts/notes_spec.js
@@ -1,10 +1,11 @@
/* eslint-disable space-before-function-paren, no-unused-expressions, no-var, object-shorthand, comma-dangle, semi, padded-blocks, max-len */
/* global Notes */
-/*= require notes */
-/*= require autosize */
-/*= require gl_form */
-/*= require lib/utils/text_utility */
+window._ = require('underscore');
+require('notes');
+require('vendor/autosize');
+require('gl_form');
+require('lib/utils/text_utility');
(function() {
window.gon || (window.gon = {});
diff --git a/spec/javascripts/pipelines_spec.js.es6 b/spec/javascripts/pipelines_spec.js.es6
index f0f9ad7430d..1bee64b814f 100644
--- a/spec/javascripts/pipelines_spec.js.es6
+++ b/spec/javascripts/pipelines_spec.js.es6
@@ -1,4 +1,4 @@
-//= require pipelines
+require('pipelines');
(() => {
describe('Pipelines', () => {
diff --git a/spec/javascripts/pretty_time_spec.js.es6 b/spec/javascripts/pretty_time_spec.js.es6
index 2e12d45f7a7..207d40983b4 100644
--- a/spec/javascripts/pretty_time_spec.js.es6
+++ b/spec/javascripts/pretty_time_spec.js.es6
@@ -1,4 +1,4 @@
-//= require lib/utils/pretty_time
+require('lib/utils/pretty_time');
(() => {
const PrettyTime = gl.PrettyTime;
diff --git a/spec/javascripts/project_title_spec.js b/spec/javascripts/project_title_spec.js
index 27b071f266d..bc09bbbe512 100644
--- a/spec/javascripts/project_title_spec.js
+++ b/spec/javascripts/project_title_spec.js
@@ -1,14 +1,14 @@
/* eslint-disable space-before-function-paren, no-unused-expressions, no-return-assign, no-param-reassign, no-var, new-cap, wrap-iife, no-unused-vars, quotes, jasmine/no-expect-in-setup-teardown, padded-blocks, max-len */
-
/* global Project */
-/*= require bootstrap */
-/*= require select2 */
-/*= require lib/utils/type_utility */
-/*= require gl_dropdown */
-/*= require api */
-/*= require project_select */
-/*= require project */
+require('./spec_helper');
+require('bootstrap/js/dropdown');
+require('select2/select2.js');
+require('lib/utils/type_utility');
+require('gl_dropdown');
+require('api');
+require('project_select');
+require('project');
(function() {
window.gon || (window.gon = {});
diff --git a/spec/javascripts/right_sidebar_spec.js b/spec/javascripts/right_sidebar_spec.js
index 0177d8e4e79..e0343c19fbe 100644
--- a/spec/javascripts/right_sidebar_spec.js
+++ b/spec/javascripts/right_sidebar_spec.js
@@ -1,11 +1,10 @@
/* eslint-disable space-before-function-paren, no-var, one-var, one-var-declaration-per-line, new-parens, no-return-assign, new-cap, vars-on-top, semi, padded-blocks, max-len */
/* global Sidebar */
-/*= require right_sidebar */
-/*= require jquery */
-/*= require js.cookie */
-
-/*= require extensions/jquery.js */
+require('./spec_helper');
+require('right_sidebar');
+require('vendor/js.cookie');
+require('extensions/jquery.js');
(function() {
var $aside, $icon, $labelsIcon, $page, $toggle, assertSidebarState;
diff --git a/spec/javascripts/search_autocomplete_spec.js b/spec/javascripts/search_autocomplete_spec.js
index e13c4ad772c..2609ca4f53b 100644
--- a/spec/javascripts/search_autocomplete_spec.js
+++ b/spec/javascripts/search_autocomplete_spec.js
@@ -1,13 +1,12 @@
/* eslint-disable space-before-function-paren, max-len, no-var, one-var, one-var-declaration-per-line, no-unused-expressions, consistent-return, no-param-reassign, default-case, no-return-assign, comma-dangle, object-shorthand, prefer-template, quotes, new-parens, vars-on-top, new-cap, padded-blocks, max-len */
-
-/*= require gl_dropdown */
-/*= require search_autocomplete */
-/*= require jquery */
-/*= require lib/utils/common_utils */
-/*= require lib/utils/type_utility */
-/*= require fuzzaldrin-plus */
-/*= require turbolinks */
-/*= require jquery.turbolinks */
+require('./spec_helper');
+require('gl_dropdown');
+require('search_autocomplete');
+require('lib/utils/common_utils');
+require('lib/utils/type_utility');
+require('vendor/fuzzaldrin-plus');
+require('vendor/turbolinks');
+require('vendor/jquery.turbolinks');
(function() {
var addBodyAttributes, assertLinks, dashboardIssuesPath, dashboardMRsPath, groupIssuesPath, groupMRsPath, groupName, mockDashboardOptions, mockGroupOptions, mockProjectOptions, projectIssuesPath, projectMRsPath, projectName, userId, widget;
diff --git a/spec/javascripts/shortcuts_issuable_spec.js b/spec/javascripts/shortcuts_issuable_spec.js
index ae5d639ad9c..e6605c46bfc 100644
--- a/spec/javascripts/shortcuts_issuable_spec.js
+++ b/spec/javascripts/shortcuts_issuable_spec.js
@@ -1,7 +1,8 @@
/* eslint-disable space-before-function-paren, no-return-assign, no-var, quotes, padded-blocks */
/* global ShortcutsIssuable */
-/*= require shortcuts_issuable */
+require('./spec_helper');
+require('shortcuts_issuable');
(function() {
describe('ShortcutsIssuable', function() {
diff --git a/spec/javascripts/signin_tabs_memoizer_spec.js.es6 b/spec/javascripts/signin_tabs_memoizer_spec.js.es6
index c274b9c45f4..f7aa3e663f9 100644
--- a/spec/javascripts/signin_tabs_memoizer_spec.js.es6
+++ b/spec/javascripts/signin_tabs_memoizer_spec.js.es6
@@ -1,4 +1,5 @@
-/*= require signin_tabs_memoizer */
+require('./spec_helper');
+require('signin_tabs_memoizer');
((global) => {
describe('SigninTabsMemoizer', () => {
diff --git a/spec/javascripts/smart_interval_spec.js.es6 b/spec/javascripts/smart_interval_spec.js.es6
index 39d236986b9..23cf8689585 100644
--- a/spec/javascripts/smart_interval_spec.js.es6
+++ b/spec/javascripts/smart_interval_spec.js.es6
@@ -1,5 +1,5 @@
-//= require jquery
-//= require smart_interval
+require('./spec_helper');
+require('smart_interval');
(() => {
const DEFAULT_MAX_INTERVAL = 100;
diff --git a/spec/javascripts/spec_helper.js b/spec/javascripts/spec_helper.js
index f8e3aca29fa..b6dcdba927b 100644
--- a/spec/javascripts/spec_helper.js
+++ b/spec/javascripts/spec_helper.js
@@ -1,48 +1,8 @@
-/* eslint-disable space-before-function-paren */
-// PhantomJS (Teaspoons default driver) doesn't have support for
-// Function.prototype.bind, which has caused confusion. Use this polyfill to
-// avoid the confusion.
-/*= require support/bind-poly */
+require('jasmine-jquery');
-// You can require your own javascript files here. By default this will include
-// everything in application, however you may get better load performance if you
-// require the specific files that are being used in the spec that tests them.
-/*= require jquery */
-/*= require jquery.turbolinks */
-/*= require bootstrap */
-/*= require underscore */
+jasmine.getFixtures().fixturesPath = 'base/spec/javascripts/fixtures';
+jasmine.getJSONFixtures().fixturesPath = 'base/spec/javascripts/fixtures';
-// Teaspoon includes some support files, but you can use anything from your own
-// support path too.
-// require support/jasmine-jquery-1.7.0
-// require support/jasmine-jquery-2.0.0
-/*= require support/jasmine-jquery-2.1.0 */
-
-// require support/sinon
-// require support/your-support-file
-// Deferring execution
-// If you're using CommonJS, RequireJS or some other asynchronous library you can
-// defer execution. Call Teaspoon.execute() after everything has been loaded.
-// Simple example of a timeout:
-// Teaspoon.defer = true
-// setTimeout(Teaspoon.execute, 1000)
-// Matching files
-// By default Teaspoon will look for files that match
-// _spec.{js,js.es6}. Add a filename_spec.js file in your spec path
-// and it'll be included in the default suite automatically. If you want to
-// customize suites, check out the configuration in teaspoon_env.rb
-// Manifest
-// If you'd rather require your spec files manually (to control order for
-// instance) you can disable the suite matcher in the configuration and use this
-// file as a manifest.
-// For more information: http://github.com/modeset/teaspoon
-
-// 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 || {};
window.gl.TEST_HOST = 'http://test.host';
window.gon = window.gon || {};
diff --git a/spec/javascripts/subbable_resource_spec.js.es6 b/spec/javascripts/subbable_resource_spec.js.es6
index 6a70dd856a7..c24e860afd1 100644
--- a/spec/javascripts/subbable_resource_spec.js.es6
+++ b/spec/javascripts/subbable_resource_spec.js.es6
@@ -1,9 +1,8 @@
/* eslint-disable max-len, arrow-parens, comma-dangle, no-plusplus */
-//= vue
-//= vue-resource
-//= require jquery
-//= require subbable_resource
+require('./spec_helper');
+window._ = require('underscore');
+require('subbable_resource');
/*
* Test that each rest verb calls the publish and subscribe function and passes the correct value back
diff --git a/spec/javascripts/syntax_highlight_spec.js b/spec/javascripts/syntax_highlight_spec.js
index 5984ce8ffd4..c06339fa709 100644
--- a/spec/javascripts/syntax_highlight_spec.js
+++ b/spec/javascripts/syntax_highlight_spec.js
@@ -1,6 +1,7 @@
/* eslint-disable space-before-function-paren, no-var, no-return-assign, quotes, padded-blocks */
-/*= require syntax_highlight */
+require('./spec_helper');
+require('syntax_highlight');
(function() {
describe('Syntax Highlighter', function() {
diff --git a/spec/javascripts/u2f/authenticate_spec.js b/spec/javascripts/u2f/authenticate_spec.js
index dc2f4967985..9cd59fb019e 100644
--- a/spec/javascripts/u2f/authenticate_spec.js
+++ b/spec/javascripts/u2f/authenticate_spec.js
@@ -2,11 +2,12 @@
/* global MockU2FDevice */
/* global U2FAuthenticate */
-/*= require u2f/authenticate */
-/*= require u2f/util */
-/*= require u2f/error */
-/*= require u2f */
-/*= require ./mock_u2f_device */
+require('./spec_helper');
+require('u2f/authenticate');
+require('u2f/util');
+require('u2f/error');
+require('vendor/u2f');
+require('./mock_u2f_device');
(function() {
describe('U2FAuthenticate', function() {
diff --git a/spec/javascripts/u2f/register_spec.js b/spec/javascripts/u2f/register_spec.js
index ab4c5edd044..36989bee2d2 100644
--- a/spec/javascripts/u2f/register_spec.js
+++ b/spec/javascripts/u2f/register_spec.js
@@ -2,11 +2,12 @@
/* global MockU2FDevice */
/* global U2FRegister */
-/*= require u2f/register */
-/*= require u2f/util */
-/*= require u2f/error */
-/*= require u2f */
-/*= require ./mock_u2f_device */
+require('./spec_helper');
+require('u2f/register');
+require('u2f/util');
+require('u2f/error');
+require('vendor/u2f');
+require('./mock_u2f_device');
(function() {
describe('U2FRegister', function() {
diff --git a/spec/javascripts/vue_common_components/commit_spec.js.es6 b/spec/javascripts/vue_common_components/commit_spec.js.es6
index d6c6f786fb1..23ae7c4ba19 100644
--- a/spec/javascripts/vue_common_components/commit_spec.js.es6
+++ b/spec/javascripts/vue_common_components/commit_spec.js.es6
@@ -1,4 +1,5 @@
-//= require vue_common_component/commit
+require('./spec_helper');
+require('vue_common_component/commit');
describe('Commit component', () => {
let props;
diff --git a/spec/javascripts/zen_mode_spec.js b/spec/javascripts/zen_mode_spec.js
index f1c2edcc55c..2c790b193b0 100644
--- a/spec/javascripts/zen_mode_spec.js
+++ b/spec/javascripts/zen_mode_spec.js
@@ -3,7 +3,8 @@
/* global Mousetrap */
/* global ZenMode */
-/*= require zen_mode */
+require('./spec_helper');
+require('zen_mode');
(function() {
var enterZen, escapeKeydown, exitZen;
diff --git a/vendor/assets/javascripts/jquery.turbolinks.js b/vendor/assets/javascripts/jquery.turbolinks.js
index fd6e95e75d5..0cf3fc7cf7a 100644
--- a/vendor/assets/javascripts/jquery.turbolinks.js
+++ b/vendor/assets/javascripts/jquery.turbolinks.js
@@ -8,10 +8,23 @@ The MIT License
Copyright (c) 2012-2013 Sasha Koss & Rico Sta. Cruz
*/
-(function() {
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function($) {
var $, $document;
-
- $ = window.jQuery || (typeof require === "function" ? require('jquery') : void 0);
+ $ = $ || window.jQuery || (typeof require === "function" ? require('jquery') : void 0);
$document = $(document);
@@ -46,4 +59,4 @@ Copyright (c) 2012-2013 Sasha Koss & Rico Sta. Cruz
$.turbo.use('page:load', 'page:fetch');
-}).call(this);
+}));