Commit b92d239e by Christine Lytwynec

Merge pull request #10081 from edx/clytwynec/update-bokchoy-0.4.6

Clytwynec/update bokchoy 0.4.6
parents 1030b277 5e133044
"""
Accessibility tests for LMS dashboard page.
Run just this test with:
SELENIUM_BROWSER=phantomjs paver test_bokchoy -d accessibility -t test_lms_dashboard_a11y.py
"""
from ..tests.lms.test_lms_dashboard import BaseLmsDashboardTest
class LmsDashboardAxsTest(BaseLmsDashboardTest):
"""
Class to test lms student dashboard accessibility.
"""
def test_dashboard_course_listings_axs(self):
"""
Test the accessibility of the course listings
"""
course_listings = self.dashboard_page.get_course_listings()
self.assertEqual(len(course_listings), 1)
# There are several existing color contrast errors on this page,
# we will ignore this error in the test until we fix them.
self.dashboard_page.a11y_audit.config.set_rules({
"ignore": ['color-contrast'],
})
self.dashboard_page.a11y_audit.check_for_accessibility_errors()
"""
Accessibility tests for Studio Library pages.
Run just this test with:
SELENIUM_BROWSER=phantomjs paver test_bokchoy -d accessibility -t test_studio_library_a11y.py
"""
from ..tests.studio.base_studio_test import StudioLibraryTest
from ..pages.studio.library import LibraryEditPage
class StudioLibraryAxsTest(StudioLibraryTest):
"""
Class to test Studio pages accessibility.
"""
def test_lib_edit_page_axs(self):
"""
Check accessibility of LibraryEditPage.
"""
lib_page = LibraryEditPage(self.browser, self.library_key)
lib_page.visit()
lib_page.wait_until_ready()
# There are several existing color contrast errors on this page,
# we will ignore this error in the test until we fix them.
lib_page.a11y_audit.config.set_rules({
"ignore": ['color-contrast'],
})
lib_page.a11y_audit.check_for_accessibility_errors()
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
End-to-end tests for the main LMS Dashboard (aka, Student Dashboard). End-to-end tests for the main LMS Dashboard (aka, Student Dashboard).
""" """
import datetime import datetime
from nose.plugins.attrib import attr
from ..helpers import UniqueCourseTest from ..helpers import UniqueCourseTest
from ...fixtures.course import CourseFixture from ...fixtures.course import CourseFixture
...@@ -217,3 +218,25 @@ class LmsDashboardPageTest(BaseLmsDashboardTest): ...@@ -217,3 +218,25 @@ class LmsDashboardPageTest(BaseLmsDashboardTest):
# Test that proper course date with 'starts' message is displayed if a course is about to start in future, # Test that proper course date with 'starts' message is displayed if a course is about to start in future,
# and course starts within 5 days # and course starts within 5 days
self.assertEqual(course_date, expected_course_date) self.assertEqual(course_date, expected_course_date)
@attr('a11y')
class LmsDashboardA11yTest(BaseLmsDashboardTest):
"""
Class to test lms student dashboard accessibility.
"""
def test_dashboard_course_listings_a11y(self):
"""
Test the accessibility of the course listings
"""
course_listings = self.dashboard_page.get_course_listings()
self.assertEqual(len(course_listings), 1)
# There are several existing color contrast errors on this page,
# we will ignore this error in the test until we fix them.
self.dashboard_page.a11y_audit.config.set_rules({
"ignore": ['color-contrast'],
})
self.dashboard_page.a11y_audit.check_for_accessibility_errors()
...@@ -637,3 +637,26 @@ class LibraryUsersPageTest(StudioLibraryTest): ...@@ -637,3 +637,26 @@ class LibraryUsersPageTest(StudioLibraryTest):
self.assertEqual(len(self.page.users), 1) self.assertEqual(len(self.page.users), 1)
user = self.page.users[0] user = self.page.users[0]
self.assertTrue(user.is_current_user) self.assertTrue(user.is_current_user)
@attr('a11y')
class StudioLibraryA11yTest(StudioLibraryTest):
"""
Class to test Studio pages accessibility.
"""
def test_lib_edit_page_a11y(self):
"""
Check accessibility of LibraryEditPage.
"""
lib_page = LibraryEditPage(self.browser, self.library_key)
lib_page.visit()
lib_page.wait_until_ready()
# There are several existing color contrast errors on this page,
# we will ignore this error in the test until we fix them.
lib_page.a11y_audit.config.set_rules({
"ignore": ['color-contrast'],
})
lib_page.a11y_audit.check_for_accessibility_errors()
...@@ -3,6 +3,9 @@ ...@@ -3,6 +3,9 @@
""" """
Acceptance tests for CMS Video Module. Acceptance tests for CMS Video Module.
""" """
import os
from mock import patch
from nose.plugins.attrib import attr from nose.plugins.attrib import attr
from unittest import skipIf from unittest import skipIf
from ...pages.studio.auto_auth import AutoAuthPage from ...pages.studio.auto_auth import AutoAuthPage
...@@ -42,6 +45,38 @@ class CMSVideoBaseTest(UniqueCourseTest): ...@@ -42,6 +45,38 @@ class CMSVideoBaseTest(UniqueCourseTest):
) )
self.assets = [] self.assets = []
self.addCleanup(YouTubeStubConfig.reset)
def _create_course_unit(self, youtube_stub_config=None, subtitles=False):
"""
Create a Studio Video Course Unit and Navigate to it.
Arguments:
youtube_stub_config (dict)
subtitles (bool)
"""
if youtube_stub_config:
YouTubeStubConfig.configure(youtube_stub_config)
if subtitles:
self.assets.append('subs_3_yD_cEKoCk.srt.sjson')
self.navigate_to_course_unit()
def _create_video(self):
"""
Create Xblock Video Component.
"""
self.video.create_video()
video_xblocks = self.video.xblocks()
# Total video xblock components count should be equals to 2
# Why 2? One video component is created by default for each test. Please see
# test_studio_video_module.py:CMSVideoTest._create_course_unit
# And we are creating second video component here.
self.assertTrue(video_xblocks == 2)
def _install_course_fixture(self): def _install_course_fixture(self):
""" """
...@@ -132,42 +167,6 @@ class CMSVideoTest(CMSVideoBaseTest): ...@@ -132,42 +167,6 @@ class CMSVideoTest(CMSVideoBaseTest):
CMS Video Test Class CMS Video Test Class
""" """
def setUp(self):
super(CMSVideoTest, self).setUp()
self.addCleanup(YouTubeStubConfig.reset)
def _create_course_unit(self, youtube_stub_config=None, subtitles=False):
"""
Create a Studio Video Course Unit and Navigate to it.
Arguments:
youtube_stub_config (dict)
subtitles (bool)
"""
if youtube_stub_config:
YouTubeStubConfig.configure(youtube_stub_config)
if subtitles:
self.assets.append('subs_3_yD_cEKoCk.srt.sjson')
self.navigate_to_course_unit()
def _create_video(self):
"""
Create Xblock Video Component.
"""
self.video.create_video()
video_xblocks = self.video.xblocks()
# Total video xblock components count should be equals to 2
# Why 2? One video component is created by default for each test. Please see
# test_studio_video_module.py:CMSVideoTest._create_course_unit
# And we are creating second video component here.
self.assertTrue(video_xblocks == 2)
def test_youtube_stub_proxy(self): def test_youtube_stub_proxy(self):
""" """
Scenario: YouTube stub server proxies YouTube API correctly Scenario: YouTube stub server proxies YouTube API correctly
...@@ -320,3 +319,31 @@ class CMSVideoTest(CMSVideoBaseTest): ...@@ -320,3 +319,31 @@ class CMSVideoTest(CMSVideoBaseTest):
self.save_unit_settings() self.save_unit_settings()
self.video.click_player_button('play') self.video.click_player_button('play')
@attr('a11y')
class CMSVideoA11yTest(CMSVideoBaseTest):
"""
CMS Video Accessibility Test Class
"""
def setUp(self):
browser = os.environ.get('SELENIUM_BROWSER', 'firefox')
# the a11y tests run in CI under phantomjs which doesn't
# support html5 video or flash player, so the video tests
# don't work in it. We still want to be able to run these
# tests in CI, so override the browser setting if it is
# phantomjs.
if browser == 'phantomjs':
browser = 'firefox'
with patch.dict(os.environ, {'SELENIUM_BROWSER': browser}):
super(CMSVideoA11yTest, self).setUp()
def test_video_player_a11y(self):
# Limit the scope of the audit to the video player only.
self.outline.a11y_audit.config.set_scope(include=["div.video"])
self._create_course_unit()
self.outline.a11y_audit.check_for_accessibility_errors()
...@@ -119,7 +119,7 @@ django_debug_toolbar==1.3.2 ...@@ -119,7 +119,7 @@ django_debug_toolbar==1.3.2
# Used for testing # Used for testing
astroid==1.3.8 astroid==1.3.8
bok-choy==0.4.5 bok-choy==0.4.6
chrono==1.0.2 chrono==1.0.2
coverage==4.0 coverage==4.0
ddt==0.8.0 ddt==0.8.0
......
...@@ -3,4 +3,4 @@ echo "Setting up for accessibility tests..." ...@@ -3,4 +3,4 @@ echo "Setting up for accessibility tests..."
source scripts/jenkins-common.sh source scripts/jenkins-common.sh
echo "Running explicit accessibility tests..." echo "Running explicit accessibility tests..."
SELENIUM_BROWSER=phantomjs paver test_bokchoy -d accessibility SELENIUM_BROWSER=phantomjs paver test_bokchoy --extra_args="-a 'a11y'"
...@@ -172,7 +172,7 @@ END ...@@ -172,7 +172,7 @@ END
;; ;;
"7") "7")
paver test_bokchoy --extra_args="-a shard_1=False,shard_2=False,shard_3=False,shard_4=False,shard_5=False,shard_6=False --with-flaky" paver test_bokchoy --extra_args="-a shard_1=False,shard_2=False,shard_3=False,shard_4=False,shard_5=False,shard_6=False,a11y=False --with-flaky"
;; ;;
# Default case because if we later define another bok-choy shard on Jenkins # Default case because if we later define another bok-choy shard on Jenkins
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment