class DashboardTest(WebAppTest): """ Regression tests on LMS Dashboard """ def setUp(self): super(DashboardTest, self).setUp() studio_login = StudioLoginApi() studio_login.authenticate(self.browser) lms_login = LmsLoginApi() lms_login.authenticate(self.browser) self.studio_home_page = DashboardPageExtended(self.browser) self.course_info = get_course_info() self.studio_course_outline = CourseOutlinePageExtended( self.browser, self.course_info['org'], self.course_info['number'], self.course_info['run']) self.lms_courseware = CoursewarePageExtended( self.browser, get_course_key(self.course_info)) self.course_page = CourseInfoPageExtended(self.browser, get_course_info()) self.dashboard_page = DashboardPageExtended(self.browser) self.drupal_course_page = DemoCourseSelectionPage(self.browser) self.payment_page = PaymentPage(self.browser) self.dashboard_page.visit() @skipIf(LMS_BASE_URL != LMS_STAGE_BASE_URL, 'There is no resume button on sandbox') # LT-60 def test_resume_course(self): """ Verifies that user can successfully resume the course """ # Delete any existing sections self.studio_course_outline.visit() self.studio_course_outline.delete_all_sections() # Pre Reqs section_name = 'Section :{}'.format(uuid4().hex) self.studio_course_outline.add_section_with_name(section_name) self.assertIn( section_name, self.studio_course_outline.q(css='.incontext-editor-value').text) subsection_name = 'Subsection :{}'.format(uuid4().hex) self.studio_course_outline.add_subsection_with_name(subsection_name) self.assertIn( subsection_name, self.studio_course_outline.q(css='.incontext-editor-value').text) # Test self.dashboard_page.visit() self.dashboard_page.select_course(get_course_display_name()) self.course_page.wait_for_page() self.course_page.click_resume_button() self.lms_courseware.wait_for_page()
class GradedProblemTest(WebAppTest): """ Regression tests on submitting a graded problem """ tarball_name = 'course.tar.gz' def setUp(self): super(GradedProblemTest, self).setUp() login_api = LmsLoginApi() login_api.authenticate(self.browser) self.course_info = get_course_info() self.lms_courseware = CoursewarePageExtended( self.browser, get_course_key(self.course_info)) self.import_page = ImportCoursePageExtended(*self.page_args()) self.import_page.visit() self.import_page.upload_tarball(self.tarball_name) self.import_page.wait_for_upload() self.course_page = CourseHomePageExtended( self.browser, get_course_key(self.course_info)) self.course_page.visit() def page_args(self): """ Common arguments for pages to be used in tests. """ return [ self.browser, self.course_info['org'], self.course_info['number'], self.course_info['run'] ] def test_graded_problem(self): """ Verifies submission of a graded problem """ self.course_page.click_resume_button() self.lms_courseware.wait_for_page() self.lms_courseware.submit_graded_problem()
class PagesTestWithLms(WebAppTest): """ Course Pages test where we verify on Lms too """ def setUp(self): super(PagesTestWithLms, self).setUp() self.course_info = get_course_info() studio_login = StudioLoginApi() studio_login.authenticate(self.browser) lms_login = LmsLoginApi() lms_login.authenticate(self.browser) self.course_page = CourseInfoPageExtended( self.browser, get_course_key(self.course_info)) self.courseware_page = CoursewarePageExtended( self.browser, get_course_key(self.course_info)) self.pages_page = PagesPageExtended(self.browser, self.course_info['org'], self.course_info['number'], self.course_info['run']) # Login to LMS to avoid authentication issue self.course_page.visit() self.pages_page.visit() def assert_page_is_shown_in_lms(self, page_name): """ Confirms the page is shown in LMS Arguments: page_name(str): Name of the page to be shown """ self.pages_page.click_view_live_button() self.courseware_page.wait_for_page() pages_in_tab = self.courseware_page.get_page_names_in_tab() self.assertIn(page_name, pages_in_tab) def assert_page_is_not_shown_in_lms(self, page_name): """ Confirms the page is not shown in LMS Arguments: page_name(str): Name of the page not to be shown """ self.pages_page.click_view_live_button() self.courseware_page.wait_for_page() pages_in_tab = self.courseware_page.get_page_names_in_tab() self.assertNotIn(page_name, pages_in_tab) @flaky def test_hide_and_show_pages(self): """ Verifies that hide/show toggle button is working for pages. """ # Reset page state self.reset_hide_show_of_page() self.pages_page.visit() # Click hide/show toggle, assert page is not shown. page = self.pages_page.toggle_wiki_page_display() self.assertFalse(self.pages_page.toggle_wiki_page_show_value()) # Assert page is not shown in the LMS. self.assert_page_is_not_shown_in_lms(page) # Return back to tbe pages page and un-check # the toggle to show the page. self.pages_page.visit() page = self.pages_page.toggle_wiki_page_display() self.assertTrue(self.pages_page.toggle_wiki_page_show_value()) # Assert page is shown in the LMS. self.assert_page_is_shown_in_lms(page) # Reset page state self.reset_hide_show_of_page() def reset_hide_show_of_page(self): """ Resets hide/show state of wiki page to default """ self.pages_page.visit() if self.pages_page.toggle_wiki_page_show_value() is False: self.pages_page.toggle_wiki_page_display() self.assertTrue(self.pages_page.toggle_wiki_page_show_value())