summaryrefslogtreecommitdiff
path: root/javascript/videojs/sandbox/autoplay-tests.html.example
diff options
context:
space:
mode:
Diffstat (limited to 'javascript/videojs/sandbox/autoplay-tests.html.example')
-rw-r--r--javascript/videojs/sandbox/autoplay-tests.html.example146
1 files changed, 146 insertions, 0 deletions
diff --git a/javascript/videojs/sandbox/autoplay-tests.html.example b/javascript/videojs/sandbox/autoplay-tests.html.example
new file mode 100644
index 0000000..77d28cb
--- /dev/null
+++ b/javascript/videojs/sandbox/autoplay-tests.html.example
@@ -0,0 +1,146 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8" />
+ <title>Video.js Sandbox</title>
+ <link href="../dist/video-js.css" rel="stylesheet" type="text/css">
+ <script src="../node_modules/es6-shim/es6-shim.min.js"></script>
+ <script src="../dist/video.js"></script>
+<style>p{margin: 0; padding:0}</style>
+</head>
+<body>
+ <div id="fixture">
+ </div>
+ <div id="start-test">
+ <video id='start-test-video' height=264 width=640 src="https://vjs.zencdn.net/v/oceans.mp4" controls></video>
+ <p>Press play on the video to start tests. (as we need user permission to autoplay)</p>
+ </div>
+ <script>
+ /* globals */
+ var startTestEl = document.getElementById('start-test')
+ var startTestVideo = document.getElementById('start-test-video')
+ var testSrc = {src: startTestVideo.src, type: 'video/mp4'};
+ var baseTests = [];
+ var setFirstFail = function(player) {
+ var oldPlay = player.tech_.play;
+ var fail = true;
+
+ player.tech_.play = function() {
+ if (fail) {
+ fail = false;
+ return window.Promise.reject();
+ }
+
+ return oldPlay.call(player.tech_);
+ };
+ };
+ var noop = function() {};
+ ['any-first-fail', 'any', 'play', 'muted', true].forEach(function(name) {
+ var val = (name === 'any-first-fail') ? 'any' : name;
+ var firstFail = (name === 'any-first-fail') ? setFirstFail : noop;
+
+ var fn = function(player) {
+ player.autoplay(val);
+ };
+
+ baseTests.push({name: 'option-' + name, beforeSrc: firstFail, options: {autoplay: val}});
+ baseTests.push({name: 'before-src-' + name, beforeSrc: function(player) {
+ firstFail(player);
+ fn(player);
+ }});
+ baseTests.push({name: 'after-src-' + name, beforeSrc: firstFail, afterSrc: fn});
+ baseTests.push({name: 'on-ready-' + name, beforeSrc: firstFail, onReady: fn});
+ });
+
+ var appendLine = function(line) {
+ var el = document.createElement('p');
+
+ el.innerText = line;
+ console.log(line);
+ fixture.appendChild(el);
+ };
+
+ var runTests;
+
+ startTestVideo.addEventListener('play', function() {
+ startTestVideo.load();
+ startTestVideo.src = testSrc.src;
+ startTestEl.style.display = 'none';
+ runTests();
+ });
+
+ runTests = function() {
+ var fixture = document.getElementById('fixture');
+
+ while(fixture.firstChild) {
+ fixture.removeChild(fixture.firstChild);
+ }
+
+ var tests = baseTests.slice(0);
+ var failure = 0;
+ var success = 0;
+ var total = tests.length;
+ var runTest;
+
+ var finishTest = function(name, pass) {
+ if (pass) {
+ success++;
+ } else {
+ failure++;
+ }
+ appendLine((pass ? 'success' : 'failure') + ' - ' + name);
+
+ if ((success + failure) === total) {
+ startTestEl.style.display = '';
+ appendLine(success + ' of ' + total + ' succeeded');
+ } else {
+ runTest();
+ }
+ }
+
+ runTest = function() {
+ var test = tests.shift();
+ var video = document.createElement('video');
+
+ video.setAttribute('class', 'video-js');
+ video.setAttribute('id', test.name);
+ video.setAttribute('controls', true);
+
+ fixture.appendChild(video);
+
+ var player = window.player = videojs(video, test.options);
+
+ if (test.onReady) {
+ test.onReady(player);
+ }
+
+ if (test.beforeSrc) {
+ test.beforeSrc(player);
+ }
+
+ player.src(testSrc);
+
+ if (test.afterSrc) {
+ test.afterSrc(player);
+ }
+ player.setTimeout(function() {
+ player.dispose();
+ window.player = null;
+ finishTest(test.name, false);
+ }, 5000);
+
+ player.on('timeupdate', function() {
+ if (player.currentTime() > 0) {
+ player.dispose();
+ window.player = null;
+ finishTest(test.name, true);
+ }
+ });
+ };
+ runTest();
+ };
+
+ </script>
+
+</body>
+</html>