Merge branch 'release'
Conflicts: lms/djangoapps/courseware/features/video.feature
This commit is contained in:
@@ -73,7 +73,10 @@ function (VideoPlayer, VideoStorage) {
|
||||
setSpeed: setSpeed,
|
||||
trigger: trigger,
|
||||
youtubeId: youtubeId
|
||||
};
|
||||
},
|
||||
|
||||
_youtubeApiDeferred = null,
|
||||
_oldOnYouTubeIframeAPIReady;
|
||||
|
||||
Initialize.prototype = methodsDict;
|
||||
|
||||
@@ -112,7 +115,7 @@ function (VideoPlayer, VideoStorage) {
|
||||
// Require JS. At the time when we reach this code, the stand alone
|
||||
// HTML5 player is already loaded, so no further testing in that case
|
||||
// is required.
|
||||
var video, onYTApiReady;
|
||||
var video, onYTApiReady, setupOnYouTubeIframeAPIReady;
|
||||
|
||||
if (state.videoType === 'youtube') {
|
||||
state.youtubeApiAvailable = false;
|
||||
@@ -129,13 +132,65 @@ function (VideoPlayer, VideoStorage) {
|
||||
};
|
||||
|
||||
if (window.YT) {
|
||||
window.YT.ready(onYTApiReady);
|
||||
} else {
|
||||
window.onYouTubeIframeAPIReady = function () {
|
||||
// If we have a Deferred object responsible for calling OnYouTubeIframeAPIReady
|
||||
// callbacks, make sure that they have all been called by trying to resolve the
|
||||
// Deferred object. Upon resolving, all the OnYouTubeIframeAPIReady will be
|
||||
// called. If the object has been already resolved, the callbacks will not
|
||||
// be called a second time.
|
||||
if (_youtubeApiDeferred) {
|
||||
_youtubeApiDeferred.resolve();
|
||||
}
|
||||
|
||||
window.YT.ready(function () {
|
||||
onYTApiReady();
|
||||
});
|
||||
} else {
|
||||
// There is only one global variable window.onYouTubeIframeAPIReady which
|
||||
// is supposed to be a function that will be called by the YouTube API
|
||||
// when it finished initializing. This function will update this global function
|
||||
// so that it resolves our Deferred object, which will call all of the
|
||||
// OnYouTubeIframeAPIReady callbacks.
|
||||
//
|
||||
// If this global function is already defined, we store it first, and make
|
||||
// sure that it gets executed when our Deferred object is resolved.
|
||||
setupOnYouTubeIframeAPIReady = function () {
|
||||
_oldOnYouTubeIframeAPIReady = window.onYouTubeIframeAPIReady || undefined;
|
||||
|
||||
window.onYouTubeIframeAPIReady = function () {
|
||||
window.onYouTubeIframeAPIReady.resolve();
|
||||
};
|
||||
|
||||
window.onYouTubeIframeAPIReady.resolve = _youtubeApiDeferred.resolve;
|
||||
window.onYouTubeIframeAPIReady.done = _youtubeApiDeferred.done;
|
||||
|
||||
if (_oldOnYouTubeIframeAPIReady) {
|
||||
window.onYouTubeIframeAPIReady.done(_oldOnYouTubeIframeAPIReady);
|
||||
}
|
||||
};
|
||||
|
||||
_loadYoutubeApi(state);
|
||||
// If a Deferred object hasn't been created yet, create one now. It will
|
||||
// be responsible for calling OnYouTubeIframeAPIReady callbacks once the
|
||||
// YouTube API loads. After creating the Deferred object, load the YouTube
|
||||
// API.
|
||||
if (!_youtubeApiDeferred) {
|
||||
_youtubeApiDeferred = $.Deferred();
|
||||
setupOnYouTubeIframeAPIReady();
|
||||
_loadYoutubeApi(state);
|
||||
} else if (!window.onYouTubeIframeAPIReady || !window.onYouTubeIframeAPIReady.done) {
|
||||
// The Deferred object could have been already defined in a previous
|
||||
// initialization of the video module. However, since then the global variable
|
||||
// window.onYouTubeIframeAPIReady could have been overwritten. If so,
|
||||
// we should set it up again.
|
||||
setupOnYouTubeIframeAPIReady();
|
||||
}
|
||||
|
||||
// Attach a callback to our Deferred object to be called once the
|
||||
// YouTube API loads.
|
||||
window.onYouTubeIframeAPIReady.done(function () {
|
||||
window.YT.ready(function () {
|
||||
onYTApiReady();
|
||||
});
|
||||
});
|
||||
}
|
||||
} else {
|
||||
video = VideoPlayer(state);
|
||||
|
||||
@@ -26,37 +26,59 @@ Feature: LMS Video component
|
||||
Given the course has a Video component in "HTML5" mode
|
||||
Then when I view the video it does not have autoplay enabled
|
||||
|
||||
# 4
|
||||
# 3
|
||||
# Youtube testing
|
||||
Scenario: Video component is fully rendered in the LMS in Youtube mode with HTML5 sources
|
||||
Given youtube server is up and response time is 0.4 seconds
|
||||
And the course has a Video component in "Youtube_HTML5" mode
|
||||
When the video has rendered in "Youtube" mode
|
||||
|
||||
# 5
|
||||
# 4
|
||||
Scenario: Video component is not rendered in the LMS in Youtube mode with HTML5 sources
|
||||
Given youtube server is up and response time is 2 seconds
|
||||
And the course has a Video component in "Youtube_HTML5" mode
|
||||
When the video has rendered in "HTML5" mode
|
||||
|
||||
# 6
|
||||
# 5
|
||||
Scenario: Video component is rendered in the LMS in Youtube mode without HTML5 sources
|
||||
Given youtube server is up and response time is 2 seconds
|
||||
And the course has a Video component in "Youtube" mode
|
||||
When the video has rendered in "Youtube" mode
|
||||
|
||||
# 7
|
||||
# 6
|
||||
Scenario: Video component is rendered in the LMS in Youtube mode with HTML5 sources that doesn't supported by browser
|
||||
Given youtube server is up and response time is 2 seconds
|
||||
And the course has a Video component in "Youtube_HTML5_Unsupported_Video" mode
|
||||
When the video has rendered in "Youtube" mode
|
||||
|
||||
# 8
|
||||
# 7
|
||||
Scenario: Video component is rendered in the LMS in HTML5 mode with HTML5 sources that doesn't supported by browser
|
||||
Given the course has a Video component in "HTML5_Unsupported_Video" mode
|
||||
Then error message is shown
|
||||
And error message has correct text
|
||||
|
||||
# 8
|
||||
Scenario: Multiple videos in sequentials all load and work, switching between sequentials
|
||||
Given I am registered for the course "test_course"
|
||||
And it has a video "A" in "Youtube" mode in position "1" of sequential
|
||||
And a video "B" in "HTML5" mode in position "1" of sequential
|
||||
And a video "C" in "Youtube" mode in position "1" of sequential
|
||||
And a video "D" in "Youtube" mode in position "1" of sequential
|
||||
And a video "E" in "Youtube" mode in position "2" of sequential
|
||||
And a video "F" in "Youtube" mode in position "2" of sequential
|
||||
And a video "G" in "Youtube" mode in position "2" of sequential
|
||||
And I open the section with videos
|
||||
Then video "A" should start playing at speed "1.0"
|
||||
And I select the "2.0" speed on video "B"
|
||||
And I select the "2.0" speed on video "C"
|
||||
And I select the "2.0" speed on video "D"
|
||||
When I open video "E"
|
||||
Then video "E" should start playing at speed "2.0"
|
||||
And I select the "1.0" speed on video "F"
|
||||
And I select the "1.0" speed on video "G"
|
||||
When I open video "A"
|
||||
Then video "A" should start playing at speed "2.0"
|
||||
|
||||
# 9
|
||||
Scenario: Video component stores speed correctly when each video is in separate sequence
|
||||
Given I am registered for the course "test_course"
|
||||
@@ -94,7 +116,7 @@ Feature: LMS Video component
|
||||
And I select language with code "en"
|
||||
And I see "Hi, welcome to Edx." text in the captions
|
||||
|
||||
# 11
|
||||
# 10
|
||||
Scenario: CC button works correctly w/o english transcript in HTML5 mode of Video component
|
||||
Given I am registered for the course "test_course"
|
||||
And I have a "chinese_transcripts.srt" transcript file in assets
|
||||
@@ -104,7 +126,7 @@ Feature: LMS Video component
|
||||
And I make sure captions are opened
|
||||
Then I see "好 各位同学" text in the captions
|
||||
|
||||
# 12
|
||||
# 11
|
||||
Scenario: CC button works correctly only w/ english transcript in HTML5 mode of Video component
|
||||
Given I am registered for the course "test_course"
|
||||
And I have a "subs_OEoXaMPEzfM.srt.sjson" transcript file in assets
|
||||
@@ -114,7 +136,7 @@ Feature: LMS Video component
|
||||
And I make sure captions are opened
|
||||
Then I see "Hi, welcome to Edx." text in the captions
|
||||
|
||||
# 13
|
||||
# 12
|
||||
Scenario: CC button works correctly w/o english transcript in Youtube mode of Video component
|
||||
Given I am registered for the course "test_course"
|
||||
And I have a "chinese_transcripts.srt" transcript file in assets
|
||||
@@ -124,7 +146,7 @@ Feature: LMS Video component
|
||||
And I make sure captions are opened
|
||||
Then I see "好 各位同学" text in the captions
|
||||
|
||||
# 14
|
||||
# 13
|
||||
Scenario: CC button works correctly if transcripts and sub fields are empty, but transcript file exists in assets (Youtube mode of Video component)
|
||||
Given I am registered for the course "test_course"
|
||||
And I have a "subs_OEoXaMPEzfM.srt.sjson" transcript file in assets
|
||||
@@ -132,12 +154,12 @@ Feature: LMS Video component
|
||||
And I make sure captions are opened
|
||||
Then I see "Hi, welcome to Edx." text in the captions
|
||||
|
||||
# 15
|
||||
# 14
|
||||
Scenario: CC button is hidden if no translations
|
||||
Given the course has a Video component in "Youtube" mode
|
||||
Then button "CC" is hidden
|
||||
|
||||
# 16
|
||||
# 15
|
||||
Scenario: Video is aligned correctly if transcript is visible in fullscreen mode
|
||||
Given I am registered for the course "test_course"
|
||||
And I have a "subs_OEoXaMPEzfM.srt.sjson" transcript file in assets
|
||||
@@ -148,13 +170,13 @@ Feature: LMS Video component
|
||||
And I click video button "fullscreen"
|
||||
Then I see video aligned correctly with enabled transcript
|
||||
|
||||
# 17
|
||||
# 16
|
||||
Scenario: Video is aligned correctly if transcript is hidden in fullscreen mode
|
||||
Given the course has a Video component in "Youtube" mode
|
||||
And I click video button "fullscreen"
|
||||
Then I see video aligned correctly without enabled transcript
|
||||
|
||||
# 18
|
||||
# 17
|
||||
Scenario: Video is aligned correctly on transcript toggle in fullscreen mode
|
||||
Given I am registered for the course "test_course"
|
||||
And I have a "subs_OEoXaMPEzfM.srt.sjson" transcript file in assets
|
||||
@@ -167,7 +189,7 @@ Feature: LMS Video component
|
||||
And I click video button "CC"
|
||||
Then I see video aligned correctly without enabled transcript
|
||||
|
||||
# 19
|
||||
# 18
|
||||
Scenario: Download Transcript button works correctly in Video component
|
||||
Given I am registered for the course "test_course"
|
||||
And I have a "subs_OEoXaMPEzfM.srt.sjson" transcript file in assets
|
||||
@@ -205,7 +227,7 @@ Feature: LMS Video component
|
||||
# Then I see "Hi, welcome to Edx." text in the captions
|
||||
# And I see duration "1:00"
|
||||
|
||||
# 21
|
||||
# 20
|
||||
Scenario: Download button works correctly for non-english transcript in Youtube mode of Video component
|
||||
Given I am registered for the course "test_course"
|
||||
And I have a "chinese_transcripts.srt" transcript file in assets
|
||||
@@ -218,7 +240,7 @@ Feature: LMS Video component
|
||||
And I see "好 各位同学" text in the captions
|
||||
Then I can download transcript in "srt" format that has text "好 各位同学"
|
||||
|
||||
# 22
|
||||
# 21
|
||||
Scenario: Download button works correctly for non-english transcript in HTML5 mode of Video component
|
||||
Given I am registered for the course "test_course"
|
||||
And I have a "chinese_transcripts.srt" transcript file in assets
|
||||
@@ -231,7 +253,7 @@ Feature: LMS Video component
|
||||
And I see "好 各位同学" text in the captions
|
||||
Then I can download transcript in "srt" format that has text "好 各位同学"
|
||||
|
||||
# 23
|
||||
# 22
|
||||
Scenario: Download button works correctly w/o english transcript in HTML5 mode of Video component
|
||||
Given I am registered for the course "test_course"
|
||||
And I have a "chinese_transcripts.srt" transcript file in assets
|
||||
@@ -241,7 +263,7 @@ Feature: LMS Video component
|
||||
And I see "好 各位同学" text in the captions
|
||||
Then I can download transcript in "srt" format that has text "好 各位同学"
|
||||
|
||||
# 24
|
||||
# 23
|
||||
Scenario: Download button works correctly w/o english transcript in Youtube mode of Video component
|
||||
Given I am registered for the course "test_course"
|
||||
And I have a "chinese_transcripts.srt" transcript file in assets
|
||||
@@ -251,7 +273,7 @@ Feature: LMS Video component
|
||||
And I see "好 各位同学" text in the captions
|
||||
Then I can download transcript in "srt" format that has text "好 各位同学"
|
||||
|
||||
# 25
|
||||
# 24
|
||||
Scenario: Verify that each video in each sub-section includes a transcript for non-Youtube countries.
|
||||
Given youtube server is up and response time is 2 seconds
|
||||
And I am registered for the course "test_course"
|
||||
|
||||
Reference in New Issue
Block a user