From e7e1f647aac912f7e3caa0a02133dd71a395e5f8 Mon Sep 17 00:00:00 2001 From: ssemenova Date: Thu, 2 Jun 2016 09:55:11 -0400 Subject: [PATCH] replace positive tab index values in the platform TNL-4705 --- .../acceptance/pages/lms/textbook_view.py | 28 ++++++++ .../{textbooks.py => textbook_upload.py} | 14 +++- .../tests/studio/test_studio_general.py | 4 +- .../tests/studio/test_studio_textbooks.py | 58 ++++++++++++--- lms/templates/pdf_viewer.html | 70 +++++++++---------- lms/templates/provider_login.html | 6 +- lms/templates/static_pdfbook.html | 6 +- 7 files changed, 130 insertions(+), 56 deletions(-) create mode 100644 common/test/acceptance/pages/lms/textbook_view.py rename common/test/acceptance/pages/studio/{textbooks.py => textbook_upload.py} (83%) diff --git a/common/test/acceptance/pages/lms/textbook_view.py b/common/test/acceptance/pages/lms/textbook_view.py new file mode 100644 index 0000000000..6b946d96dd --- /dev/null +++ b/common/test/acceptance/pages/lms/textbook_view.py @@ -0,0 +1,28 @@ +""" +Course Textbooks page. +""" + +from .course_page import CoursePage +from bok_choy.promise import EmptyPromise + + +class TextbookViewPage(CoursePage): + """ + Course Textbooks page. + """ + + url_path = "pdfbook/0/" + + def is_browser_on_page(self): + return self.q(css='.book-sidebar').present + + def switch_to_pdf_frame(self, test): + """ + Waits for pdf frame to load, then switches driver to the frame + """ + EmptyPromise( + lambda: self.q(css='iframe').present, "Iframe loaded" + ).fulfill() + + driver = test.get_web_driver() + driver.switch_to_frame(driver.find_element_by_tag_name("iframe")) diff --git a/common/test/acceptance/pages/studio/textbooks.py b/common/test/acceptance/pages/studio/textbook_upload.py similarity index 83% rename from common/test/acceptance/pages/studio/textbooks.py rename to common/test/acceptance/pages/studio/textbook_upload.py index 76160a4dbd..e107eaf5b4 100644 --- a/common/test/acceptance/pages/studio/textbooks.py +++ b/common/test/acceptance/pages/studio/textbook_upload.py @@ -8,7 +8,7 @@ from ..common.utils import click_css from .course_page import CoursePage -class TextbooksPage(CoursePage): +class TextbookUploadPage(CoursePage): """ Course Textbooks page. """ @@ -41,7 +41,7 @@ class TextbooksPage(CoursePage): Uploads a pdf textbook. """ # If the pdf upload section has not yet been toggled on, click on the upload pdf button - test_dir = path(__file__).abspath().dirname().dirname().dirname() + test_dir = path(__file__).abspath().dirname().dirname().dirname().dirname() # pylint:disable=no-value-for-parameter file_path = test_dir + '/data/uploads/' + file_name click_css(self, ".edit-textbook .action-upload", require_notification=False) @@ -70,3 +70,13 @@ class TextbooksPage(CoursePage): return False return response.status_code == 200 + + def upload_new_textbook(self): + """ + Fills out form to upload a new textbook + """ + self.open_add_textbook_form() + self.upload_pdf_file('textbook.pdf') + self.set_input_field_value('.edit-textbook #textbook-name-input', 'book_1') + self.set_input_field_value('.edit-textbook #chapter1-name', 'chap_1') + self.click_textbook_submit_button() diff --git a/common/test/acceptance/tests/studio/test_studio_general.py b/common/test/acceptance/tests/studio/test_studio_general.py index 01910d0cf6..a2c18acb8e 100644 --- a/common/test/acceptance/tests/studio/test_studio_general.py +++ b/common/test/acceptance/tests/studio/test_studio_general.py @@ -18,7 +18,7 @@ from ...pages.studio.settings import SettingsPage from ...pages.studio.settings_advanced import AdvancedSettingsPage from ...pages.studio.settings_graders import GradingPage from ...pages.studio.signup import SignupPage -from ...pages.studio.textbooks import TextbooksPage +from ...pages.studio.textbook_upload import TextbookUploadPage from ...fixtures.course import XBlockFixtureDesc from base_studio_test import StudioCourseTest @@ -82,7 +82,7 @@ class CoursePagesTest(StudioCourseTest): # AssetIndexPage, # TODO: Skip testing this page due to FEDX-88 CourseUpdatesPage, PagesPage, ExportCoursePage, ImportCoursePage, CourseTeamPage, CourseOutlinePage, SettingsPage, - AdvancedSettingsPage, GradingPage, TextbooksPage + AdvancedSettingsPage, GradingPage, TextbookUploadPage ] ] diff --git a/common/test/acceptance/tests/studio/test_studio_textbooks.py b/common/test/acceptance/tests/studio/test_studio_textbooks.py index 3f2527c0bc..8726305eec 100644 --- a/common/test/acceptance/tests/studio/test_studio_textbooks.py +++ b/common/test/acceptance/tests/studio/test_studio_textbooks.py @@ -2,7 +2,8 @@ Acceptance tests for Studio related to the textbooks. """ from common.test.acceptance.tests.studio.base_studio_test import StudioCourseTest -from ...pages.studio.textbooks import TextbooksPage +from ...pages.studio.textbook_upload import TextbookUploadPage +from ...pages.lms.textbook_view import TextbookViewPage from ...tests.helpers import disable_animations from nose.plugins.attrib import attr @@ -17,15 +18,17 @@ class TextbooksTest(StudioCourseTest): Install a course with no content using a fixture. """ super(TextbooksTest, self).setUp(is_staff) - self.textbook_page = TextbooksPage( + self.textbook_upload_page = TextbookUploadPage( self.browser, self.course_info['org'], self.course_info['number'], self.course_info['run'] ) - self.textbook_page.visit() + self.textbook_upload_page.visit() disable_animations(self) + self.textbook_view_page = TextbookViewPage(self.browser, self.course_id) + def test_create_first_book_message(self): """ Scenario: A message is displayed on the textbooks page when there are no uploaded textbooks @@ -33,7 +36,7 @@ class TextbooksTest(StudioCourseTest): And I have not yet uploaded a textbook Then I see a message stating that I have not uploaded any textbooks """ - message = self.textbook_page.get_element_text('.wrapper-content .no-textbook-content') + message = self.textbook_upload_page.get_element_text('.wrapper-content .no-textbook-content') self.assertIn("You haven't added any textbooks", message) def test_new_textbook_upload(self): @@ -43,9 +46,44 @@ class TextbooksTest(StudioCourseTest): And I have uploaded a PDF textbook and save the new textbook information Then the "View Live" link contains a link to the textbook in the LMS """ - self.textbook_page.open_add_textbook_form() - self.textbook_page.upload_pdf_file('textbook.pdf') - self.textbook_page.set_input_field_value('.edit-textbook #textbook-name-input', 'book_1') - self.textbook_page.set_input_field_value('.edit-textbook #chapter1-name', 'chap_1') - self.textbook_page.click_textbook_submit_button() - self.assertTrue(self.textbook_page.is_view_live_link_worked()) + self.textbook_upload_page.upload_new_textbook() + self.assertTrue(self.textbook_upload_page.is_view_live_link_worked()) + + @attr('a11y') + def test_textbook_page_a11y(self): + """ + Uploads a new textbook + Runs an accessibility test on the textbook page in lms + """ + self.textbook_upload_page.upload_new_textbook() + self.textbook_view_page.visit() + + self.textbook_view_page.a11y_audit.config.set_rules({ + 'ignore': [ + 'color-contrast', # AC-500 + 'skip-link', # AC-501 + 'link-href', # AC-502 + 'section' # AC-503 + ], + }) + self.textbook_view_page.a11y_audit.check_for_accessibility_errors() + + @attr('a11y') + def test_pdf_viewer_a11y(self): + """ + Uploads a new textbook + Runs an accessibility test on the pdf viewer frame in lms + """ + self.textbook_upload_page.upload_new_textbook() + self.textbook_view_page.visit() + + self.textbook_view_page.switch_to_pdf_frame(self) + self.textbook_view_page.a11y_audit.config.set_rules({ + 'ignore': [ + 'html-lang', # AC-504 + 'meta-viewport', # AC-505 + 'skip-link', # AC-506 + 'link-href', # AC-507 + ], + }) + self.textbook_view_page.a11y_audit.check_for_accessibility_errors() diff --git a/lms/templates/pdf_viewer.html b/lms/templates/pdf_viewer.html index 9ef5d245ad..ff400b29f3 100644 --- a/lms/templates/pdf_viewer.html +++ b/lms/templates/pdf_viewer.html @@ -49,19 +49,19 @@ http://sourceforge.net/adobe/cmap/wiki/License/ <%static:js group='courseware'/> - +
- - -
@@ -79,72 +79,72 @@ http://sourceforge.net/adobe/cmap/wiki/License/