示例#1
0
    def test_that_new_review_is_saved(self, mozwebqa):
        """ Litmus 22921
            https://litmus.mozilla.org/show_test.cgi?id=22921 """
        # Step 1 - Login into AMO
        home_page = Home(mozwebqa)
        home_page.login()
        Assert.true(home_page.is_the_current_page)
        Assert.true(home_page.header.is_user_logged_in)

        # Step 2 - Load any addon detail page
        details_page = Details(mozwebqa, 'Adblock Plus')

        # Step 3 - Click on "Write review" button
        write_review_block = details_page.click_to_write_review()

        # Step 4 - Write a review
        body = 'Automatic addon review by Selenium tests'
        write_review_block.enter_review_with_text(body)
        write_review_block.set_review_rating(1)
        review_page = write_review_block.click_to_save_review()

        # Step 5 - Assert review
        review = review_page.review()
        Assert.equal(review.rating, 1)
        Assert.equal(review.author, mozwebqa.credentials['default']['name'])
        date = datetime.now().strftime("%B %d, %Y")
        # there are no leading zero-signs on day so we need to remove them too
        date = date.replace(' 0', ' ')
        Assert.equal(review.date, date)
        Assert.equal(review.text, body)
示例#2
0
    def test_create_event(self, mozwebqa):
        home_page = Home(mozwebqa)
        home_page.login()
        events_page = home_page.header.click_events_link()
        create_event_page = events_page.click_create_event_button()

        #Create event with all required fields
        create_event_page.set_event_name("New Event")
        create_event_page.set_event_description("Fairly long description is required")
        create_event_page.set_event_venue("Mozilla office")
        create_event_page.set_event_venue_map()
        create_event_page.set_event_city("Mountain View")
        create_event_page.select_event_country("Antarctica")
        create_event_page.select_start_month("3")
        create_event_page.select_start_day("14")
        create_event_page.select_random_start_year()
        create_event_page.select_end_month("11")
        create_event_page.select_end_day("22")
        create_event_page.select_end_year("2022")
        create_event_page.set_event_category()
        create_event_page.select_estimated_attendance("100")
        create_event_page.set_event_success_metric("10")
        create_event_page.set_event_metric("2")
        create_event_page.set_event_success_metric2("20")
        create_event_page.set_event_metric2("3")
        create_event_page.set_event_goals()

        event_detail_page = create_event_page.click_save_event_button()

        Assert.true(event_detail_page.is_event_saved_message_visible)
        Assert.equal('New Event', event_detail_page.name)
    def test_hide_email_checkbox_works(self, mozwebqa):
        home_page = Home(mozwebqa)
        home_page.login()

        Assert.true(home_page.is_the_current_page)
        Assert.true(home_page.header.is_user_logged_in)

        view_profile_page = home_page.header.click_view_profile()
        initial_state = view_profile_page.is_email_field_present

        edit_profile_page = home_page.header.click_edit_profile()
        edit_profile_page.change_hide_email_state()
        edit_profile_page.click_update_account()

        view_profile_page = home_page.header.click_view_profile()
        final_state = view_profile_page.is_email_field_present

        try:
            Assert.not_equal(initial_state, final_state, 'The initial and final states are the same. The profile change failed.')
            if final_state is True:
                credentials = mozwebqa.credentials['default']
                Assert.equal(credentials['email'], view_profile_page.email_value, 'Actual value is not equal with the expected one.')

        except Exception as exception:
            Assert.fail(exception.msg)

        finally:
            if initial_state != final_state:
                edit_profile_page = home_page.header.click_edit_profile()
                edit_profile_page.change_hide_email_state()
                edit_profile_page.click_update_account()
                view_profile_page = home_page.header.click_view_profile()

            Assert.equal(view_profile_page.is_email_field_present, initial_state, 'Could not restore profile to initial state.')
示例#4
0
    def test_that_five_star_rating_increments(self, mozwebqa):
        """ Litmus 22920
            https://litmus.mozilla.org/show_test.cgi?id=22920 """
        # Step 1 - Login into AMO
        home_page = Home(mozwebqa)
        home_page.login()
        Assert.true(home_page.header.is_user_logged_in)

        # Step 2 - Go to add-ons listing page sorted by rating
        extensions_home_page = home_page.click_to_explore('Top Rated')

        # Step 3 - Pick an addon with no reviews
        extensions_home_page.go_to_last_page()
        addon = extensions_home_page.extensions[-1]  # the last one is without rating
        addon_name = addon.name
        details_page = Details(mozwebqa, addon_name)

        # Step 4 - Click on the "Write review" button
        write_review_block = details_page.click_to_write_review()

        # Step 5 - Add review with 1-star rating
        body = 'Automatic addon review by Selenium tests'
        write_review_block.enter_review_with_text(body)
        write_review_block.set_review_rating(5)
        write_review_block.click_to_save_review()

        # Step 6 - Ensure rating increased by one
        details_page = Details(mozwebqa, addon_name)
        new_rating_counter = details_page.get_rating_counter(5)
        Assert.equal(new_rating_counter, 1)
示例#5
0
    def test_edit_event(self, mozwebqa):
        home_page = Home(mozwebqa)
        home_page.login()
        events_page = home_page.header.click_events_link()
        events_page.filter_for("New Event")
        event_detail_page = events_page.click_filtered_event()
        edit_event_page = event_detail_page.click_edit_event_button()

        #Edit newly created event
        edit_event_page.edit_event_name("Edited Event title")
        edit_event_page.edit_event_description("Updated and changed description goes here")
        edit_event_page.edit_event_venue("SFO Commons")
        edit_event_page.edit_event_city("San Francisco")
        edit_event_page.edit_event_country("United Kingdom")
        edit_event_page.edit_start_month("5")
        edit_event_page.edit_start_day("28")
        edit_event_page.select_random_start_year()
        edit_event_page.edit_end_month("12")
        edit_event_page.edit_end_day("29")
        edit_event_page.edit_event_category()
        edit_event_page.edit_estimated_attendance("400")
        edit_event_page.edit_event_success_metric("25")
        edit_event_page.edit_event_metric("2")
        edit_event_page.edit_event_success_metric2("200")
        edit_event_page.edit_event_metric2("1")
        edit_event_page.edit_event_goals()

        event_detail_page = edit_event_page.click_save_event_button()

        Assert.true(event_detail_page.is_event_saved_message_visible)
        Assert.equal('Edited Event title', event_detail_page.name)
示例#6
0
    def test_create_event(self, mozwebqa):
        home = Home(mozwebqa)
        home.go_to_homepage()
        Assert.false(home.is_user_loggedin)
        home.login()
        Assert.true(home.is_user_loggedin)

        events = Events(mozwebqa)
示例#7
0
 def test_admin_login_logout(self, mozwebqa):
     home_page = Home(mozwebqa)
     home_page.login()
     home_page.select_org(home_page.org).click()
             
     home_page.header.click_logout()
     Assert.true(home_page.is_username_field_present)
     Assert.true(home_page.is_password_field_present)
示例#8
0
    def test_user_can_create_report(self, mozwebqa):
        home_page = Home(mozwebqa)
        home_page.login()

        profile_page = home_page.header.click_profile()

        if profile_page.editable_monthly_reports_present:
            edit_report_page = profile_page.click_random_editable_monthly_reports()
            fields_no = len(edit_report_page.report_fields) - 1
            random_text = "test%s" % random.choice(string.lowercase)

            # enter report values
            for i in range(0, fields_no):
                edit_report_page.report_fields[i].clear_field()
                edit_report_page.report_fields[i].type_value(random_text)

            test_link = 'http://test.com'
            edit_report_page.set_input_text_for('event_link', test_link)
            edit_report_page.set_input_text_for('activity_link', test_link)
            edit_report_page.set_input_text_for('event_name', random_text)
            edit_report_page.set_input_text_for('activity_description', random_text)
            value = '2'
            edit_report_page.select_type_of_participation(value)

            edit_report_page.click_save_report_button()

            Assert.true(edit_report_page.is_success_message_visible)
            Assert.contains('Report successfully created.', edit_report_page.success_message_text)

        else:
            edit_report_page = profile_page.click_random_existing_monthly_reports()
            edit_report_page.click_edit_report_button()
            edit_report_page.delete_report()
            Assert.true(edit_report_page.is_success_message_visible)
            Assert.contains('Report successfully deleted.', edit_report_page.success_message_text)

            profile_page.click_random_editable_monthly_reports()
            fields_no = len(edit_report_page.report_fields) - 1
            random_text = "test%s" % random.choice(string.lowercase)

            # enter report values
            for i in range(0, fields_no):
                edit_report_page.report_fields[i].clear_field()
                edit_report_page.report_fields[i].type_value(random_text)

            test_link = 'http://test.com'
            edit_report_page.set_input_text_for('event_link', test_link)
            edit_report_page.set_input_text_for('activity_link', test_link)
            edit_report_page.set_input_text_for('event_name', random_text)
            edit_report_page.set_input_text_for('activity_description', random_text)
            value = '3'
            edit_report_page.select_type_of_participation(value)

            edit_report_page.click_save_report_button()
            Assert.true(edit_report_page.is_success_message_visible)
            Assert.contains('Report successfully created.', edit_report_page.success_message_text)
示例#9
0
    def test_login_logout(self, mozwebqa):
        home_page = Home(mozwebqa)

        Assert.false(home_page.is_user_loggedin)
        home_page.login()
        Assert.true(home_page.is_user_loggedin)

        # log out after logging in
        home_page.click_logout_menu_item()
        Assert.false(home_page.is_user_loggedin)
示例#10
0
 def test_dashboard_present(self, mozwebqa):
     """
     Verify dashboard page contains key elements.
     """
     home_page = Home(mozwebqa)
     home_page.login()
     home_page.select_org(home_page.org).click()
     
     dashboard = Dashboard(mozwebqa)
     Assert.true(dashboard.is_dashboard_dropbutton_present)
     Assert.true(dashboard.is_dashboard_subscriptions_present)
     Assert.true(dashboard.is_dashboard_notificaitons_present)
示例#11
0
    def test_delete_event(self, mozwebqa):
        home_page = Home(mozwebqa)
        home_page.login()
        events_page = home_page.header.click_events_link()
        events_page.filter_for("Edited Event title")
        event_detail_page = events_page.click_filtered_event()
        edit_event_page = event_detail_page.click_edit_event_button()

        #Delete newly created event
        edit_event_page.click_delete_event_button()
        events_page = edit_event_page.click_confirm_delete_event_button()

        Assert.true(events_page.is_event_deleted_message_visible)
示例#12
0
    def test_user_can_access_the_view_profile_page(self, mozwebqa):
        """
        Test for litmus 15400
        https://litmus.mozilla.org/show_test.cgi?id=15400
        """

        home_page = Home(mozwebqa)
        home_page.login()
        Assert.true(home_page.is_the_current_page)
        Assert.true(home_page.header.is_user_logged_in)

        view_profile_page = home_page.header.click_view_profile()

        Assert.equal(view_profile_page.about_me, 'About me')
示例#13
0
    def test_user_can_login_and_logout_using_browser_id_and_return(self, mozwebqa):
        """ Test for litmus 7857
        https://litmus.mozilla.org/show_test.cgi?id=7857
        Test for litmus 4859
        https://litmus.mozilla.org/show_test.cgi?id=4859
        """

        home_page = Home(mozwebqa)
        home_page.login(user="******", use_return=True)

        Assert.true(home_page.header.is_sign_out_visible)

        home_page.header.click_sign_out()
        Assert.false(home_page.header.is_sign_out_visible)
示例#14
0
    def test_user_can_login_and_logout_using_browser_id(self, mozwebqa):
        """ Test for litmus 7857
        https://litmus.mozilla.org/show_test.cgi?id=7857
        Test for litmus 4859
        https://litmus.mozilla.org/show_test.cgi?id=4859
        """

        home_page = Home(mozwebqa)
        home_page.login("browserID")
        Assert.true(home_page.is_the_current_page)
        Assert.true(home_page.header.is_user_logged_in)

        home_page.header.click_logout()
        Assert.false(home_page.header.is_user_logged_in)
示例#15
0
    def test_user_can_login_and_logout_using_browser_id_and_return(
            self, mozwebqa):
        """ Test for litmus 7857
        https://litmus.mozilla.org/show_test.cgi?id=7857
        Test for litmus 4859
        https://litmus.mozilla.org/show_test.cgi?id=4859
        """

        home_page = Home(mozwebqa)
        home_page.login(user="******", use_return=True)

        Assert.true(home_page.header.is_sign_out_visible)

        home_page.header.click_sign_out()
        Assert.false(home_page.header.is_sign_out_visible)
示例#16
0
    def test_the_logout_link_for_logged_in_users(self, mozwebqa):
        """
        Litmus 15110
        https://litmus.mozilla.org/show_test.cgi?id=15110
        """
        home_page = Home(mozwebqa)
        home_page.login()
        Assert.true(home_page.is_the_current_page)
        Assert.true(home_page.header.is_user_logged_in)

        discovery_pane = DiscoveryPane(mozwebqa, self.basepath)
        Assert.true(discovery_pane.is_logout_link_visible)
        home_page = discovery_pane.click_logout()
        Assert.true(home_page.is_the_current_page)
        Assert.false(home_page.header.is_user_logged_in)
示例#17
0
    def test_that_add_a_review_button_works(self, mozwebqa):
        """
        Litmus 25729
        https://litmus.mozilla.org/show_test.cgi?searchType=by_id&id=25729
        """
        # Step 1: Addons Home Page loads and Addons Details loads
        home_page = Home(mozwebqa)

        # Step 2:user logs in to submit a review
        home_page.login()
        Assert.true(home_page.header.is_user_logged_in)

        # Step 3: user loads an addon details page and clicks write a review button
        details_page = Details(mozwebqa, "Firebug")
        review_box = details_page.click_to_write_review()
        Assert.true(review_box.is_review_box_visible)
示例#18
0
    def test_user_can_access_the_edit_profile_page(self, mozwebqa):
        """
            Test for litmus 5039
            https://litmus.mozilla.org/show_test.cgi?id=5039
        """

        home_page = Home(mozwebqa)
        home_page.login()
        Assert.true(home_page.is_the_current_page)
        Assert.true(home_page.header.is_user_logged_in)

        amo_user_edit_page = home_page.header.click_edit_profile()
        Assert.contains("/users/edit", amo_user_edit_page.get_url_current_page())
        Assert.true(amo_user_edit_page.is_the_current_page)

        Assert.equal("My Account", amo_user_edit_page.is_account_visible)
        Assert.equal("Profile", amo_user_edit_page.is_profile_visible)
        Assert.equal("Details", amo_user_edit_page.is_details_visible)
        Assert.equal("Notifications", amo_user_edit_page.is_notification_visible)
示例#19
0
    def test_email_settings(self, mozwebqa):
        home_page = Home(mozwebqa)

        Assert.false(home_page.is_user_loggedin)
        home_page.login()
        Assert.true(home_page.is_user_loggedin)

        settings_page = home_page.header.click_settings()
        report_inital_state = settings_page.is_report_checked
        events_inital_state = settings_page.is_events_checked

        settings_page.click_report_checkbox()
        settings_page.click_events_checkbox()

        dashboard_page = settings_page.click_save()
        Assert.true(dashboard_page.is_success_message_visible)

        settings_page = home_page.header.click_settings()

        Assert.not_equal(report_inital_state, settings_page.is_report_checked)
        Assert.not_equal(events_inital_state, settings_page.is_events_checked)
示例#20
0
    def test_email_settings(self, mozwebqa):
        home_page = Home(mozwebqa)

        Assert.false(home_page.is_user_loggedin)
        home_page.login()
        Assert.true(home_page.is_user_loggedin)

        settings_page = home_page.header.click_settings()
        report_inital_state = settings_page.is_report_checked
        events_inital_state = settings_page.is_events_checked

        settings_page.click_report_checkbox()
        settings_page.click_events_checkbox()

        dashboard_page = settings_page.click_save()
        Assert.true(dashboard_page.is_success_message_visible)

        settings_page = home_page.header.click_settings()

        Assert.not_equal(report_inital_state, settings_page.is_report_checked)
        Assert.not_equal(events_inital_state, settings_page.is_events_checked)
示例#21
0
    def test_edit_profile_fields(self, mozwebqa):
        home_page = Home(mozwebqa)
        home_page.login()

        profile_page = home_page.header.click_profile()
        user_edit_page = profile_page.click_edit_profile()
        Assert.true(user_edit_page.is_the_current_page)

        # save initial values to restore them after the test is finished
        fields_no = len(user_edit_page.profile_fields)
        initial_value = [None] * fields_no
        random_name = "test%s" % random.choice(string.lowercase)

        # enter new values
        for i in range(0, fields_no):
            initial_value[i] = deepcopy(
                user_edit_page.profile_fields[i].field_value)
            user_edit_page.profile_fields[i].clear_field()
            user_edit_page.profile_fields[i].type_value(random_name)

        user_edit_page.click_save_profile()
        Assert.true(profile_page.is_update_message_visible)
        profile_page.click_edit_profile()

        # using try finally to ensure that the initial values are restore even if the Asserts fail.
        try:
            for i in range(0, fields_no):
                Assert.contains(random_name,
                                user_edit_page.profile_fields[i].field_value)

        except Exception as exception:
            Assert.fail(exception)

        finally:
            # go back and restore initial values
            for i in range(0, fields_no):
                user_edit_page.profile_fields[i].clear_field()
                user_edit_page.profile_fields[i].type_value(initial_value[i])

            user_edit_page.click_save_profile()
示例#22
0
    def test_create_collection(self, mozwebqa):

        home_page = Home(mozwebqa)
        collections_page = home_page.header.site_navigation_menu('Collections').click()
        create_collection_page = collections_page.click_create_collection_button()
        home_page.login('browserID')

        random_name = 'random number following%s' % random.randrange(1, 100)

        create_collection_page.type_name(random_name)
        create_collection_page.type_description(random_name)
        collection = create_collection_page.click_create_collection()

        Assert.equal(collection.notification, 'Collection created!')
        Assert.equal(collection.collection_name, random_name)
        collection.delete()
        user_collections = collection.delete_confirmation()
        if len(user_collections.collections) > 0:
            for collection_element in range(len(user_collections.collections)):  # If the condition is satisfied, iterate through the collections items on the page
                Assert.true(random_name not in user_collections.collections[collection_element].text)  # Check for each collection that the name is not the same as the deleted collections name
        else:
            Assert.equal(user_collections.collection_text, 'No collections found.')  # It means the collection has been deleted and we test for that
    def test_edit_profile_fields(self, mozwebqa):
        home_page = Home(mozwebqa)
        home_page.login()

        profile_page = home_page.header.click_profile()
        user_edit_page = profile_page.click_edit_profile()
        Assert.true(user_edit_page.is_the_current_page)

        # save initial values to restore them after the test is finished
        fields_no = len(user_edit_page.profile_fields)
        initial_value = [None] * fields_no
        random_name = "test%s" % random.choice(string.lowercase)

        # enter new values
        for i in range(0, fields_no):
            initial_value[i] = deepcopy(user_edit_page.profile_fields[i].field_value)
            user_edit_page.profile_fields[i].clear_field()
            user_edit_page.profile_fields[i].type_value(random_name)

        user_edit_page.click_save_profile()
        Assert.true(profile_page.is_update_message_visible)
        profile_page.click_edit_profile()

        # using try finally to ensure that the initial values are restore even if the Asserts fail.
        try:
            for i in range(0, fields_no):
                Assert.contains(random_name, user_edit_page.profile_fields[i].field_value)

        except Exception as exception:
            Assert.fail(exception)

        finally:
            # go back and restore initial values
            for i in range(0, fields_no):
                user_edit_page.profile_fields[i].clear_field()
                user_edit_page.profile_fields[i].type_value(initial_value[i])

            user_edit_page.click_save_profile()
示例#24
0
    def test_user_can_create_and_delete_report(self, mozwebqa):
        test_link = 'http://test.com'
        random_text = "test%s" % random.choice(string.lowercase)

        home_page = Home(mozwebqa)
        home_page.login()

        dashboard = home_page.header.click_dashboard()
        new_report = dashboard.click_add_new_report()
        new_report.select_activity('3')
        new_report.select_campaign('1')
        new_report.select_contribution_area('Coding')
        new_report.select_event_place()
        new_report.type_url_for_activity(test_link)
        new_report.type_url_description(random_text)
        new_report.type_activity_description(random_text)
        view_report = new_report.click_save_report_button()
        Assert.true(view_report.is_success_message_visible)
        Assert.contains('Report successfully created.', view_report.success_message_text)
        edit_report = view_report.click_edit_report()
        view_report = edit_report.delete_report()
        Assert.true(view_report.is_success_message_visible)
        Assert.contains('Report successfully deleted.', view_report.success_message_text)
示例#25
0
 def test_invalid_login(self, mozwebqa):
     home_page = Home(mozwebqa)
     home_page.login("admin", "badpassword")
     Assert.true(home_page.is_failed)
     
    def test_datadriven_rbac(self, mozwebqa, org, perm_name, resource, verbs, allowed, disallowed):
        """
        Perform a data driven test related to role based access controls.
        All parameters are fullfilled by the data.  
        
        :param org: Organization Name
        :param perm_name: Permission name
        :param resource: Resource
        :param verbs: A tuple of verbs
        :returns: Pass or Fail for the test
        """

        sysapi = ApiTasks(mozwebqa)
        home_page = Home(mozwebqa)
        rolestab = RolesTab(mozwebqa)
        
        role_name = "role_%s" % (home_page.random_string())
        perm_name = "perm_%s" % (home_page.random_string())
        username = "******" % home_page.random_string()
        email = username + "@example.com"
        password = "******" % (home_page.random_string())
        
        sysapi.create_org(org)
        sysapi.create_user(username, password, email)
        
        home_page.login()
        
        home_page.tabs.click_tab("administration_tab")
        home_page.tabs.click_tab("roles_administration")
        home_page.click_new()
        rolestab.create_new_role(role_name)
        
        rolestab.click_role_permissions()
            
        rolestab.role_org(org).click()
        rolestab.click_add_permission()
        
        rolestab.select_resource_type(resource)
        home_page.click_next()
        for v in verbs:
            home_page.select('verbs', v)
        home_page.click_next()
        
        rolestab.enter_permission_name(perm_name)
        rolestab.enter_permission_desc('Added by QE test.')
        rolestab.click_permission_done()
        
        rolestab.click_root_roles()
        rolestab.click_role_users()
            
        rolestab.role_user(username).add_user()
        
        home_page.header.click_logout()
        home_page.login(username, password)
        
        for t in allowed:
            Assert.true(t(home_page))
        
        for t in disallowed:
            Assert.false(t(home_page))
        #home_page.header.click_logout()