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)
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.')
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)
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)
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)
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)
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)
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)
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)
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)
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')
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)
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)
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)
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)
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)
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)
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)
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()
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()
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)
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()