diff --git a/cms/djangoapps/contentstore/features/video.feature b/cms/djangoapps/contentstore/features/video.feature index a47b2313c6..8486f6ec82 100644 --- a/cms/djangoapps/contentstore/features/video.feature +++ b/cms/djangoapps/contentstore/features/video.feature @@ -69,3 +69,11 @@ Feature: CMS.Video Component # Then Captions become "invisible" after 3 seconds # And I hover over button "volume" # Then Captions are "invisible" + + # 10 + #Scenario: When enter key is pressed on a caption shows an outline around it + # Given I have created a Video component with subtitles + # And Make sure captions are opened + # Then I focus on caption line with data-index 0 + # Then I press "enter" button on caption line with data-index 0 + # And I see caption line with data-index 0 has class "focused" diff --git a/cms/djangoapps/contentstore/features/video.py b/cms/djangoapps/contentstore/features/video.py index 80963ab556..a95191ec6d 100644 --- a/cms/djangoapps/contentstore/features/video.py +++ b/cms/djangoapps/contentstore/features/video.py @@ -3,6 +3,7 @@ from lettuce import world, step from xmodule.modulestore import Location from contentstore.utils import get_modulestore +from selenium.webdriver.common.keys import Keys BUTTONS = { 'CC': '.hide-subtitles', @@ -154,3 +155,25 @@ def check_captions_visibility_state(_step, visibility_state, timeout): assert world.css_visible('.subtitles') else: assert not world.css_visible('.subtitles') + + +def find_caption_line_by_data_index(index): + SELECTOR = ".subtitles > li[data-index='{index}']".format(index=index) + return world.css_find(SELECTOR).first + + +@step('I focus on caption line with data-index (\d+)$') +def focus_on_caption_line(_step, index): + find_caption_line_by_data_index(int(index.strip()))._element.send_keys(Keys.TAB) + + +@step('I press "enter" button on caption line with data-index (\d+)$') +def focus_on_caption_line(_step, index): + find_caption_line_by_data_index(int(index.strip()))._element.send_keys(Keys.ENTER) + + +@step('I see caption line with data-index (\d+) has class "([^"]*)"$') +def caption_line_has_class(_step, index, className): + SELECTOR = ".subtitles > li[data-index='{index}']".format(index=int(index.strip())) + world.css_has_class(SELECTOR, className.strip()) + diff --git a/common/lib/xmodule/xmodule/js/spec/video/video_caption_spec.js b/common/lib/xmodule/xmodule/js/spec/video/video_caption_spec.js index f995717d4d..d8b704b043 100644 --- a/common/lib/xmodule/xmodule/js/spec/video/video_caption_spec.js +++ b/common/lib/xmodule/xmodule/js/spec/video/video_caption_spec.js @@ -756,44 +756,6 @@ expect(videoCaption.autoScrolling).toBe(true); }); }); - - describe('when enter key is pressed on a caption', function () { - - var assertCaptions = function (expectations) { - - waitsFor(function () { - return videoCaption.captions.length; - }, "Captions are not loaded.", WAIT_TIMEOUT); - - runs(expectations); - }, - initializeClick = function () { - var e, - subDataLiIdx__0 = $('.subtitles li[data-index=0]'); - - spyOn(videoCaption, 'seekPlayer').andCallThrough(); - videoCaption.isMouseFocus = false; - subDataLiIdx__0.trigger(jQuery.Event('focus')); - e = jQuery.Event('keydown'); - e.which = 13; // ENTER key - subDataLiIdx__0.trigger(e); - }; - - it('shows an outline around it' , function () { - assertCaptions(function() { - var subDataLiIdx__0 = $('.subtitles li[data-index=0]'); - initializeClick(); - expect(subDataLiIdx__0).toHaveClass('focused'); - }); - }); - - it('calls seekPlayer', function () { - assertCaptions(function() { - initializeClick(); - expect(videoCaption.seekPlayer).toHaveBeenCalled(); - }); - }); - }); }); });