diff --git a/pages/about_page.py b/pages/about_page.py index 0813b7c07d..0d1d00a602 100644 --- a/pages/about_page.py +++ b/pages/about_page.py @@ -8,8 +8,8 @@ class AboutPage(BasePage): """ About page - The first page that appears when navigating to base URL""" - LOGIN_LINK: Tuple[By, str] = (By.CSS_SELECTOR, '.login') - REGISTER_LINK: Tuple[By, str] = (By.CSS_SELECTOR, '.register') + LOGIN_LINK: Tuple[str, str] = (By.CSS_SELECTOR, '.login') + REGISTER_LINK: Tuple[str, str] = (By.CSS_SELECTOR, '.register') def __init__(self, driver, wait): super().__init__(driver, wait) diff --git a/pages/base_page.py b/pages/base_page.py index b390bcdb53..780b5177a7 100644 --- a/pages/base_page.py +++ b/pages/base_page.py @@ -2,7 +2,6 @@ from selenium.common.exceptions import NoSuchElementException from selenium.webdriver import ActionChains, Chrome, Edge, Firefox -from selenium.webdriver.common.by import By from selenium.webdriver.remote.webelement import WebElement from selenium.webdriver.support import expected_conditions from selenium.webdriver.support.expected_conditions import \ @@ -31,18 +30,18 @@ def edit_cookie(self, cookie_key: str, cookie_value: str): "expiry":(cookie['expiry']) }) - def click(self, locator: Tuple[By, str]) -> None: + def click(self, locator: Tuple[str, str]) -> None: el: WebElement = self.wait.until(expected_conditions.element_to_be_clickable(locator)) self._highlight_element(el, "green") el.click() - def fill_text(self, locator: Tuple[By, str], txt: str) -> None: + def fill_text(self, locator: Tuple[str, str], txt: str) -> None: el: WebElement = self.wait.until(expected_conditions.element_to_be_clickable(locator)) el.clear() self._highlight_element(el, "green") el.send_keys(txt) - def clear_text(self, locator: Tuple[By, str]) -> None: + def clear_text(self, locator: Tuple[str, str]) -> None: el: WebElement = self.wait.until(expected_conditions.element_to_be_clickable(locator)) el.clear() @@ -53,7 +52,7 @@ def submit(self, webelement: WebElement) -> None: self._highlight_element(webelement, "green") webelement.submit() - def get_text(self, locator: Tuple[By, str]) -> str: + def get_text(self, locator: Tuple[str, str]) -> str: el: WebElement = self.wait.until(expected_conditions.visibility_of_element_located(locator)) self._highlight_element(el, "green") return el.text diff --git a/pages/forgot_password_page.py b/pages/forgot_password_page.py index 5121eec055..7a4071a922 100644 --- a/pages/forgot_password_page.py +++ b/pages/forgot_password_page.py @@ -7,11 +7,11 @@ class ForgotPasswordPage(BasePage): - EMAIL_FIELD: Tuple[By, str] = (By.CSS_SELECTOR, "[name=email]") - SEND_PASSWORD_RESET_LINK_BUTTON: Tuple[By, str] = (By.CSS_SELECTOR, "[type=submit]") - ERROR_MSG: Tuple[By, str] = (By.CSS_SELECTOR, '.alert-danger') - SUCCESS_MSG: Tuple[By, str] = (By.CSS_SELECTOR, '.alert-success') - PAGE_TITLE: Tuple[By, str] = (By.CSS_SELECTOR, ".e-form-heading") + EMAIL_FIELD: Tuple[str, str] = (By.CSS_SELECTOR, "[name=email]") + SEND_PASSWORD_RESET_LINK_BUTTON: Tuple[str, str] = (By.CSS_SELECTOR, "[type=submit]") + ERROR_MSG: Tuple[str, str] = (By.CSS_SELECTOR, '.alert-danger') + SUCCESS_MSG: Tuple[str, str] = (By.CSS_SELECTOR, '.alert-success') + PAGE_TITLE: Tuple[str, str] = (By.CSS_SELECTOR, ".e-form-heading") def __init__(self, driver, wait): super().__init__(driver, wait) diff --git a/pages/login_page.py b/pages/login_page.py index 54442a29bf..49deb39264 100644 --- a/pages/login_page.py +++ b/pages/login_page.py @@ -8,12 +8,12 @@ class LoginPage(TopMenuBar): """ Login Page """ - USERNAME_FIELD: Tuple[By, str] = (By.CSS_SELECTOR, "input[type=email]") - PASSWORD_FIELD: Tuple[By, str] = (By.CSS_SELECTOR, "input[type=password]") - LOGIN_BUTTON: Tuple[By, str] = (By.CSS_SELECTOR, "button[type=submit]") - LOGIN_ERROR_MESSAGE: Tuple[By, str] = (By.CSS_SELECTOR, "div.alert-danger") - PAGE_TITLE: Tuple[By, str] = (By.CSS_SELECTOR, ".e-form-heading") - FORGOT_PASSWORD_LINK: Tuple[By, str] = (By.CSS_SELECTOR, "[href='https://app.involve.me/password/reset']") + USERNAME_FIELD: Tuple[str, str] = (By.CSS_SELECTOR, "input[type=email]") + PASSWORD_FIELD: Tuple[str, str] = (By.CSS_SELECTOR, "input[type=password]") + LOGIN_BUTTON: Tuple[str, str] = (By.CSS_SELECTOR, "button[type=submit]") + LOGIN_ERROR_MESSAGE: Tuple[str, str] = (By.CSS_SELECTOR, "div.alert-danger") + PAGE_TITLE: Tuple[str, str] = (By.CSS_SELECTOR, ".e-form-heading") + FORGOT_PASSWORD_LINK: Tuple[str, str] = (By.CSS_SELECTOR, "[href='https://app.involve.me/password/reset']") def __init__(self, driver, wait): super().__init__(driver, wait) diff --git a/pages/project_edit_page.py b/pages/project_edit_page.py index aabf9ff422..fe0e0a1885 100644 --- a/pages/project_edit_page.py +++ b/pages/project_edit_page.py @@ -9,11 +9,11 @@ class ProjectEditPage(BasePage): """ Project Edit page - the page where adding to and editing projects is done """ - _PROJECT_NAME_FIELD: Tuple[By, str] = (By.CSS_SELECTOR, "input#project-name") - _THANK_YOU_PAGE_TYPE_BUTTON: Tuple[By, str] = (By.CSS_SELECTOR, "[for=select-single-outcome]") - _OUTCOME_PAGES_TYPE_BUTTON: Tuple[By, str] = (By.CSS_SELECTOR, "[for=select-outcomes]") - _START_EDITING_BUTTON: Tuple[By, str] = (By.CSS_SELECTOR, ".swal-button.swal-button--confirm") - _SAVE_AND_EXIT_BUTTON: Tuple[By, str] = (By.CSS_SELECTOR, ".e-close.nav-link") + _PROJECT_NAME_FIELD: Tuple[str, str] = (By.CSS_SELECTOR, "input#project-name") + _THANK_YOU_PAGE_TYPE_BUTTON: Tuple[str, str] = (By.CSS_SELECTOR, "[for=select-single-outcome]") + _OUTCOME_PAGES_TYPE_BUTTON: Tuple[str, str] = (By.CSS_SELECTOR, "[for=select-outcomes]") + _START_EDITING_BUTTON: Tuple[str, str] = (By.CSS_SELECTOR, ".swal-button.swal-button--confirm") + _SAVE_AND_EXIT_BUTTON: Tuple[str, str] = (By.CSS_SELECTOR, ".e-close.nav-link") def __init__(self, driver, wait): super().__init__(driver, wait) diff --git a/pages/project_type_page.py b/pages/project_type_page.py index 42e9d88f6a..505ba3cdbf 100644 --- a/pages/project_type_page.py +++ b/pages/project_type_page.py @@ -10,8 +10,8 @@ class ProjectTypePage(TopNavigateBar): """ Project Type page - where one can choose which kind of templates to work with """ - _START_FROM_SCRATCH_BUTTON: Tuple[By, str] = (By.CSS_SELECTOR, ".blank div.icon") - _PROJECTS_BLOCK: Tuple[By, str] = (By.CSS_SELECTOR, "#app-layout div:nth-child(3) .title") + _START_FROM_SCRATCH_BUTTON: Tuple[str, str] = (By.CSS_SELECTOR, ".blank div.icon") + _PROJECTS_BLOCK: Tuple[str, str] = (By.CSS_SELECTOR, "#app-layout div:nth-child(3) .title") def __init__(self, driver, wait): super().__init__(driver, wait) diff --git a/pages/projects_page.py b/pages/projects_page.py index 7061b6f5bd..74f68f2caa 100644 --- a/pages/projects_page.py +++ b/pages/projects_page.py @@ -11,28 +11,28 @@ class ProjectsPage(TopNavigateBar): """ Projects page - Where projects are added and edited""" - _START_BUTTON: Tuple[By, str] = (By.CSS_SELECTOR, "#app .px-4 a") - _CREATE_NEW_WORKSPACE_BUTTON: Tuple[By, str] = (By.CSS_SELECTOR, ".font-medium button") - _WORKSPACE_EDIT_BUTTON: Tuple[By, str] = (By.CSS_SELECTOR, "[data-icon='chevron-down']") - _RENAME_WORKSPACE_BUTTON: Tuple[By, str] = (By.CSS_SELECTOR, ".mr-3 .hover\\:bg-gray-600") - _DELETE_WORKSPACE_BUTTON: Tuple[By, str] = (By.CSS_SELECTOR, ".mr-3 .text-red-600") - _RENAME_FIELD: Tuple[By, str] = (By.CSS_SELECTOR, ".vue-portal-target input") - _CONFIRMATION_BUTTON: Tuple[By, str] = (By.CSS_SELECTOR, "#confirm-create-button") - _NEW_WORKSPACE_NAME_FIELD: Tuple[By, str] = (By.CSS_SELECTOR, "[placeholder='Workspace name']") - _DELETE_WORKSPACE_FIELD: Tuple[By, str] = (By.CSS_SELECTOR, ".h-12") - _CREATE_PROJECT_BUTTON: Tuple[By, str] = (By.CSS_SELECTOR, ".hidden.px-3") - _SEARCH_BUTTON: Tuple[By, str] = (By.CSS_SELECTOR, "[data-icon='search']") - _SEARCH_FIELD: Tuple[By, str] = (By.CSS_SELECTOR, "[type=text]") - _CONFIRM_DELETE_PROJECT_BUTTON: Tuple[By, str] = (By.CSS_SELECTOR, "#confirm-delete-button") - _CANCEL_PROJECT_DELETION_BUTTON: Tuple[By, str] = (By.CSS_SELECTOR, "form [type=button]") - _PROJECT_PAGE_TITLE: Tuple[By, str] = (By.CSS_SELECTOR, "#app h1.leading-tight.truncate") - _NO_PROJECT_FOUND_MSG: Tuple[By, str] = (By.CSS_SELECTOR, "#app h1.block") - _NUMBER_OF_PROJECTS_IN_WORKSPACE_BLOCK: Tuple[By, str] = (By.CSS_SELECTOR, "span:nth-child(2)") - _DROP_DOWN_BUTTON: Tuple[By, str] = (By.CSS_SELECTOR, ".justify-right button svg") - _DELETE_PROJECT_BUTTON: Tuple[By, str] = (By.XPATH, "//button[text()='Delete Project']") - _WORKSPACE_LIST: Tuple[By, str] = (By.CSS_SELECTOR, ".mt-6 a") - _PROJECTS_BLOCK: Tuple[By, str] = (By.CSS_SELECTOR, "#app .max-w-full div .mt-4 > .mt-8 > div") - _PROJECTS_TITLES: Tuple[By, str] = (By.CSS_SELECTOR, "h1 a") + _START_BUTTON: Tuple[str, str] = (By.CSS_SELECTOR, "#app .px-4 a") + _CREATE_NEW_WORKSPACE_BUTTON: Tuple[str, str] = (By.CSS_SELECTOR, ".font-medium button") + _WORKSPACE_EDIT_BUTTON: Tuple[str, str] = (By.CSS_SELECTOR, "[data-icon='chevron-down']") + _RENAME_WORKSPACE_BUTTON: Tuple[str, str] = (By.CSS_SELECTOR, ".mr-3 .hover\\:bg-gray-600") + _DELETE_WORKSPACE_BUTTON: Tuple[str, str] = (By.CSS_SELECTOR, ".mr-3 .text-red-600") + _RENAME_FIELD: Tuple[str, str] = (By.CSS_SELECTOR, ".vue-portal-target input") + _CONFIRMATION_BUTTON: Tuple[str, str] = (By.CSS_SELECTOR, "#confirm-create-button") + _NEW_WORKSPACE_NAME_FIELD: Tuple[str, str] = (By.CSS_SELECTOR, "[placeholder='Workspace name']") + _DELETE_WORKSPACE_FIELD: Tuple[str, str] = (By.CSS_SELECTOR, ".h-12") + _CREATE_PROJECT_BUTTON: Tuple[str, str] = (By.CSS_SELECTOR, ".hidden.px-3") + _SEARCH_BUTTON: Tuple[str, str] = (By.CSS_SELECTOR, "[data-icon='search']") + _SEARCH_FIELD: Tuple[str, str] = (By.CSS_SELECTOR, "[type=text]") + _CONFIRM_DELETE_PROJECT_BUTTON: Tuple[str, str] = (By.CSS_SELECTOR, "#confirm-delete-button") + _CANCEL_PROJECT_DELETION_BUTTON: Tuple[str, str] = (By.CSS_SELECTOR, "form [type=button]") + _PROJECT_PAGE_TITLE: Tuple[str, str] = (By.CSS_SELECTOR, "#app h1.leading-tight.truncate") + _NO_PROJECT_FOUND_MSG: Tuple[str, str] = (By.CSS_SELECTOR, "#app h1.block") + _NUMBER_OF_PROJECTS_IN_WORKSPACE_BLOCK: Tuple[str, str] = (By.CSS_SELECTOR, "span:nth-child(2)") + _DROP_DOWN_BUTTON: Tuple[str, str] = (By.CSS_SELECTOR, ".justify-right button svg") + _DELETE_PROJECT_BUTTON: Tuple[str, str] = (By.XPATH, "//button[text()='Delete Project']") + _WORKSPACE_LIST: Tuple[str, str] = (By.CSS_SELECTOR, ".mt-6 a") + _PROJECTS_BLOCK: Tuple[str, str] = (By.CSS_SELECTOR, "#app .max-w-full div .mt-4 > .mt-8 > div") + _PROJECTS_TITLES: Tuple[str, str] = (By.CSS_SELECTOR, "h1 a") def __init__(self, driver, wait): super().__init__(driver, wait) diff --git a/pages/templates_page.py b/pages/templates_page.py index 139849ab62..9549dcf900 100644 --- a/pages/templates_page.py +++ b/pages/templates_page.py @@ -9,8 +9,8 @@ class TemplatesPage(TopNavigateBar): """ Templates page - contains variety of templates to select """ - _TEMPLATES_BLOCK: Tuple[By, str] = (By.CSS_SELECTOR, "#template-gallery tbody tr") - _CHOOSE_BUTTON: Tuple[By, str] = (By.CSS_SELECTOR, "a .btn.btn-primary") + _TEMPLATES_BLOCK: Tuple[str, str] = (By.CSS_SELECTOR, "#template-gallery tbody tr") + _CHOOSE_BUTTON: Tuple[str, str] = (By.CSS_SELECTOR, "a .btn.btn-primary") def __init__(self, driver, wait): super().__init__(driver, wait)