1
0
Fork 0
mirror of https://github.com/DanielnetoDotCom/YouPHPTube synced 2025-10-05 02:39:46 +02:00
Oinktube/node_modules/videojs-contrib-ads/test/integration/test.stitchedAds.js
2022-05-20 16:22:54 -03:00

151 lines
3.6 KiB
JavaScript

/*
TODO:
* timeupdate, adtimeupdate, contenttimeupdate
* loadstart, adloadstart, contentloadstart
* play, adplay, contentplay
* loadeddata, adloadeddata, contentloadeddata
* loadedmetadata, adloadedmetadata, contentloadedmetadata
*/
import videojs from 'video.js';
import QUnit from 'qunit';
import document from 'global/document';
import '../../examples/stitched-ad-plugin/plugin.js';
const originalTestTimeout = QUnit.config.testTimeout;
QUnit.module('Events and Stitched Ads', {
before() {
QUnit.config.testTimeout = 30000;
},
beforeEach() {
this.video = document.createElement('video');
this.fixture = document.querySelector('#qunit-fixture');
this.fixture.appendChild(this.video);
this.player = videojs(this.video);
this.player.exampleStitchedAds();
this.player.src({
src: 'http://vjs.zencdn.net/v/oceans.webm',
type: 'video/webm'
});
// Mute the player to allow playback without user interaction
this.player.muted(true);
},
afterEach() {
this.player.dispose();
},
after() {
QUnit.config.testTimeout = originalTestTimeout;
}
});
QUnit.test('Stitched Ads', function(assert) {
const done = assert.async();
const seenBeforePreroll = [];
const seenDuringPreroll = [];
const seenAfterPreroll = [];
const seenDuringMidroll = [];
const seenAfterMidroll = [];
let currentEventLog = seenBeforePreroll;
let finish;
let events = [
'suspend',
'abort',
'error',
'emptied',
'stalled',
'canplay',
'canplaythrough',
'waiting',
'seeking',
'durationchange',
'progress',
'pause',
'ratechange',
'volumechange',
'firstplay',
'suspend',
'playing',
'ended'
];
events = events
.concat(events.map(e => 'ad' + e))
.concat(events.map(e => 'content' + e));
const {player} = this;
player.on('adstart', () => {
if (currentEventLog === seenBeforePreroll) {
currentEventLog = seenDuringPreroll;
} else {
currentEventLog = seenDuringMidroll;
}
});
player.on('adend', () => {
if (currentEventLog === seenDuringPreroll) {
currentEventLog = seenAfterPreroll;
} else {
currentEventLog = seenAfterMidroll;
}
});
player.on(events, (e) => currentEventLog.push(e.type));
const onError = () => {
assert.ok(false, 'no errors');
finish();
};
const onTimeupdate = () => {
videojs.log(player.currentTime(), player.currentSrc());
if (player.currentTime() > 21) {
seenBeforePreroll.forEach(event => {
assert.ok(!/^ad/.test(event), event + ' has no ad prefix before preroll');
assert.ok(!/^content/.test(event), event + ' has no content prefix before preroll');
});
seenDuringPreroll.forEach(event => {
assert.ok(/^ad/.test(event), event + ' has ad prefix during preroll');
});
seenAfterPreroll.forEach(event => {
assert.ok(!/^ad/.test(event), event + ' has no ad prefix after preroll');
assert.ok(!/^content/.test(event), event + ' has no content prefix after preroll');
});
seenDuringMidroll.forEach(event => {
assert.ok(/^ad/.test(event), event + ' has ad prefix during midroll');
});
seenAfterMidroll.forEach(event => {
assert.ok(!/^ad/.test(event), event + ' has no ad prefix after midroll');
assert.ok(!/^content/.test(event), event + ' has no content prefix after midroll');
});
finish();
}
};
finish = () => {
player.off('timeupdate', onTimeupdate);
player.off(['error', 'aderror'], onError);
done();
};
player.on(['error', 'aderror'], onError);
player.on('timeupdate', onTimeupdate);
player.ready(player.play);
});