def test_what_is_this_in_the_version_information(self, mozwebqa): details_page = Details(mozwebqa, "Firebug") Assert.equal(details_page.version_information_heading, "Version Information") details_page.expand_version_information() Assert.equal("What's this?", details_page.license_faq_text) license_faq = details_page.click_whats_this_license() Assert.equal("Frequently Asked Questions", license_faq.header_text)
def test_view_the_source_in_the_version_information(self, mozwebqa): details_page = Details(mozwebqa, "Firebug") Assert.equal(details_page.version_information_heading, "Version Information") details_page.expand_version_information() Assert.equal("View the source", details_page.view_source_code_text) view_source = details_page.click_view_source_code() Assert.contains('/files/browse/', view_source.get_url_current_page())
def test_what_is_this_in_the_version_information(self, mozwebqa): details_page = Details(mozwebqa, "Firebug") assert details_page.version_information_heading == "Version Information" details_page.expand_version_information() assert "What's this?" == details_page.license_faq_text license_faq = details_page.click_whats_this_license() assert "Frequently Asked Questions" == license_faq.header_text)
def test_that_new_review_is_saved(self, mozwebqa, existing_user): # Step 1 - Login into AMO home_page = Home(mozwebqa) home_page.login(existing_user['email'], existing_user['password']) assert home_page.is_the_current_page assert home_page.header.is_user_logged_in # Step 2 - Load any addon detail page details_page = Details(mozwebqa, 'Memchaser') # 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 %s' % datetime.now() 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.reviews[0] assert review.rating == 1 assert review.author == existing_user['name'] date = datetime.now(timezone('US/Pacific')).strftime("%B %d, %Y") # there are no leading zero-signs on day so we need to remove them too expected_date = date.replace(' 0', ' ') assert review.date == expected_date, 'Date of review does not match the expected value. ' 'Expected: "%s" but found "%s"' % (expected_date, review.date)
def test_that_all_reviews_hyperlink_works(self, mozwebqa): """ Test for Litmus 4843. https://litmus.mozilla.org/show_test.cgi?id=4843 """ #Open details page for Adblock Plus details_page = Details(mozwebqa, 'Adblock Plus') Assert.true(details_page.has_reviews) details_page.click_all_reviews_link() Assert.equal(details_page.review_count, 20) #Go to the last page and check that the next button is not present details_page.paginator.click_last_page() Assert.true(details_page.paginator.is_next_page_disabled) #Go one page back, check that it has 20 reviews #that the page number decreases and that the next link is visible page_number = details_page.paginator.page_number details_page.paginator.click_prev_page() Assert.false(details_page.paginator.is_next_page_disabled) Assert.equal(details_page.review_count, 20) Assert.equal(details_page.paginator.page_number, page_number - 1) #Go to the first page and check that the prev button is not present details_page.paginator.click_first_page() Assert.true(details_page.paginator.is_prev_page_disabled) #Go one page forward, check that it has 20 reviews, #that the page number increases and that the prev link is visible page_number = details_page.paginator.page_number details_page.paginator.click_next_page() Assert.false(details_page.paginator.is_prev_page_disabled) Assert.equal(details_page.review_count, 20) Assert.equal(details_page.paginator.page_number, page_number + 1)
def test_that_all_reviews_hyperlink_works(self, mozwebqa): # Open details page for MemChaser details_page = Details(mozwebqa, "Firebug") Assert.true(details_page.has_reviews) view_reviews = details_page.click_all_reviews_link() Assert.equal(len(view_reviews.reviews), 20) # Go to the last page and check that the next button is not present view_reviews.paginator.click_last_page() Assert.true(view_reviews.paginator.is_next_page_disabled) # Go one page back, check that it has 20 reviews # that the page number decreases and that the next link is visible page_number = view_reviews.paginator.page_number view_reviews.paginator.click_prev_page() Assert.false(view_reviews.paginator.is_next_page_disabled) Assert.equal(len(view_reviews.reviews), 20) Assert.equal(view_reviews.paginator.page_number, page_number - 1) # Go to the first page and check that the prev button is not present view_reviews.paginator.click_first_page() Assert.true(view_reviews.paginator.is_prev_page_disabled) # Go one page forward, check that it has 20 reviews, # that the page number increases and that the prev link is visible page_number = view_reviews.paginator.page_number view_reviews.paginator.click_next_page() Assert.false(view_reviews.paginator.is_prev_page_disabled) Assert.equal(len(view_reviews.reviews), 20) Assert.equal(view_reviews.paginator.page_number, page_number + 1)
def test_that_new_review_is_saved(self, mozwebqa): """ Test for Litmus 22921. https://litmus.mozilla.org/show_test.cgi?id=22921 """ # Step 1 - Login into AMO 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) # 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 %s' % datetime.now() 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.reviews[0] 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_that_whats_this_link_for_source_license_links_to_an_answer_in_faq(self, mozwebqa): """Test for Litmus 11530.""" details_page = Details(mozwebqa, "Firebug") details_page.expand_version_information() user_faq_page = details_page.click_whats_this_license() Assert.not_none(re.match('(\w+\s*){3,}', user_faq_page.license_question)) Assert.not_none(re.match('(\w+\s*){3,}', user_faq_page.license_answer))
def test_that_verifies_the_url_of_the_statistics_page(self, mozwebqa): details_page = Details(mozwebqa, "Firebug") statistics_page = details_page.click_view_statistics() assert statistics_page.is_the_current_page assert "/statistics" in statistics_page.get_url_current_page()
def test_that_compatible_applications_equal(self, mozwebqa): # browser firebug_page = Details(mozwebqa, self.firebug) firebug_page.expand_version_information() browser_compatible_applications = firebug_page.compatible_applications # api addons_xml = AddonsAPI(mozwebqa, self.firebug) xml_compatible_applications = addons_xml.get_compatible_applications() name = xml_compatible_applications[0] min_version = xml_compatible_applications[1] max_version = xml_compatible_applications[2] # E.g.: Works with Firefox 1.0 meta_compat_prefix = 'Works with %s %s ' % (name, min_version) # E.g.: Works with Firefox 1.0 and later meta_compat_abbrev = meta_compat_prefix + 'and later' # E.g.: Works with Firefox 1.0 - 16.0a1 meta_compat_full = "%s- %s" % (meta_compat_prefix, max_version) assert (browser_compatible_applications == meta_compat_full or browser_compatible_applications == meta_compat_abbrev or browser_compatible_applications.startswith(meta_compat_prefix) ), "Listed compat. versions don't match versions listed in API."
def test_that_all_reviews_hyperlink_works(self, base_url, selenium): # Open details page for MemChaser details_page = Details(base_url, selenium, "Firebug") assert details_page.has_reviews view_reviews = details_page.click_all_reviews_link() assert 20 == len(view_reviews.reviews) # Go to the last page and check that the next button is not present view_reviews.paginator.click_last_page() assert view_reviews.paginator.is_next_page_disabled # Go one page back, check that it has 20 reviews # that the page number decreases and that the next link is visible page_number = view_reviews.paginator.page_number view_reviews.paginator.click_prev_page() assert not view_reviews.paginator.is_next_page_disabled assert 20 == len(view_reviews.reviews) assert page_number - 1 == view_reviews.paginator.page_number # Go to the first page and check that the prev button is not present view_reviews.paginator.click_first_page() assert view_reviews.paginator.is_prev_page_disabled # Go one page forward, check that it has 20 reviews, # that the page number increases and that the prev link is visible page_number = view_reviews.paginator.page_number view_reviews.paginator.click_next_page() assert not view_reviews.paginator.is_prev_page_disabled assert 20 == len(view_reviews.reviews) assert page_number + 1 == view_reviews.paginator.page_number
def test_view_the_source_in_the_version_information(self, mozwebqa): details_page = Details(mozwebqa, "MemChaser") Assert.equal(details_page.version_information_heading, "Version Information") details_page.click_version_information_header() Assert.equal("View the source", details_page.view_source_code.text) details_page.view_source_code.click() Assert.contains('/files/browse/', details_page.get_url_current_page())
def test_what_is_this_in_the_version_information(self, base_url, selenium): details_page = Details(base_url, selenium, "Firebug") assert 'Version Information' == details_page.version_information_heading details_page.expand_version_information() assert 'What\'s this?' == details_page.license_faq_text license_faq = details_page.click_whats_this_license() assert 'Frequently Asked Questions' == license_faq.header_text
def test_that_one_star_rating_increments(self, mozwebqa): """ Test for Litmus 22916. https://litmus.mozilla.org/show_test.cgi?id=22916 """ # Step 1 - Login into AMO home_page = Home(mozwebqa) home_page.login("browserID") 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.paginator.click_last_page() addon = extensions_home_page.extensions[-1] # the last one is without rating details_page = addon.click() # 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(1) view_reviews = write_review_block.click_to_save_review() # Step 6 - Ensure rating increased by one view_reviews.breadcrumbs[2].click() details_page = Details(mozwebqa) new_rating_counter = details_page.get_rating_counter(1) Assert.equal(new_rating_counter, 1)
def test_view_the_source_in_the_version_information(self, base_url, selenium): details_page = Details(base_url, selenium, "Firebug") assert 'Version Information' == details_page.version_information_heading details_page.expand_version_information() assert 'View the source' == details_page.view_source_code_text view_source = details_page.click_view_source_code() assert '/files/browse/' in view_source.get_url_current_page()
def test_that_new_review_is_saved(self, base_url, selenium, logged_in, user): details_page = Details(base_url, selenium, 'Memchaser') write_review_block = details_page.click_to_write_review() # Write a review body = 'Automatic addon review by Selenium tests %s' % datetime.now() write_review_block.enter_review_with_text(body) write_review_block.set_review_rating(1) review_page = write_review_block.click_to_save_review() # Assert review review = review_page.reviews[0] assert 1 == review.rating assert user['display_name'] == review.author date = datetime.now(timezone('UTC')).strftime('%B %d, %Y') # there are no leading zero-signs on day so we need to remove them too expected_date = date.replace(' 0', ' ') assert expected_date == review.date, 'Date of review does not match the expected value.' assert body == review.text, 'Review text does not match expected value.' review.delete() details_page = Details(base_url, selenium, 'Memchaser') review_page = details_page.click_all_reviews_link() for review in review_page.reviews: assert body not in review.text
def test_view_the_source_in_the_version_information(self, mozwebqa): details_page = Details(mozwebqa, "Firebug") assert details_page.version_information_heading == "Version Information" details_page.expand_version_information() assert "View the source" == details_page.view_source_code_text view_source = details_page.click_view_source_code() assert '/files/browse/' in view_source.get_url_current_page()
def test_that_verifies_the_url_of_the_statistics_page(self, mozwebqa): details_page = Details(mozwebqa, "Firebug") statistics_page = details_page.click_view_statistics() Assert.true(statistics_page.is_the_current_page) Assert.contains("/statistics", statistics_page.get_url_current_page())
def test_that_the_development_channel_expands(self, mozwebqa): details_page = Details(mozwebqa, 'Firebug') assert 'Development Channel' == details_page.development_channel_text assert '' == details_page.development_channel_content details_page.click_development_channel() assert details_page.development_channel_content is not None details_page.click_development_channel() assert '' == details_page.development_channel_content
def test_that_make_contribution_button_is_clickable_and_loads_paypal_frame_while_user_is_logged_in(self, base_url, selenium, logged_in): addon_page = Details(base_url, selenium, self.addon_name) contribution_snippet = addon_page.click_contribute_button() assert contribution_snippet.is_make_contribution_button_visible assert 'Make Contribution' == contribution_snippet.make_contribution_button_name contribution_snippet.click_make_contribution_button() assert addon_page.is_paypal_login_dialog_visible
def test_that_the_development_channel_expands(self, base_url, selenium): details_page = Details(base_url, selenium, 'Firebug') assert 'Development Channel' == details_page.development_channel_text assert '' == details_page.development_channel_content details_page.click_development_channel() assert details_page.development_channel_content is not None details_page.click_development_channel() assert '' == details_page.development_channel_content
def test_that_the_development_channel_expands(self, mozwebqa): details_page = Details(mozwebqa, 'Firebug') Assert.equal("Development Channel", details_page.development_channel_text) Assert.equal('', details_page.development_channel_content) details_page.click_development_channel() Assert.not_none(details_page.development_channel_content) details_page.click_development_channel() Assert.equal('', details_page.development_channel_content)
def test_that_external_link_leads_to_addon_website(self, base_url, selenium): # Step 1 - Open AMO Home # Step 2 - Open MemChaser Plus details page details_page = Details(base_url, selenium, 'MemChaser') website_link = details_page.website assert not website_link == '' # Step 3 - Follow external website link details_page.click_website_link() assert details_page.get_url_current_page() in website_link
def test_that_add_to_collection_flyout_for_anonymous_users(self, mozwebqa): """ Test for Litmus 25711. https://litmus.mozilla.org/show_test.cgi?searchType=by_id&id=25711 """ details_page = Details(mozwebqa, 'Firebug') details_page.click_add_to_collection_widget() Assert.equal(details_page.collection_widget_button, 'Create an Add-ons Account') Assert.equal(details_page.collection_widget_login_link, 'log in to your current account')
def test_user_my_favorites_page(self, base_url, selenium, logged_in): details_page = Details(base_url, selenium, 'Firebug') details_page.click_add_to_favorites() assert details_page.is_addon_marked_as_favorite home_page = Home(base_url, selenium) my_favorites_page = home_page.header.click_my_favorites() assert my_favorites_page.is_the_current_page assert 'My Favorite Add-ons' == my_favorites_page.my_favorites_header_text
def test_that_external_link_leads_to_addon_website(self, mozwebqa): # Step 1 - Open AMO Home # Step 2 - Open MemChaser Plus details page details_page = Details(mozwebqa, 'MemChaser') website_link = details_page.website Assert.true(website_link != '') # Step 3 - Follow external website link details_page.click_website_link() Assert.contains(details_page.get_url_current_page(), website_link)
def test_that_learn_more_link_is_correct(self, base_url, selenium): # api addons_xml = AddonsAPI(base_url, self.firebug) learn_more_url = addons_xml.get_learn_more_url() # browser details_page = Details(base_url, selenium, self.firebug) details_page.get_url(learn_more_url) assert self.firebug in details_page.page_title
def test_that_make_contribution_button_is_clickable_and_loads_paypal_frame(self, mozwebqa): addon_page = Details(mozwebqa, self.addon_name) contribution_snippet = addon_page.click_contribute_button() Assert.true(contribution_snippet.is_make_contribution_button_visible) Assert.equal("Make Contribution", contribution_snippet.make_contribution_button_name) contribution_snippet.click_make_contribution_button() Assert.true(addon_page.is_paypal_login_dialog_visible)
def test_that_clicking_user_reviews_slides_down_page_to_reviews_section(self, mozwebqa): """ Test for Litmus 25708. https://litmus.mozilla.org/show_test.cgi?searchType=by_id&id=25708 """ details_page = Details(mozwebqa, 'firebug') details_page.click_user_reviews_link() Assert.true(details_page.is_reviews_section_visible) Assert.true(details_page.is_reviews_section_in_view)
def test_what_is_this_in_the_version_information(self, mozwebqa): """ https://litmus.mozilla.org/show_test.cgi?id=7906 """ details_page = Details(mozwebqa, "MemChaser") Assert.equal(details_page.version_information_heading, "Version Information") details_page.expand_version_information() Assert.equal("What's this?", details_page.license_faq_text) license_faq = details_page.click_whats_this_license() Assert.equal("Frequently Asked Questions", license_faq.header_text)
def test_that_tags_are_displayed(self, base_url, selenium): details_page = Details(base_url, selenium, "Firebug") assert details_page.are_tags_visible
def test_that_clicking_user_reviews_slides_down_page_to_reviews_section( self, mozwebqa): details_page = Details(mozwebqa, 'firebug') details_page.click_user_reviews_link() assert details_page.is_reviews_section_visible assert details_page.is_reviews_section_in_view
def test_that_summary_is_displayed(self, mozwebqa): details_page = Details(mozwebqa, "Firebug") # check that the summary is not empty assert re.match('(\w+\s*){3,}', details_page.summary) is not None
def test_that_in_often_used_with_addons_are_displayed(self, mozwebqa): details_page = Details(mozwebqa, "Firebug") assert u'Often used with\u2026' == details_page.often_used_with_header assert details_page.is_often_used_with_list_visible
def test_author_addons_when_there_are_multiple_authors( self, base_url, selenium): addon_with_multiple_authors = 'firebug' page = Details(base_url, selenium, addon_with_multiple_authors) assert len(page.authors) > 1 assert 'Other add-ons by these authors' == page.author_addons.heading
def test_other_addons_label_when_there_is_only_one_author(self, base_url, selenium): addon_with_one_author = 'MemChaser' detail_page = Details(base_url, selenium, addon_with_one_author) assert len(detail_page.authors) == 1 assert 'Other add-ons by %s' % detail_page.authors[0] == detail_page.other_addons_by_authors_text
def test_that_details_page_has_breadcrumb(self, base_url, selenium): detail_page = Details(base_url, selenium, 'firebug') assert 'Add-ons for Firefox' == detail_page.breadcrumbs[0].text assert 'Extensions' == detail_page.breadcrumbs[1].text assert 'Firebug' == detail_page.breadcrumbs[2].text
def test_that_clicking_user_reviews_slides_down_page_to_reviews_section( self, base_url, selenium): details_page = Details(base_url, selenium, 'firebug') details_page.click_user_reviews_link() assert details_page.is_reviews_section_visible assert details_page.is_reviews_section_in_view
def test_that_install_button_is_clickable(self, base_url, selenium): details_page = Details(base_url, selenium, 'firebug') assert 'active' in details_page.click_and_hold_install_button_returns_class_value( )
def test_that_summary_is_displayed(self, base_url, selenium): details_page = Details(base_url, selenium, "Firebug") # check that the summary is not empty assert re.match('(\w+\s*){3,}', details_page.summary) is not None
def test_that_about_this_addon_is_displayed(self, base_url, selenium): details_page = Details(base_url, selenium, "Firebug") assert 'About this Add-on' == details_page.about_addon assert re.match('(\w+\s*){3,}', details_page.description) is not None
def test_that_dropdown_menu_is_present_after_click_on_other_apps( self, base_url, selenium): details_page = Details(base_url, selenium, "Firebug") assert 'Other Applications' == details_page.header.menu_name details_page.header.hover_over_other_apps_menu() assert details_page.header.is_other_apps_dropdown_menu_visible
def test_that_add_a_review_button_works(self, base_url, selenium, logged_in): details_page = Details(base_url, selenium, 'Firebug') review_box = details_page.click_to_write_review() assert review_box.is_review_box_visible
def test_that_reviews_are_displayed(self, base_url, selenium): details_page = Details(base_url, selenium, "Firebug") assert 'Reviews' == details_page.review_title assert details_page.has_reviews for review in details_page.review_details: assert review is not None
def test_that_addon_name_is_displayed(self, base_url, selenium): details_page = Details(base_url, selenium, "Firebug") # check that the name is not empty assert not details_page.title == ''
def test_that_whats_this_link_for_source_license_links_to_an_answer_in_faq(self, base_url, selenium): details_page = Details(base_url, selenium, "Firebug") details_page.expand_version_information() user_faq_page = details_page.click_whats_this_license() assert re.match('(\w+\s*){3,}', user_faq_page.license_question) is not None assert re.match('(\w+\s*){3,}', user_faq_page.license_answer) is not None
def test_open_close_functionality_for_image_viewer(self, base_url, selenium): detail_page = Details(base_url, selenium, 'firebug') image_viewer = detail_page.previewer.click_image() assert image_viewer.is_visible image_viewer.close() assert not image_viewer.is_visible
def test_part_of_collections_are_displayed(self, mozwebqa): details_page = Details(mozwebqa, "Firebug") assert 'Part of these Collections' == details_page.part_of_collections_header assert len(details_page.part_of_collections) > 0
def test_that_license_link_works(self, base_url, selenium): addon_name = 'Firebug' details_page = Details(base_url, selenium, addon_name) assert 'BSD License' == details_page.license_link_text license_link = details_page.license_site assert license_link is not None
def click(self): self.root.find_element(*self._name_locator).click() from pages.desktop.details import Details return Details(self.base_url, self.selenium)
def test_that_add_to_collection_flyout_for_anonymous_users( self, base_url, selenium): details_page = Details(base_url, selenium, 'Firebug') details_page.click_add_to_collection_widget() assert 'Create an Add-ons Account' == details_page.collection_widget_button assert 'log in to your current account' == details_page.collection_widget_login_link
def test_other_addons_label_when_there_are_multiple_authors( self, base_url, selenium): addon_with_multiple_authors = 'firebug' detail_page = Details(base_url, selenium, addon_with_multiple_authors) assert len(detail_page.authors) > 1 assert 'Other add-ons by these authors' == detail_page.other_addons_by_authors_text
def test_that_tags_are_displayed(self, mozwebqa): details_page = Details(mozwebqa, "Firebug") assert details_page.are_tags_visible
def test_that_in_often_used_with_addons_are_displayed(self, base_url, selenium): details_page = Details(base_url, selenium, "Firebug") assert u'Often used with\u2026' == details_page.often_used_with_header assert details_page.is_often_used_with_list_visible
def test_that_reviews_are_displayed(self, mozwebqa): details_page = Details(mozwebqa, "Firebug") assert 'Reviews' == details_page.review_title assert details_page.has_reviews for review in details_page.review_details: assert review is not None
def test_the_developers_comments_section(self, base_url, selenium): details_page = Details(base_url, selenium, 'Firebug') assert u'Developer\u2019s Comments' == details_page.devs_comments_title details_page.expand_devs_comments() assert details_page.is_devs_comments_section_expanded assert re.match('(\w+\s*){3,}', details_page.devs_comments_message) is not None
def test_that_install_button_is_clickable(self, mozwebqa): details_page = Details(mozwebqa, 'firebug') assert 'active' in details_page.click_and_hold_install_button_returns_class_value( )
def test_that_clicking_info_link_slides_down_page_to_version_info(self, base_url, selenium): details_page = Details(base_url, selenium, 'firebug') details_page.click_version_info_link() assert details_page.version_info_link == details_page.version_information_href assert details_page.is_version_information_section_expanded assert details_page.is_version_information_section_in_view
def test_that_register_login_link_is_present_in_addon_details_page( self, base_url, selenium): details_page = Details(base_url, selenium, "Firebug") assert details_page.header.is_register_link_visible, 'Register link is not visible' assert details_page.header.is_login_link_visible, 'Login links is not visible'
def test_part_of_collections_are_displayed(self, base_url, selenium): details_page = Details(base_url, selenium, "Firebug") assert 'Part of these Collections' == details_page.part_of_collections_header assert len(details_page.part_of_collections) > 0