diff --git a/test/test-helpers.js b/test/test-helpers.js index 75639189..62bbd318 100644 --- a/test/test-helpers.js +++ b/test/test-helpers.js @@ -53,7 +53,7 @@ const TestHelpers = { wavesurfer: { src: "live", waveColor: "#36393b", - progressColor: "#black", + progressColor: "black", debug: true, cursorWidth: 1, msDisplayMax: 20, @@ -71,6 +71,35 @@ const TestHelpers = { return videojs(elementTag.id, playerOptions); }, + makeAudioOnlyPlayer() { + var tag = TestHelpers.makeTag('audio', 'audioOnly'); + return this.makePlayer(tag, { + controls: true, + autoplay: false, + fluid: false, + loop: false, + width: 500, + height: 400, + plugins: { + wavesurfer: { + src: "live", + waveColor: "#36393b", + progressColor: "black", + debug: true, + cursorWidth: 1, + msDisplayMax: 20, + hideScrollbar: true + }, + record: { + audio: true, + video: false, + maxLength: 5, + debug: true + } + } + }); + }, + makeVideoOnlyPlayer() { var tag = TestHelpers.makeTag('video', 'videoOnly'); return this.makePlayer(tag, { diff --git a/test/videojs.record.spec.js b/test/videojs.record.spec.js index 4392699e..a88a139c 100644 --- a/test/videojs.record.spec.js +++ b/test/videojs.record.spec.js @@ -73,7 +73,7 @@ describe('Record', function() { }); /** @test {Record} */ - it('should run as a image-only plugin', function(done) { + it('should run as an image-only plugin', function(done) { // create image-only plugin player = TestHelpers.makeImageOnlyPlayer(); // workaround weird test TypeError: Cannot read property 'videoWidth' of null tech error @@ -81,7 +81,7 @@ describe('Record', function() { player.recordCanvas.el().firstChild.videoHeight = 240; player.one('finishRecord', function() { - // received an base-64 encoded PNG string + // received a base-64 encoded PNG string expect(player.recordedData.startsWith('data:image/png;base64,i')).toBeTrue(); }); @@ -105,4 +105,39 @@ describe('Record', function() { player.record().getDevice(); }); }); + + /** @test {Record} */ + it('should run as an audio-only plugin', function(done) { + // create audio-only plugin + player = TestHelpers.makeAudioOnlyPlayer(); + + player.one('finishRecord', function() { + // received a blob file + expect(player.recordedData instanceof Blob).toBeTruthy(); + + // wait till it's loaded before destroying + // (XXX: create new event for this) + setTimeout(done, 1000); + }); + + player.one('startRecord', function() { + // record some audio + setTimeout(function() { + player.record().stop(); + }, 2000); + }); + + player.one('deviceReady', function() { + // create snapshot + player.record().start(); + }); + + player.one('ready', function() { + // correct device button icon + expect(player.deviceButton.buildCSSClass().endsWith('audio-perm')).toBeTrue(); + + // start device + player.record().getDevice(); + }); + }); });