pages/desktop/reviewer_tools/addon_review_page.py (163 lines of code) (raw):
from selenium.webdriver.common.by import By
from pages.desktop.base import Base
class ReviewAddonPage(Base):
URL_TEMPLATE = 'reviewers/review/'
_addon_section_locator = (By.ID, 'addon')
# Announcement section
_announcement_section_locator = (By.CSS_SELECTOR, '.daily-message')
_announcement_text_locator = (By.CSS_SELECTOR, '.featured-inner > h2')
_announcement_close_locator = (By.CSS_SELECTOR, '.close')
# Addon info section
_addon_info_section_locator = (By.CSS_SELECTOR, '.addon-info')
_addon_name_text_locator = (By.ID, 'addon-name')
_addon_info_id_locator = (By.CSS_SELECTOR, '.addon-guid')
_addon_internal_id_locator = (By.CSS_SELECTOR, '.addon-amo-id')
# Abuse report Section
_abuse_report_section_locator = (By.CSS_SELECTOR, '.abuse_reports')
# Whiteboard section
_whiteboard_section_locator = (By.ID, 'whiteboard_form')
_whiteboard_public_locator = (By.CSS_SELECTOR, '.whiteboard-inner')
_whiteboard_private_locator = (By.CSS_SELECTOR, '.whiteboard.private')
_whiteboard_actions_locator = (By.CSS_SELECTOR, '.whiteboard-actions')
# Sidenav section
_actions_list_locator = (By.ID, 'actions-addon')
_view_product_page_locator = (By.XPATH, "//ul[@id='actions-addon']//a[contains(text(), 'View Product Page')]")
_edit_locator = (By.XPATH, "//ul[@id='actions-addon']//a[contains(text(), 'Edit')]")
_admin_page_locator = (By.XPATH, "//ul[@id='actions-addon']//a[contains(text(), 'Admin Page')]")
_statistics_locator = (By.XPATH, "//ul[@id='actions-addon']//a[contains(text(), 'Statistics')]")
# Add-on History section
_addon_history_text_locator = (By.ID, 'history')
_addon_versions_history_locator = (By.ID, 'versions-history')
# Reviewer Actions section
_review_actions_sections_locator = (By.ID, 'review-actions')
_reject_multiple_versions_locator = (By.XPATH, "//label[contains(text(), 'Reject Multiple Versions')]")
_clear_pending_rejection_locator = (By.XPATH, "//label[contains(text(), 'Clear pending rejection')]")
_clear_needs_human_review_locator = (By.XPATH, "//label[contains(text(), 'Clear Needs Human Review')]")
_set_needs_human_review_locator = (By.XPATH, "//label[contains(text(), 'Set Needs Human Review')]")
_reviewer_reply_locator = (By.XPATH, "//label[contains(text(), 'Reviewer reply')]")
_force_disable_locator = (By.XPATH, "//label[contains(text(), 'Force disable')")
_comment_locator = (By.XPATH, "//label[contains(text(), 'Comment')]")
# More actions section
_more_actions_section_locator = (By.ID, 'extra-review-actions')
_notify_about_listed_versions_locator = (By.ID, 'notify_new_listed_versions')
_notify_about_unlisted_versions_locator =(By.ID, 'notify_new_unlisted_versions')
# Announcement section interaction methods
@property
def announcement_section(self):
return self.find_element(*self._announcement_section_locator)
@property
def announcement_text(self):
return self.find_element(*self._announcement_text_locator)
@property
def announcement_close_button(self):
return self.find_element(*self._announcement_close_locator)
# Addon info section interaction methods
@property
def addon_info_section(self):
return self.find_element(*self._addon_info_section_locator)
@property
def addon_name_text(self):
return self.find_element(*self._addon_name_text_locator)
@property
def addon_info_id(self):
return self.find_element(*self._addon_info_id_locator)
@property
def addon_internal_id(self):
return self.find_element(*self._addon_internal_id_locator)
# Abuse report Section interaction methods
@property
def abuse_report_section(self):
return self.find_element(*self._abuse_report_section_locator)
# Whiteboard section interaction methods
@property
def whiteboard_section(self):
return self.find_element(*self._whiteboard_section_locator)
@property
def whiteboard_public(self):
return self.find_element(*self._whiteboard_public_locator)
@property
def whiteboard_private(self):
return self.find_element(*self._whiteboard_private_locator)
@property
def whiteboard_actions(self):
return self.find_element(*self._whiteboard_actions_locator)
# Sidenav section interaction methods
@property
def actions_list(self):
return self.find_element(*self._actions_list_locator)
@property
def view_products_page(self):
return self.find_element(*self._view_product_page_locator)
@property
def edit_page(self):
return self.find_element(*self._edit_locator)
@property
def admin_page(self):
return self.find_element(*self._admin_page_locator)
@property
def statistics_page(self):
return self.find_element(*self._statistics_locator)
# Add-on History section interaction methods
@property
def addon_history_text(self):
return self.find_element(*self._addon_history_text_locator)
@property
def addon_versions_history(self):
return self.find_element(*self._addon_versions_history_locator)
# Reviewer Actions section interaction methods
@property
def review_actions_section(self):
return self.find_element(*self._review_actions_sections_locator)
@property
def reject_multiple_versions(self):
return self.find_element(*self._reject_multiple_versions_locator)
@property
def clear_pending_rejection(self):
return self.find_element(*self._clear_pending_rejection_locator)
@property
def clear_needs_human_review(self):
return self.find_element(*self._clear_needs_human_review_locator)
@property
def set_needs_human_review(self):
return self.find_element(*self._set_needs_human_review_locator)
@property
def reviewer_reply(self):
return self.find_element(*self._reviewer_reply_locator)
@property
def force_disable(self):
return self.find_element(*self._force_disable_locator)
@property
def comment(self):
return self.find_element(*self._comment_locator)
# More actions section interaction methods
@property
def more_actions_section(self):
return self.find_element(*self._more_actions_section_locator)
@property
def more_actions_new_listed_versions(self):
return self.find_element(*self._notify_about_listed_versions_locator)
@property
def more_actions_new_unlisted_versions(self):
return self.find_element(*self._notify_about_unlisted_versions_locator)
# Assert Methods
def assert_announcement_section_displayed(self):
assert self.announcement_section.is_displayed(), "Announcement section is not displayed"
assert self.announcement_text.is_displayed(), "Announcement text is not displayed"
assert self.announcement_close_button.is_displayed(), "Announcement close button is not displayed"
def assert_addon_info_section_displayed(self):
assert self.addon_info_section.is_displayed(), "Addon info section is not displayed"
assert self.addon_name_text.is_displayed(), "Addon name text is not displayed"
assert self.addon_info_id.is_displayed(), "Addon info ID is not displayed"
assert self.addon_internal_id.is_displayed(), "Addon internal ID is not displayed"
def assert_abuse_report_section_displayed(self):
assert self.abuse_report_section.is_displayed(), "Abuse Report Section is not displayed"
def assert_whiteboard_section_displayed(self):
assert self.whiteboard_section.is_displayed(), "Whiteboard section is not displayed"
assert self.whiteboard_public.is_displayed(), "Whiteboard public is not displayed"
assert self.whiteboard_private.is_displayed(), "Whiteboard private is not displayed"
assert self.whiteboard_actions.is_displayed(), "Whiteboard actions are not displayed"
def assert_sidenav_section_displayed(self):
assert self.actions_list.is_displayed(), "Actions list is not displayed"
assert self.view_products_page.is_displayed(), "View products page link is not displayed"
assert self.edit_page.is_displayed(), "Edit page link is not displayed"
assert self.admin_page.is_displayed(), "Admin page link is not displayed"
assert self.statistics_page.is_displayed(), "Statistics page link is not displayed"
def assert_addon_history_section_displayed(self):
assert self.addon_history_text.is_displayed(), "Addon history text is not displayed"
assert self.addon_versions_history.is_displayed(), "Addon versions history is not displayed"
def assert_reviewer_actions_section_displayed(self):
assert self.reviewer_reply.is_displayed(), "Reviewer reply button is not displayed"
assert self.comment.is_displayed(), "Comment button is not displayed"
def assert_more_actions_section_displayed(self):
assert self.more_actions_section.is_displayed(), "More actions section is not displayed"
assert self.more_actions_new_listed_versions.is_displayed(), "Notify about new listed versions option is not displayed"
assert self.more_actions_new_unlisted_versions.is_displayed(), "Notify about new unlisted versions option is not displayed"
def wait_for_page_to_load(self):
self.wait.until(
lambda _: self.find_element(*self._addon_section_locator).is_displayed(),
message="Addon Review Page was not loaded",
)
return self