def test_that_checks_the_addition_of_a_review(self, mozwebqa): new_user = PersonaTestUser().create_user() mock_review = MockReview() home_page = Home(mozwebqa) home_page.go_to_homepage() app_name = home_page.app_under_test # Create new user and login. settings_page = home_page.header.click_settings() settings_page.login(user=new_user) # Search for an app and go to it's details page. home_page.go_to_homepage() search_page = home_page.search_for(app_name) details_page = search_page.results[0].click_app() Assert.true(details_page.is_product_details_visible) # Write a review. review_box = details_page.click_write_review() review_box.write_a_review(mock_review['rating'], mock_review['body']) Assert.equal(details_page.notification_message, "Your review was posted") # Go to the reviews page reviews_page = details_page.click_view_reviews() # Check review review = reviews_page.reviews[0] Assert.equal(review.rating, mock_review['rating']) Assert.contains(review.author, new_user['email']) Assert.equal(review.text, mock_review['body'])
def test_that_checks_the_addition_of_a_review(self, mozwebqa, new_user): mock_review = MockReview() home_page = Home(mozwebqa) home_page.go_to_homepage() home_page.nav_menu.click_sign_in() home_page.login(new_user['email'], new_user['password']) details_page = home_page.go_to_first_free_app_page() Assert.true(details_page.is_product_details_visible) # Write a review review_box = details_page.click_write_review() review_box.write_a_review(mock_review['rating'], mock_review['body']) Assert.equal(details_page.notification_message, "Your review was successfully posted. Thanks!") details_page.wait_notification_box_not_visible() # Go to the reviews page reviews_page = details_page.click_view_reviews() # Check review review = reviews_page.reviews[0] Assert.equal(review.rating, mock_review['rating']) Assert.contains(review.author, new_user['email']) Assert.contains(review.text, mock_review['body'])
def test_that_checks_the_addition_of_a_review(self, mozwebqa): self._reviews_setup(mozwebqa) # delete the review before getting started self.mk_api.delete_app_review(self.review_id) # so that teardown does not try to delete the review del self.review_id # Step 1 - Login into Marketplace mock_review = MockReview() home_page = Home(mozwebqa) home_page.go_to_homepage() home_page.login(user="******") Assert.true(home_page.is_the_current_page) # Step 2 - Search for the test app and go to its details page search_page = home_page.header.search(self.app_name) details_page = search_page.results[0].click_name() Assert.true(details_page.is_the_current_page) Assert.true(details_page.is_write_review_button_visible) Assert.equal(details_page.write_review_button, "Write a Review") # Step 3 - Write a review add_review_box = details_page.click_write_review() details_page = add_review_box.write_a_review(mock_review['rating'], mock_review['body']) # Step 4 - Check review Assert.true(details_page.notification_visible, "Review not added: %s" % details_page.success_message) Assert.equal(details_page.notification_message, "Your review was posted") Assert.equal(details_page.first_review_rating, mock_review['rating']) Assert.equal(details_page.first_review_body, mock_review['body'])
def test_that_checks_the_editing_of_a_review(self, mozwebqa): self._reviews_setup(mozwebqa) home_page = Home(mozwebqa) home_page.go_to_homepage() # Login into Marketplace home_page.login(user="******") Assert.true(home_page.is_the_current_page) # Search for the test app and go to its details page search_page = home_page.header.search(self.app_name) details_page = search_page.results[0].click_name() Assert.true(details_page.is_the_current_page) Assert.true(details_page.is_edit_review_button_visible) Assert.equal(details_page.edit_review_button, "Edit Your Review") # Write a review edit_review = details_page.click_edit_review() mock_review = MockReview() details_page = edit_review.write_a_review(mock_review['rating'], mock_review['body']) # Check notification Assert.equal(details_page.notification_message, "Review updated successfully") # Go to reviews page and verify reviews = details_page.click_reviews_button() Assert.equal(reviews.logged_in_users_review.text, mock_review['body']) Assert.equal(reviews.logged_in_users_review.rating, mock_review['rating']) # Clean up self.mk_api.delete_app_review(self.review_id)
def _create_review(self, mozwebqa, user): # Step 1 - Login into Marketplace mock_review = MockReview() home_page = Home(mozwebqa) home_page.go_to_homepage() home_page.header.click_sign_in() home_page.login(user['email'], user['password']) assert home_page.is_the_current_page # Step 2 - Search for the test app and go to its details page app_name = self._take_first_free_app_name(mozwebqa) details_page = home_page.header.search_and_click_on_app(app_name) assert details_page.is_the_current_page details_page.wait_for_review_button_visible() assert 'Write a review' == details_page.review_button_text # Step 3 - Write a review add_review_box = details_page.click_review_button() details_page = add_review_box.write_a_review(mock_review['rating'], mock_review['body']) # Step 4 - Check review assert mock_review['rating'] == details_page.first_review_rating assert mock_review['body'] == details_page.first_review_body return app_name
def test_that_after_writing_a_review_clicking_back_goes_to_app_page( self, mozwebqa, new_user): """Logged out, click "Write a Review" on an app page, sign in, submit a review, click Back, test that the current page is the app page. """ mock_review = MockReview() home_page = Home(mozwebqa) home_page.go_to_homepage() details_page = home_page.go_to_first_free_app_page() assert details_page.is_product_details_visible app_name = details_page.title # Write a review. review_box = details_page.click_write_review() details_page.login(new_user['email'], new_user['password']) review_box.write_a_review(mock_review['rating'], mock_review['body']) assert 'Your review was successfully posted. Thanks!' == details_page.notification_message details_page.wait_notification_box_not_visible() # Go to the reviews page reviews_page = details_page.click_view_reviews() reviews_page.header.click_back() assert details_page.is_product_details_visible assert app_name == details_page.title
def test_that_checks_the_addition_of_a_review(self, mozwebqa): user = PersonaTestUser().create_user() # Step 1 - Login into Marketplace mock_review = MockReview() home_page = Home(mozwebqa) home_page.go_to_homepage() home_page.login(user) Assert.true(home_page.is_the_current_page) # Step 2 - Search for the test app and go to its details page search_page = home_page.header.search(self.test_app) details_page = search_page.results[0].click_name() Assert.true(details_page.is_the_current_page) Assert.true(details_page.is_write_review_button_visible) Assert.equal(details_page.write_review_button, "Write a Review") # Step 3 - Write a review add_review_box = details_page.click_write_review() details_page = add_review_box.write_a_review(mock_review['rating'], mock_review['body']) # Step 4 - Check review Assert.true(details_page.is_success_message_visible, "Review not added: %s" % details_page.success_message) Assert.equal(details_page.success_message, "Your review was posted") Assert.equal(details_page.first_review_rating, mock_review['rating']) Assert.equal(details_page.first_review_body, mock_review['body'])
def test_that_after_writing_a_review_clicking_back_goes_to_app_page(self, mozwebqa): """Logged out, click "Write a Review" on an app page, sign in, submit a review, click Back, test that the current page is the app page. """ mock_review = MockReview() home_page = Home(mozwebqa) home_page.go_to_homepage() # Search for an app and go to it's details page. search_term = self._take_first_app_name(mozwebqa) details_page = home_page.search_and_click_on_app(search_term) Assert.true(details_page.is_product_details_visible) # Write a review. review_box = details_page.click_write_review() acct = self.create_new_user(mozwebqa) details_page.login(acct) self.review_id = review_box.write_a_review(mock_review['rating'], mock_review['body']).review_id Assert.equal(details_page.notification_message, "Your review was successfully posted. Thanks!") details_page.wait_notification_box_not_visible() # Go to the reviews page reviews_page = details_page.click_view_reviews() reviews_page.header.click_back() Assert.true(details_page.is_product_details_visible) Assert.equal(search_term, details_page.title)
def test_add_review_after_sign_in_from_details_page(self, mozwebqa): # Go to Marketplace Home page mock_review = MockReview() home_page = Home(mozwebqa) home_page.go_to_homepage() Assert.true(home_page.is_the_current_page) # Search for the test app and go to its details page search_term = self._take_first_new_app_name(mozwebqa) details_page = home_page.header.search_and_click_on_app(search_term) Assert.true(details_page.is_the_current_page) Assert.equal(details_page.review_button_text, "Sign in to review") # Login add_review_box = details_page.click_review_button() acct = self.create_new_user(mozwebqa) details_page.login(acct) add_review_box.write_a_review(mock_review['rating'], mock_review['body']) details_page.wait_notification_box_visible() details_page.wait_notification_box_not_visible() Assert.equal(details_page.first_review_rating, mock_review['rating']) Assert.equal(details_page.first_review_body, mock_review['body'])
def test_that_checks_the_addition_of_a_review(self, mozwebqa): # Step 1 - Login into Marketplace mock_review = MockReview() home_page = Home(mozwebqa) home_page.go_to_homepage() home_page.header.click_sign_in() acct = self.create_new_user(mozwebqa) home_page.login(acct) Assert.true(home_page.is_the_current_page) # Step 2 - Search for the test app and go to its details page search_term = self._take_first_new_app_name(mozwebqa) details_page = home_page.header.search_and_click_on_app(search_term) Assert.true(details_page.is_the_current_page) details_page.wait_for_review_button_visible() Assert.equal(details_page.review_button_text, "Write a review") # Step 3 - Write a review add_review_box = details_page.click_review_button() details_page = add_review_box.write_a_review(mock_review['rating'], mock_review['body']) # Step 4 - Check review details_page.wait_notification_box_visible() Assert.equal(details_page.notification_message, "Your review was successfully posted. Thanks!") details_page.wait_notification_box_not_visible() Assert.equal(details_page.first_review_rating, mock_review['rating']) Assert.equal(details_page.first_review_body, mock_review['body'])
def _reviews_setup(self, mozwebqa): # init API client self.mk_api = MarketplaceAPI.get_client(mozwebqa.base_url, mozwebqa.credentials) # Submit a review using marketplace API mock_review = MockReview() home_page = Home(mozwebqa) self.app_name, self.review_id = self.mk_api.submit_app_review_for_either( home_page.app_under_test, mock_review.body, mock_review.rating)
def test_that_after_writing_a_review_clicking_back_goes_to_app_page( self, mozwebqa): """Logged out, click "Write a Review" on an app page, sign in, submit a review, click Back, test that the current page is the app page. """ self._reviews_setup(mozwebqa) mock_review = MockReview() home_page = Home(mozwebqa) home_page.go_to_homepage() app_name = home_page.app_under_test # Search for an app and go to it's details page. search_page = home_page.search_for(app_name) details_page = search_page.results[0].click_app() Assert.true(details_page.is_product_details_visible) # Write a review. review_box = details_page.click_write_review() details_page.login_with_user_from_other_pages(user="******") self.review_id = review_box.write_a_review( mock_review['rating'], mock_review['body']).review_id Assert.equal(details_page.notification_message, "Your review was posted") details_page.wait_notification_box_not_visible() # Go to the reviews page and delete the review reviews_page = details_page.click_view_reviews() reviews = reviews_page.reviews[0] reviews.delete() reviews_page.wait_notification_box_visible() Assert.equal(details_page.notification_message, "Review deleted") # if clean up was successful, don't cleanup in teardown del self.review_id # After clicking back, current page is the app's details page. reviews_page.header.click_back() Assert.true(details_page.is_product_details_visible) Assert.equal(app_name, details_page.title)
def test_that_checks_the_addition_of_a_review(self, mozwebqa): self._reviews_setup(mozwebqa) mock_review = MockReview() home_page = Home(mozwebqa) home_page.go_to_homepage() app_name = home_page.app_under_test # Login settings_page = home_page.header.click_settings() settings_page.login(user='******') # Search for an app and go to it's details page. home_page.go_to_homepage() search_page = home_page.search_for(app_name) details_page = search_page.results[0].click_app() Assert.true(details_page.is_product_details_visible) # Write a review. review_box = details_page.click_write_review() self.review_id = review_box.write_a_review( mock_review['rating'], mock_review['body']).review_id Assert.equal(details_page.notification_message, "Your review was posted") # Go to the reviews page reviews_page = details_page.click_view_reviews() # Check review review = reviews_page.reviews[0] Assert.equal(review.rating, mock_review['rating']) Assert.contains(review.author, mozwebqa.credentials['default']['email']) Assert.equal(review.text, mock_review['body']) # clean up review.delete() # if clean up was successful, don't cleanup in teardown del self.review_id
def test_add_review_after_sign_in_from_details_page(self, mozwebqa, new_user): # Go to Marketplace Home page mock_review = MockReview() home_page = Home(mozwebqa) home_page.go_to_homepage() assert home_page.is_the_current_page # Search for the test app and go to its details page search_term = self._take_first_free_app_name(mozwebqa) details_page = home_page.header.search_and_click_on_app(search_term) assert details_page.is_the_current_page assert 'Sign in to review' == details_page.review_button_text # Login add_review_box = details_page.click_review_button() details_page.login(new_user['email'], new_user['password']) add_review_box.write_a_review(mock_review['rating'], mock_review['body']) assert mock_review['rating'] == details_page.first_review_rating assert mock_review['body'] == details_page.first_review_body
def test_that_after_writing_a_review_clicking_back_goes_to_app_page( self, mozwebqa): """Logged out, click "Write a Review" on an app page, sign in, submit a review, click Back, test that the current page is the app page. """ mock_review = MockReview() home_page = Home(mozwebqa) home_page.go_to_homepage() # Search for an app and go to it's details page. search_page = home_page.search_for(self.app_name) details_page = search_page.results[0].click_app() Assert.true(details_page.is_product_details_visible) # Write a review. details_page.click_write_review() details_page.login_with_user_from_other_pages(user="******") add_review_box = AddReview(mozwebqa) add_review_box.write_a_review(mock_review['rating'], mock_review['body']) Assert.true(details_page.is_success_message_visible, "Review not added: %s" % details_page.success_message) Assert.equal(details_page.success_message, "Your review was posted") # Go to the reviews page and delete the review reviews_page = details_page.click_view_reviews() reviews = reviews_page.reviews[0] reviews.delete() Assert.true(reviews_page.is_success_message_visible, "Review not deleted: %s" % details_page.success_message) # After clicking back, current page is the app's details page. reviews_page.header.click_back() Assert.true(details_page.is_product_details_visible) Assert.equal(self.app_name, details_page.title)
def test_that_checks_the_editing_of_a_review(self, mozwebqa, new_user): # Create the review to be edited app_name = self._create_review(mozwebqa, new_user) home_page = Home(mozwebqa) home_page.go_to_homepage() details_page = home_page.header.search_and_click_on_app(app_name) assert details_page.is_the_current_page details_page.wait_for_review_button_visible() assert 'Edit your review' == details_page.review_button_text # Edit the review edit_review = details_page.click_review_button(edit_review=True) mock_review = MockReview() details_page = edit_review.write_a_review(mock_review['rating'], mock_review['body']) # Go to reviews page and verify reviews_page = details_page.click_all_reviews_button() review = reviews_page.get_review_for_user(new_user['name']) assert mock_review['body'] == review.text assert mock_review['rating'] == review.rating
def test_that_checks_the_editing_of_a_review(self, mozwebqa): self._reviews_setup(mozwebqa) home_page = Home(mozwebqa) home_page.go_to_homepage() # Login into Marketplace home_page.header.click_sign_in() acct = self.get_user(mozwebqa) home_page.login(acct) Assert.true(home_page.is_the_current_page) # Search for the test app and go to its details page search_page = home_page.header.search(self.app_name) details_page = search_page.results[0].click_name() Assert.true(details_page.is_the_current_page) details_page.wait_for_review_button_visible() Assert.equal(details_page.review_button_text, "Edit your review") # Write a review edit_review = details_page.click_review_button(edit_review=True) mock_review = MockReview() details_page = edit_review.write_a_review(mock_review['rating'], mock_review['body']) # Check notification details_page.wait_notification_box_visible() Assert.equal(details_page.notification_message, "Your review was successfully edited") details_page.wait_notification_box_not_visible() # Go to reviews page and verify reviews = details_page.click_all_reviews_button() Assert.equal(reviews.logged_in_users_review.text, mock_review['body']) Assert.equal(reviews.logged_in_users_review.rating, mock_review['rating']) # Clean up self.mk_api.delete_app_review(self.review_id)
def test_that_checks_the_addition_of_a_review(self, mozwebqa, new_user): mock_review = MockReview() home_page = Home(mozwebqa) home_page.go_to_homepage() home_page.more_menu.click_sign_in() home_page.login(new_user['email'], new_user['password']) details_page = home_page.go_to_first_free_app_page() assert details_page.is_product_details_visible # Write a review review_box = details_page.click_write_review() review_box.write_a_review(mock_review['rating'], mock_review['body']) assert 'Your review was successfully posted. Thanks!' == details_page.notification_message details_page.wait_notification_box_not_visible() # Go to the reviews page reviews_page = details_page.click_view_reviews() # Check review review = reviews_page.reviews[0] assert mock_review['rating'] == review.rating assert review.author in new_user['email'] assert mock_review['body'] in review.text
def test_that_checks_the_deletion_of_a_review(self, mozwebqa): """ https://moztrap.mozilla.org/manage/case/648/ """ # Step 1 - Login into Marketplace mock_review = MockReview() home_page = Home(mozwebqa) home_page.go_to_homepage() home_page.login() Assert.true(home_page.is_the_current_page) # Step 2 - Search for the test app and go to its details page search_page = home_page.header.search(self.test_app) details_page = search_page.results[0].click_name() Assert.true(details_page.is_the_current_page) Assert.true(details_page.is_write_review_button_visible) # Step 3 - Write a review add_review_box = details_page.click_write_review() details_page = add_review_box.write_a_review(mock_review['rating'], mock_review['body']) # Step 4 - Check review Assert.true(details_page.is_success_message_visible) # Step 5 - Go to reviews page reviews_page = details_page.click_reviews_button() # Step 6 - Delete review reviews = reviews_page.reviews[0] reviews.delete() Assert.true(reviews_page.is_success_message_visible) Assert.equal(reviews_page.success_message, "Your review was deleted") Assert.false(reviews.is_review_visible)
def test_that_checks_the_addition_of_a_review(self, mozwebqa): mock_review = MockReview() home_page = Home(mozwebqa) home_page.go_to_homepage() app_name = self._take_first_app_name(mozwebqa) # Login settings_page = home_page.header.click_settings() settings_page.click_sign_in() acct = self.create_new_user(mozwebqa) settings_page.login(acct) settings_page.wait_for_user_email_visible() # Search for an app and go to it's details page. search_page = home_page.search_for(app_name) details_page = search_page.results[0].click_app() Assert.true(details_page.is_product_details_visible) # Write a review details_page.refresh_page() review_box = details_page.click_write_review() self.review_id = review_box.write_a_review(mock_review['rating'], mock_review['body']).review_id Assert.equal(details_page.notification_message, "Your review was successfully posted. Thanks!") details_page.wait_notification_box_not_visible() # Go to the reviews page reviews_page = details_page.click_view_reviews() # Check review review = reviews_page.reviews[0] Assert.equal(review.rating, mock_review['rating']) Assert.contains(review.author, acct.email) Assert.contains(review.text, mock_review['body'])