Skip to content

Commit 9b0e837

Browse files
committed
tests: rollup tests instead of browserify (videojs#5621)
1 parent 1b88ead commit 9b0e837

11 files changed

+198
-543
lines changed

package-lock.json

Lines changed: 105 additions & 430 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,11 +95,9 @@
9595
"@babel/register": "^7.0.0",
9696
"access-sniff": "^3.2.0",
9797
"autoprefixer": "^9.4.2",
98-
"babelify": "^10.0.0",
9998
"bestzip": "^2.1.2",
10099
"bluebird": "^3.5.3",
101100
"browserify": "^16.2.3",
102-
"browserify-istanbul": "^3.0.1",
103101
"chokidar-cli": "^1.2.1",
104102
"clean-css-cli": "^4.2.1",
105103
"cli-table": "^0.3.1",
@@ -114,7 +112,6 @@
114112
"husky": "^1.2.0",
115113
"jsdoc": "^3.5.5",
116114
"karma": "^3.1.3",
117-
"karma-browserify": "^5.3.0",
118115
"klaw-sync": "^6.0.0",
119116
"lint-staged": "^8.1.0",
120117
"markdown-table": "^1.1.2",
@@ -138,8 +135,10 @@
138135
"rollup-plugin-commonjs": "^9.2.0",
139136
"rollup-plugin-ignore": "^1.0.4",
140137
"rollup-plugin-json": "^3.1.0",
138+
"rollup-plugin-multi-entry": "^2.0.2",
141139
"rollup-plugin-node-resolve": "^4.0.0",
142140
"rollup-plugin-progress": "^1.0.0",
141+
"rollup-plugin-stub": "^1.2.0",
143142
"semver": "^5.6.0",
144143
"shelljs": "^0.8.3",
145144
"shx": "^0.3.2",
@@ -151,7 +150,6 @@
151150
"videojs-generate-karma-config": "~5.0.0",
152151
"videojs-languages": "^2.0.0",
153152
"videojs-standard": "^8.0.2",
154-
"watchify": "^3.11.0",
155153
"webpack": "^1.15.0"
156154
},
157155
"vjsstandard": {

rollup.config.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ import ignore from 'rollup-plugin-ignore';
99
import alias from 'rollup-plugin-alias';
1010
import _ from 'lodash';
1111
import pkg from './package.json';
12+
import multiEntry from 'rollup-plugin-multi-entry';
13+
import stub from 'rollup-plugin-stub';
1214

1315
const compiledLicense = _.template(fs.readFileSync('./build/license-header.txt', 'utf8'));
1416
const bannerData = _.pick(pkg, ['version', 'copyright']);
@@ -242,5 +244,30 @@ export default cliargs => [
242244
],
243245
onwarn,
244246
watch
247+
},
248+
{
249+
input: 'test/unit/**/*.test.js',
250+
output: {
251+
format: 'iife',
252+
name: 'videojsTests',
253+
file: 'test/dist/bundle.js',
254+
globals: globals.test
255+
},
256+
external: externals.test,
257+
plugins: [
258+
multiEntry({exports: false}),
259+
alias({
260+
'video.js': path.resolve(__dirname, './src/js/video.js')
261+
}),
262+
primedResolve,
263+
json(),
264+
stub(),
265+
primedCjs,
266+
primedBabel,
267+
cliargs.progress !== false ? progress() : {}
268+
],
269+
onwarn,
270+
watch
245271
}
272+
246273
];

test/globals-shim.js

Lines changed: 0 additions & 19 deletions
This file was deleted.

test/karma.conf.js

Lines changed: 6 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ module.exports = function(config) {
1414
serverBrowsers(defaults) {
1515
return [];
1616
},
17-
coverage: reportCoverage,
17+
coverage: reportCoverage
1818
};
1919

2020
config = generate(config, options);
@@ -29,33 +29,14 @@ module.exports = function(config) {
2929
});
3030

3131
config.files = [
32+
'node_modules/es5-shim/es5-shim.js',
33+
'node_modules/es6-shim/es6-shim.js',
34+
'node_modules/sinon/pkg/sinon.js',
3235
'dist/video-js.css',
33-
'test/globals-shim.js',
34-
'test/unit/**/*.js',
36+
'test/dist/bundle.js',
3537
'test/dist/browserify.js',
36-
'test/dist/webpack.js',
37-
{pattern: 'src/**/*.js', watched: true, included: false, served: false }
38+
'test/dist/webpack.js'
3839
];
3940

4041
config.browserStack.project = 'Video.js';
41-
42-
config.frameworks.push('browserify');
43-
config.browserify = {
44-
debug: true,
45-
plugin: [],
46-
transform: [
47-
['babelify', {"presets": [["@babel/preset-env", {"loose": true}]]}],
48-
]
49-
};
50-
51-
if (reportCoverage) {
52-
config.browserify.transform.push('browserify-istanbul');
53-
}
54-
55-
56-
config.preprocessors = {
57-
'test/globals-shim.js': ['browserify'],
58-
'test/unit/**/*.js': ['browserify'],
59-
};
60-
6142
};

test/unit/component.test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -774,7 +774,7 @@ QUnit.test('should emit a tap event', function(assert) {
774774

775775
assert.expect(3);
776776
// Fake touch support. Real touch support isn't needed for this test.
777-
browser.TOUCH_ENABLED = true;
777+
browser.stub_TOUCH_ENABLED(true);
778778

779779
comp.emitTapEvents();
780780
comp.on('tap', function() {
@@ -822,7 +822,7 @@ QUnit.test('should emit a tap event', function(assert) {
822822
comp.trigger('touchend');
823823

824824
// Reset to orignial value
825-
browser.TOUCH_ENABLED = origTouch;
825+
browser.stub_TOUCH_ENABLED(origTouch);
826826
comp.dispose();
827827
});
828828

test/unit/player.test.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import sinon from 'sinon';
1414
import window from 'global/window';
1515
import * as middleware from '../../src/js/tech/middleware.js';
1616
import * as Events from '../../src/js/utils/events.js';
17+
import pkg from '../../package.json';
1718

1819
QUnit.module('Player', {
1920
beforeEach() {
@@ -629,7 +630,7 @@ QUnit.test('should add a touch-enabled classname when touch is supported', funct
629630
// Fake touch support. Real touch support isn't needed for this test.
630631
const origTouch = browser.TOUCH_ENABLED;
631632

632-
browser.TOUCH_ENABLED = true;
633+
browser.stub_TOUCH_ENABLED(true);
633634

634635
const player = TestHelpers.makePlayer({});
635636

@@ -651,7 +652,7 @@ QUnit.test('should not add a touch-enabled classname when touch is not supported
651652

652653
assert.equal(player.el().className.indexOf('vjs-touch-enabled'), -1, 'touch-enabled classname not added');
653654

654-
browser.TOUCH_ENABLED = origTouch;
655+
browser.stub_TOUCH_ENABLED(origTouch);
655656
player.dispose();
656657
});
657658

@@ -1937,7 +1938,7 @@ QUnit.test('options: plugins', function(assert) {
19371938
});
19381939

19391940
QUnit.test('should add a class with major version', function(assert) {
1940-
const majorVersion = require('../../package.json').version.split('.')[0];
1941+
const majorVersion = pkg.version.split('.')[0];
19411942
const player = TestHelpers.makePlayer();
19421943

19431944
assert.ok(player.hasClass('vjs-v' + majorVersion), 'the version class should be added to the player');

test/unit/tech/html5.test.js

Lines changed: 35 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -126,17 +126,17 @@ QUnit.test('blacklist playbackRate support on older verisons of Chrome on Androi
126126
const oldIsChrome = browser.IS_CHROME;
127127
const oldChromeVersion = browser.CHROME_VERSION;
128128

129-
browser.IS_ANDROID = true;
130-
browser.IS_CHROME = true;
131-
browser.CHROME_VERSION = 50;
129+
browser.stub_IS_ANDROID(true);
130+
browser.stub_IS_CHROME(true);
131+
browser.stub_CHROME_VERSION(50);
132132
assert.strictEqual(Html5.canControlPlaybackRate(), false, 'canControlPlaybackRate should return false on older Chrome');
133133

134-
browser.CHROME_VERSION = 58;
134+
browser.stub_CHROME_VERSION(58);
135135
assert.strictEqual(Html5.canControlPlaybackRate(), true, 'canControlPlaybackRate should return true on newer Chrome');
136136

137-
browser.IS_ANDROID = oldIsAndroid;
138-
browser.IS_CHROME = oldIsChrome;
139-
browser.CHROME_VERSION = oldChromeVersion;
137+
browser.stub_IS_ANDROID(oldIsAndroid);
138+
browser.stub_IS_CHROME(oldIsChrome);
139+
browser.stub_CHROME_VERSION(oldChromeVersion);
140140
});
141141

142142
QUnit.test('test volume', function(assert) {
@@ -195,9 +195,9 @@ QUnit.test('patchCanPlayType patches canplaytype with our function, conditionall
195195
const video = document.createElement('video');
196196
const canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType;
197197

198-
browser.ANDROID_VERSION = 4.0;
199-
browser.IS_FIREFOX = false;
200-
browser.IS_CHROME = false;
198+
browser.stub_ANDROID_VERSION(4.0);
199+
browser.stub_IS_FIREFOX(false);
200+
browser.stub_IS_CHROME(false);
201201
Html5.patchCanPlayType();
202202

203203
assert.notStrictEqual(
@@ -220,9 +220,9 @@ QUnit.test('patchCanPlayType patches canplaytype with our function, conditionall
220220
'patched canPlayType and function returned from unpatch are equal'
221221
);
222222

223-
browser.ANDROID_VERSION = oldAV;
224-
browser.IS_FIREFOX = oldIsFirefox;
225-
browser.IS_CHROME = oldIsChrome;
223+
browser.stub_ANDROID_VERSION(oldAV);
224+
browser.stub_IS_FIREFOX(oldIsFirefox);
225+
browser.stub_IS_CHROME(oldIsChrome);
226226
Html5.unpatchCanPlayType();
227227
});
228228

@@ -236,9 +236,9 @@ QUnit.test('patchCanPlayType doesn\'t patch canplaytype with our function in Chr
236236
const video = document.createElement('video');
237237
const canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType;
238238

239-
browser.ANDROID_VERSION = 4.0;
240-
browser.IS_CHROME = true;
241-
browser.IS_FIREFOX = false;
239+
browser.stub_ANDROID_VERSION(4.0);
240+
browser.stub_IS_CHROME(true);
241+
browser.stub_IS_FIREFOX(false);
242242
Html5.patchCanPlayType();
243243

244244
assert.strictEqual(
@@ -247,9 +247,9 @@ QUnit.test('patchCanPlayType doesn\'t patch canplaytype with our function in Chr
247247
'original canPlayType and patched canPlayType should be equal'
248248
);
249249

250-
browser.ANDROID_VERSION = oldAV;
251-
browser.IS_CHROME = oldIsChrome;
252-
browser.IS_FIREFOX = oldIsFirefox;
250+
browser.stub_ANDROID_VERSION(oldAV);
251+
browser.stub_IS_CHROME(oldIsChrome);
252+
browser.stub_IS_FIREFOX(oldIsFirefox);
253253
Html5.unpatchCanPlayType();
254254
});
255255

@@ -263,9 +263,9 @@ QUnit.test('patchCanPlayType doesn\'t patch canplaytype with our function in Fir
263263
const video = document.createElement('video');
264264
const canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType;
265265

266-
browser.ANDROID_VERSION = 4.0;
267-
browser.IS_FIREFOX = true;
268-
browser.IS_CHROME = false;
266+
browser.stub_ANDROID_VERSION(4.0);
267+
browser.stub_IS_FIREFOX(true);
268+
browser.stub_IS_CHROME(false);
269269
Html5.patchCanPlayType();
270270

271271
assert.strictEqual(
@@ -274,9 +274,9 @@ QUnit.test('patchCanPlayType doesn\'t patch canplaytype with our function in Fir
274274
'original canPlayType and patched canPlayType should be equal'
275275
);
276276

277-
browser.ANDROID_VERSION = oldAV;
278-
browser.IS_FIREFOX = oldIsFirefox;
279-
browser.IS_CHROME = oldIsChrome;
277+
browser.stub_ANDROID_VERSION(oldAV);
278+
browser.stub_IS_FIREFOX(oldIsFirefox);
279+
browser.stub_IS_CHROME(oldIsChrome);
280280
Html5.unpatchCanPlayType();
281281
});
282282

@@ -286,9 +286,9 @@ QUnit.test('should return maybe for HLS urls on Android 4.0 or above when not Ch
286286
const oldIsChrome = browser.IS_CHROME;
287287
const video = document.createElement('video');
288288

289-
browser.ANDROID_VERSION = 4.0;
290-
browser.IS_FIREFOX = false;
291-
browser.IS_CHROME = false;
289+
browser.stub_ANDROID_VERSION(4.0);
290+
browser.stub_IS_FIREFOX(false);
291+
browser.stub_IS_CHROME(false);
292292
Html5.patchCanPlayType();
293293

294294
assert.strictEqual(
@@ -314,26 +314,9 @@ QUnit.test('should return maybe for HLS urls on Android 4.0 or above when not Ch
314314
'maybe for vnd.apple.mpegurl'
315315
);
316316

317-
browser.ANDROID_VERSION = oldAV;
318-
browser.IS_FIREFOX = oldIsFirefox;
319-
browser.IS_CHROME = oldIsChrome;
320-
Html5.unpatchCanPlayType();
321-
});
322-
323-
QUnit.test('should return a maybe for mp4 on OLD ANDROID', function(assert) {
324-
const isOldAndroid = browser.IS_OLD_ANDROID;
325-
const video = document.createElement('video');
326-
327-
browser.IS_OLD_ANDROID = true;
328-
Html5.patchCanPlayType();
329-
330-
assert.strictEqual(
331-
video.canPlayType('video/mp4'),
332-
'maybe',
333-
'old android should return a maybe for video/mp4'
334-
);
335-
336-
browser.IS_OLD_ANDROID = isOldAndroid;
317+
browser.stub_ANDROID_VERSION(oldAV);
318+
browser.stub_IS_FIREFOX(oldIsFirefox);
319+
browser.stub_IS_CHROME(oldIsChrome);
337320
Html5.unpatchCanPlayType();
338321
});
339322

@@ -912,17 +895,17 @@ QUnit.test('When Android Chrome reports Infinity duration with currentTime 0, re
912895
const oldIsChrome = browser.IS_CHROME;
913896
const oldEl = tech.el_;
914897

915-
browser.IS_ANDROID = true;
916-
browser.IS_CHROME = true;
898+
browser.stub_IS_ANDROID(true);
899+
browser.stub_IS_CHROME(true);
917900

918901
tech.el_ = {
919902
duration: Infinity,
920903
currentTime: 0
921904
};
922905
assert.ok(Number.isNaN(tech.duration()), 'returned NaN with currentTime 0');
923906

924-
browser.IS_ANDROID = oldIsAndroid;
925-
browser.IS_CHROME = oldIsChrome;
907+
browser.stub_IS_ANDROID(oldIsAndroid);
908+
browser.stub_IS_CHROME(oldIsChrome);
926909
tech.el_ = oldEl;
927910
});
928911

test/unit/tracks/text-track-display.test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ QUnit.test('if native text tracks are not supported, create a texttrackdisplay',
5252
textTracks: []
5353
};
5454

55-
browser.IS_FIREFOX = true;
55+
browser.stub_IS_FIREFOX(true);
5656

5757
const fakeTTDSpy = sinon.spy();
5858

@@ -70,7 +70,7 @@ QUnit.test('if native text tracks are not supported, create a texttrackdisplay',
7070
assert.strictEqual(fakeTTDSpy.callCount, 1, 'text track display was created');
7171

7272
Html5.TEST_VID = oldTestVid;
73-
browser.IS_FIREFOX = oldIsFirefox;
73+
browser.stub_IS_FIREFOX(oldIsFirefox);
7474
Component.registerComponent('TextTrackDisplay', oldTextTrackDisplay);
7575

7676
player.dispose();

0 commit comments

Comments
 (0)