pages/desktop/reviewer_tools/manual_review_log.py (77 lines of code) (raw):
from selenium.webdriver.common.by import By
from pages.desktop.base import Base
from scripts import reusables
class ManualReviewLog(Base):
URL_TEMPLATE = 'reviewers/review_log'
_page_header_text_locator = (By.XPATH, "//h2[contains(text(),'Add-on Review Log')]")
_no_results_text_locator = (By.CSS_SELECTOR, "p.no-results")
_search_field_locator = (By.XPATH, "//input[@id='id_search']")
_filter_button_locator = (By.XPATH, "//button[@type='submit']")
_review_log_table_locator = (By.ID, 'log-listing')
_review_log_table_date_locator = (By.XPATH, "//table[@id='log-listing']//th[contains(text(),'Date')]")
_review_log_table_event_locator = (By.XPATH, "//table[@id='log-listing']//th[contains(text(),'Event')]")
_review_log_table_reviewer_locator = (By.XPATH, "//table[@id='log-listing']//th[contains(text(),'Reviewer')]")
_show_comments_first_row_locator = (By.CSS_SELECTOR, "a.comments.show")
_hide_comments_first_row_locator = (By.XPATH, "a.comments.hide")
# Interaction Methods ----------------------------------------------------------
@property
def page_header_text(self):
return self.find_element(*self._page_header_text_locator)
@property
def no_results_text(self):
return self.find_element(*self._no_results_text_locator)
@property
def search_field(self):
return self.find_element(*self._search_field_locator)
@property
def filter_button(self):
return self.find_element(*self._filter_button_locator)
@property
def review_log_table(self):
return self.find_element(*self._review_log_table_locator)
@property
def review_log_table_date(self):
return self.find_element(*self._review_log_table_date_locator)
@property
def review_log_table_event(self):
return self.find_element(*self._review_log_table_event_locator)
@property
def review_log_table_reviewer(self):
return self.find_element(*self._review_log_table_reviewer_locator)
@property
def show_comments_first_row(self):
return self.find_element(*self._show_comments_first_row_locator)
@property
def hide_comments_first_row(self):
return self.find_element(*self._hide_comments_first_row_locator)
# Click Methods -----------------------------------------------------------
def click_show_comments_first_row(self):
return self.find_element(*self._show_comments_first_row_locator).click()
def click_hide_comments_first_row(self):
return self.find_element(*self.hide_comments_first_row).click()
def click_filter_button(self):
return self.find_element(*self._filter_button_locator).click()
# Write in field methods -----------------------------------------------------
def write_in_search_field(self, value):
return self.find_element(*self._search_field_locator).send_keys(value)
def wait_for_page_to_load(self):
self.wait.until(
lambda _: self.find_element(*self._page_header_text_locator).is_displayed(),
message="Manual Review Log was not loaded",
)
assert "Add-on Review Log" in self.page_header_text.text
return self
# Assert Method
def assert_review_page_elements(self):
assert self.page_header_text.is_displayed(), "Page header text is not displayed"
assert self.search_field.is_displayed(), "Search field is not displayed"
assert self.filter_button.is_displayed(), "Filter button is not displayed"
assert self.review_log_table.is_displayed(), "Review log table is not displayed"
assert self.review_log_table_date.is_displayed(), "Review log table date is not displayed"
assert self.review_log_table_event.is_displayed(), "Review log table event is not displayed"
assert self.review_log_table_reviewer.is_displayed(), "Review log table reviewer is not displayed"
assert self.show_comments_first_row.is_displayed(), "Show comments button for first row is not displayed"
def assert_no_results_search(self, value):
self.write_in_search_field(reusables.get_random_string(5))
self.click_filter_button()
self.wait.until(
lambda _: self.find_element(*self._no_results_text_locator).is_displayed(),
message="No results text did not appear",
)
assert value in self.no_results_text.text