class AnalyticsTest(WebAppTest):
    """
    Regression tests on Analytics on Instructor Dashboard
    """
    def setUp(self):
        super(AnalyticsTest, self).setUp()

        login_api = LmsLoginApi()
        login_api.authenticate(self.browser)

        course_info = get_course_info()
        self.dashboard_page = DashboardPageExtended(self.browser)
        self.instructor_dashboard = InstructorDashboardPageExtended(
            self.browser, get_course_key(course_info))
        self.course_page = CourseInfoPageExtended(self.browser,
                                                  get_course_key(course_info))
        self.dashboard_page.visit()
        self.dashboard_page.select_course(get_course_display_name())
        self.course_page.wait_for_page()
        self.instructor_dashboard.visit()

    @skipIf(LMS_BASE_URL != LMS_STAGE_BASE_URL,
            "Url can't be tested on sandbox")  # LT-61
    def test_analytics_link(self):
        """
        Verifies that edX Insights link is clicked and displayed
        """
        self.instructor_dashboard.click_analytics_tab()
        self.assertEquals(self.instructor_dashboard.get_insights_title_text(),
                          'INSIGHTS')
예제 #2
0
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()
    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
        """
        course_info = get_course_info()
        course_page = CourseInfoPageExtended(
            self.browser, get_course_key(course_info)
        )

        course_page.visit()
        pages_in_tab = course_page.get_page_names_in_tab()
        self.assertNotIn(page_name, pages_in_tab)
    def setUp(self):
        super(AnalyticsTest, self).setUp()

        login_api = LmsLoginApi()
        login_api.authenticate(self.browser)

        course_info = get_course_info()
        self.dashboard_page = DashboardPageExtended(self.browser)
        self.instructor_dashboard = InstructorDashboardPageExtended(
            self.browser, get_course_key(course_info))
        self.course_page = CourseInfoPageExtended(self.browser,
                                                  get_course_key(course_info))
        self.dashboard_page.visit()
        self.dashboard_page.select_course(get_course_display_name())
        self.course_page.wait_for_page()
        self.instructor_dashboard.visit()
예제 #5
0
    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 test_drag_and_drop_of_pages(self):
        """
        Verifies that user can drag and drop pages and they appear in the
        proper order in LMS
        """
        # Get all pages
        all_pages = self.pages_page.get_all_pages()
        # Get counts of all pages and all custom pages.
        count_of_all_pages = len(all_pages)
        count_of_custom_pages = self.pages_page.get_custom_page_count()

        # Source and target indices for the pages to be dragged and dropped.
        source_index = count_of_all_pages - count_of_custom_pages - 1
        target_index = source_index - 1

        self.pages_page.drag_and_drop(source_index, target_index)

        temp = all_pages[source_index]
        all_pages[source_index] = all_pages[target_index]
        all_pages[target_index] = temp

        # Assert page order is correct.
        self.assertEqual(
            self.pages_page.get_all_pages(),
            all_pages
        )
        # Open LMS and assert pages are in correct order.
        course_info = get_course_info()
        course_page = CourseInfoPageExtended(
            self.browser, get_course_key(course_info)
        )
        course_page.visit()
        pages_in_tab = course_page.get_page_names_in_tab()

        # By default, LMS is opened with Instructor view.
        # We have to append 'Instructor' to make assertion pass.
        all_pages.append('Instructor')
        self.assertEqual(pages_in_tab, all_pages)
예제 #7
0
    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()
예제 #8
0
    def test_resume_course(self):
        """
        Verifies that user can successfully resume the course
        """
        course_page = CourseInfoPageExtended(self.browser, get_course_info())
        courseware_page = CoursewarePage(self.browser, get_course_info())

        self.dashboard_page.select_course(get_course_display_name())
        course_page.wait_for_page()
        course_page.click_resume_button()
        courseware_page.wait_for_page()
예제 #9
0
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())