119 lines
3.7 KiB
Python
119 lines
3.7 KiB
Python
#pylint: disable=C0111
|
|
|
|
from lettuce import world, step
|
|
from lettuce.django import django_url
|
|
from common import i_am_registered_for_the_course, section_location
|
|
from django.utils.translation import ugettext as _
|
|
|
|
############### ACTIONS ####################
|
|
|
|
HTML5_SOURCES = [
|
|
'https://s3.amazonaws.com/edx-course-videos/edx-intro/edX-FA12-cware-1_100.mp4',
|
|
'https://s3.amazonaws.com/edx-course-videos/edx-intro/edX-FA12-cware-1_100.webm',
|
|
'https://s3.amazonaws.com/edx-course-videos/edx-intro/edX-FA12-cware-1_100.ogv'
|
|
]
|
|
HTML5_SOURCES_INCORRECT = [
|
|
'https://s3.amazonaws.com/edx-course-videos/edx-intro/edX-FA12-cware-1_100.mp99'
|
|
]
|
|
|
|
@step('when I view the (.*) it does not have autoplay enabled$')
|
|
def does_not_autoplay(_step, video_type):
|
|
assert(world.css_find('.%s' % video_type)[0]['data-autoplay'] == 'False')
|
|
|
|
|
|
@step('the course has a Video component in (.*) mode$')
|
|
def view_video(_step, player_mode):
|
|
coursenum = 'test_course'
|
|
i_am_registered_for_the_course(step, coursenum)
|
|
|
|
# Make sure we have a video
|
|
add_video_to_course(coursenum, player_mode.lower())
|
|
chapter_name = world.scenario_dict['SECTION'].display_name.replace(" ", "_")
|
|
section_name = chapter_name
|
|
url = django_url('/courses/%s/%s/%s/courseware/%s/%s' %
|
|
(world.scenario_dict['COURSE'].org, world.scenario_dict['COURSE'].number, world.scenario_dict['COURSE'].display_name.replace(' ', '_'),
|
|
chapter_name, section_name,))
|
|
world.browser.visit(url)
|
|
|
|
|
|
def add_video_to_course(course, player_mode):
|
|
category = 'video'
|
|
|
|
kwargs = {
|
|
'parent_location': section_location(course),
|
|
'category': category,
|
|
'display_name': 'Video'
|
|
}
|
|
|
|
if player_mode == 'html5':
|
|
kwargs.update({
|
|
'metadata': {
|
|
'youtube_id_1_0': '',
|
|
'youtube_id_0_75': '',
|
|
'youtube_id_1_25': '',
|
|
'youtube_id_1_5': '',
|
|
'html5_sources': HTML5_SOURCES
|
|
}
|
|
})
|
|
if player_mode == 'youtube_html5':
|
|
kwargs.update({
|
|
'metadata': {
|
|
'html5_sources': HTML5_SOURCES
|
|
}
|
|
})
|
|
if player_mode == 'youtube_html5_unsupported_video':
|
|
kwargs.update({
|
|
'metadata': {
|
|
'html5_sources': HTML5_SOURCES_INCORRECT
|
|
}
|
|
})
|
|
if player_mode == 'html5_unsupported_video':
|
|
kwargs.update({
|
|
'metadata': {
|
|
'youtube_id_1_0': '',
|
|
'youtube_id_0_75': '',
|
|
'youtube_id_1_25': '',
|
|
'youtube_id_1_5': '',
|
|
'html5_sources': HTML5_SOURCES_INCORRECT
|
|
}
|
|
})
|
|
|
|
world.ItemFactory.create(**kwargs)
|
|
|
|
|
|
@step('youtube server is up and response time is (.*) seconds$')
|
|
def set_youtube_response_timeout(_step, time):
|
|
world.youtube_server.time_to_response = time
|
|
|
|
|
|
@step('when I view the video it has rendered in (.*) mode$')
|
|
def video_is_rendered(_step, mode):
|
|
modes = {
|
|
'html5': 'video',
|
|
'youtube': 'iframe'
|
|
}
|
|
html_tag = modes[mode.lower()]
|
|
assert world.css_find('.video {0}'.format(html_tag)).first
|
|
assert world.is_css_present('.speed_link')
|
|
|
|
|
|
@step('all sources are correct$')
|
|
def all_sources_are_correct(_step):
|
|
sources = world.css_find('.video video source')
|
|
assert set(source['src'] for source in sources) == set(HTML5_SOURCES)
|
|
|
|
|
|
@step('error message is shown$')
|
|
def error_message_is_shown(_step):
|
|
selector = '.video .video-player h3'
|
|
assert world.css_visible(selector)
|
|
|
|
|
|
@step('error message has correct text$')
|
|
def error_message_has_correct_text(_step):
|
|
selector = '.video .video-player h3'
|
|
text = _('ERROR: No playable video sources found!')
|
|
assert world.css_has_text(selector, text)
|
|
|
|
|