diff --git a/pages/FolderPage.py b/pages/FolderPage.py index d447992..c6c9882 100644 --- a/pages/FolderPage.py +++ b/pages/FolderPage.py @@ -67,7 +67,7 @@ class FolderPageLocator: ITEM_NAME_REQUIRED = (By.XPATH, "//div[@id='itemname-required'][contains(text(),'This field cannot be empty')]") ITEM_NAME_NOT_ALLOWED = (By.XPATH, "//div[@id='itemname-invalid'][contains(text(),'is not an allowed name')]") ERROR_PAGE_NONAME = (By.XPATH, "//div[@id='main-panel']/p[contains(text(),'No name is specified')]") - LINK_DELETE_FOLDER = (By.XPATH, "//a[@title='Delete Folder']") + LINK_DELETE_FOLDER = (By.CSS_SELECTOR, ".task:nth-child(5) .task-link-text") LINK_DELETE_PROJECT = (By.LINK_TEXT, 'Delete Project') BUTTON_YES = (By.ID, 'yui-gen1-button') LINK_EXIST_FOLDER = (By.CSS_SELECTOR, f'#job_{FolderPage.name} .model-link') @@ -79,7 +79,7 @@ class FolderPageLocator: BUTTON_PANEL = (By.CSS_SELECTOR, ".bottom-sticker-inner") BUTTON_ADD_LIBRARY = (By.ID, "yui-gen13-button") INPUT_FIELD_LIBRARY_NAME = (By.NAME, '_.name') - LINK_PLUS_NEW_VIEW = (By.CSS_SELECTOR, '.addTab') + LINK_PLUS_NEW_VIEW = (By.CSS_SELECTOR, '.addTab > .svg-icon') INPUT_FIELD_VIEW_NAME = (By.ID, 'name') RADIOBUTTON_GLOBAL_VIEW = (By.XPATH, '//div/input[@value="hudson.model.ProxyView"]') RADIOBUTTON_LIST_VIEW = (By.XPATH, '//div/input[@value="hudson.model.ListView"]') @@ -94,7 +94,17 @@ class FolderPageLocator: DASHBOARD_TAB_FOLDER_LIST_VIEW = (By.XPATH, f'//a[contains(text(),"{FolderPage.name}")]') LINK_NEW_FOLDER_ON_TOP_LIST = (By.XPATH, f"//li/a[@href='/job/{FolderPage.name}/']") CHECK_BOX_ADD_JOB_IN_LIST_VIEW = (By.NAME, f"{FolderPage.name}") - + LINK_FIRST_FOLDER_ON_TOP_LIST = (By.LINK_TEXT, f"{FolderPage.name}") + LINK_SECOND_FOLDER_ON_TOP_LIST = (By.LINK_TEXT, f'{FolderPage.name}1') + LINK_NEW_JOB_IN_FOLDER = (By.CSS_SELECTOR, f"#job_{FolderPage.name} .model-link") + LINK_DASHBOARD = (By.XPATH, "//a[contains(text(),'Dashboard')]") + LINK_FIRST_FOLDER = (By.LINK_TEXT, "first_folder") + ERROR_VIEW_MESSAGE = (By.CSS_SELECTOR, ".error") + LINK_JOB_IN_FOLDER_DIGITS_NAME = (By.XPATH, f"//tr[@id='job_{FolderPage.name_digits}']/td/a[contains(text(), '{FolderPage.name_digits}')]") + LINK_RENAME = (By.CSS_SELECTOR, "a[title='Rename'] > .task-link-text") + INPUT_FIELD_RENAME_JOB_IN_FOLDER = (By.CSS_SELECTOR, "input[name='newName']") + NAME_FIELD_INPUT_RENAME_JOB = (By.CSS_SELECTOR, ".help-sibling.setting-name") + ITEM_NAME_INVALID_INPUT = (By.CSS_SELECTOR, "div#itemname-invalid") class URLLocators: URL_FOLDER_CREATE = TestData.BASE_URL + 'view/all/newJob' diff --git a/tests/test_folder_page.py b/tests/test_folder_page.py index a466865..02be50f 100644 --- a/tests/test_folder_page.py +++ b/tests/test_folder_page.py @@ -1,3 +1,5 @@ +import time + import pytest from config.TestData import TestData @@ -210,7 +212,7 @@ def test_add_jobs_in_folder_view_name_list_view(self): driver.get_element(FolderPageLocator.BUTTON_OK_IN_FOLDER).click() driver.get_wait(FolderPageLocator.BUTTON_PANEL) driver.get_element(FolderPageLocator.BUTTON_SAVE_IN_FOLDER).click() - driver.get_element(FolderPageLocator.LINK_NEW_FOLDER_ON_TOP_LIST).click() + driver.get_element(FolderPageLocator.LINK_FOLDER_ON_TOP_LIST).click() driver.get_element(FolderPageLocator.LINK_PLUS_NEW_VIEW).click() driver.do_send_keys(FolderPageLocator.INPUT_FIELD_VIEW_NAME, FolderPage.name_digits) driver.get_element(FolderPageLocator.RADIOBUTTON_LIST_VIEW).click() @@ -239,3 +241,119 @@ def test_add_folder_view_name_my_view(self): driver.get_element(FolderPageLocator.DASHBOARD_TAB_FOLDER).click() driver.get_element(FolderPageLocator.LINK_DELETE_FOLDER).click() driver.get_element(FolderPageLocator.BUTTON_YES).click() + + def test_create_same_jobs_in_different_folders(self): + driver = FolderPage(self.driver) + driver.do_send_keys(FolderPageLocator.ITEM_NAME, FolderPage.name) + driver.get_element(FolderPageLocator.LINK_FOLDER).click() + driver.get_element(FolderPageLocator.OK_BUTTON).click() + driver.get_wait(FolderPageLocator.SAVE_BUTTON) + driver.get_element(FolderPageLocator.SAVE_BUTTON).click() + driver.get_element(FolderPageLocator.LINK_CREATE_NEW_JOB_IN_FOLDER).click() + driver.do_send_keys(FolderPageLocator.ITEM_NAME, FolderPage.name) + driver.get_element(FolderPageLocator.LINK_FREESTYLE).click() + driver.get_element(FolderPageLocator.BUTTON_OK_IN_FOLDER).click() + driver.get_wait(FolderPageLocator.BUTTON_PANEL) + driver.get_element(FolderPageLocator.BUTTON_SAVE_IN_FOLDER).click() + driver.get_element(FolderPageLocator.LINK_DASHBOARD).click() + driver.get_element(FolderPageLocator.LINK_NEW_ITEM).click() + driver.do_send_keys(FolderPageLocator.ITEM_NAME, FolderPage.name + "1") + driver.get_element(FolderPageLocator.LINK_FOLDER).click() + driver.get_element(FolderPageLocator.OK_BUTTON).click() + driver.get_wait(FolderPageLocator.SAVE_BUTTON) + driver.get_element(FolderPageLocator.SAVE_BUTTON).click() + driver.get_element(FolderPageLocator.LINK_CREATE_NEW_JOB_IN_FOLDER).click() + driver.do_send_keys(FolderPageLocator.ITEM_NAME, FolderPage.name) + driver.get_element(FolderPageLocator.LINK_FREESTYLE).click() + driver.get_element(FolderPageLocator.BUTTON_OK_IN_FOLDER).click() + driver.get_wait(FolderPageLocator.BUTTON_PANEL) + driver.get_element(FolderPageLocator.BUTTON_SAVE_IN_FOLDER).click() + driver.get_element(FolderPageLocator.LINK_DASHBOARD).click() + driver.get_element(FolderPageLocator.LINK_FIRST_FOLDER_ON_TOP_LIST).click() + assert driver.is_element_present(FolderPageLocator.LINK_NEW_JOB_IN_FOLDER) + driver.get_element(FolderPageLocator.LINK_DASHBOARD).click() + driver.get_element(FolderPageLocator.LINK_SECOND_FOLDER_ON_TOP_LIST).click() + assert driver.is_element_present(FolderPageLocator.LINK_NEW_JOB_IN_FOLDER) + driver.get_element(FolderPageLocator.LINK_FIRST_FOLDER_ON_TOP_LIST).click() + driver.get_element(FolderPageLocator.LINK_DELETE_FOLDER).click() + driver.get_element(FolderPageLocator.BUTTON_YES).click() + driver.get_element(FolderPageLocator.LINK_SECOND_FOLDER_ON_TOP_LIST).click() + driver.get_element(FolderPageLocator.LINK_DELETE_FOLDER).click() + driver.get_element(FolderPageLocator.BUTTON_YES).click() + + def test_add_two_views_with_same_name(self): + driver = FolderPage(self.driver) + driver.do_send_keys(FolderPageLocator.ITEM_NAME, "first_folder") + driver.get_element(FolderPageLocator.LINK_FOLDER).click() + driver.get_element(FolderPageLocator.OK_BUTTON).click() + driver.get_wait(FolderPageLocator.SAVE_BUTTON) + driver.get_element(FolderPageLocator.SAVE_BUTTON).click() + driver.get_element(FolderPageLocator.LINK_PLUS_NEW_VIEW).click() + driver.do_send_keys(FolderPageLocator.INPUT_FIELD_VIEW_NAME, FolderPage.name) + driver.get_element(FolderPageLocator.RADIOBUTTON_GLOBAL_VIEW).click() + driver.get_element(FolderPageLocator.BUTTON_OK_VIEW).click() + driver.get_element(FolderPageLocator.BUTTON_OK_VIEW_CONFIGURATION).click() + driver.get_element(FolderPageLocator.LINK_FIRST_FOLDER).click() + driver.get_element(FolderPageLocator.LINK_PLUS_NEW_VIEW).click() + driver.do_send_keys(FolderPageLocator.INPUT_FIELD_VIEW_NAME, FolderPage.name) + driver.get_element(FolderPageLocator.RADIOBUTTON_GLOBAL_VIEW).click() + assert driver.get_element_text(FolderPageLocator.ERROR_VIEW_MESSAGE) == f'A view already exists with the name "{FolderPage.name}"' + driver.get_element(FolderPageLocator.DASHBOARD_TAB_FOLDER).click() + driver.get_element(FolderPageLocator.LINK_DELETE_FOLDER).click() + driver.get_element(FolderPageLocator.BUTTON_YES).click() + + def test_create_two_jobs_in_once_folder_and_rename_one_to_another(self): + driver = FolderPage(self.driver) + driver.do_send_keys(FolderPageLocator.ITEM_NAME, "first_folder") + driver.get_element(FolderPageLocator.LINK_FOLDER).click() + driver.get_element(FolderPageLocator.OK_BUTTON).click() + driver.get_wait(FolderPageLocator.SAVE_BUTTON) + driver.get_element(FolderPageLocator.SAVE_BUTTON).click() + driver.get_element(FolderPageLocator.LINK_CREATE_NEW_JOB_IN_FOLDER).click() + driver.do_send_keys(FolderPageLocator.ITEM_NAME, FolderPage.name) + driver.get_element(FolderPageLocator.LINK_FREESTYLE).click() + driver.get_element(FolderPageLocator.BUTTON_OK_IN_FOLDER).click() + driver.get_wait(FolderPageLocator.BUTTON_PANEL) + driver.get_element(FolderPageLocator.BUTTON_SAVE_IN_FOLDER).click() + driver.get_element(FolderPageLocator.LINK_FIRST_FOLDER).click() + driver.get_element(FolderPageLocator.LINK_NEW_ITEM).click() + driver.do_send_keys(FolderPageLocator.ITEM_NAME, FolderPage.name_digits) + driver.get_element(FolderPageLocator.LINK_FREESTYLE).click() + driver.get_element(FolderPageLocator.BUTTON_OK_IN_FOLDER).click() + driver.get_wait(FolderPageLocator.BUTTON_PANEL) + driver.get_element(FolderPageLocator.BUTTON_SAVE_IN_FOLDER).click() + driver.get_element(FolderPageLocator.LINK_FIRST_FOLDER).click() + driver.get_element(FolderPageLocator.LINK_JOB_IN_FOLDER_DIGITS_NAME).click() + driver.get_element(FolderPageLocator.LINK_RENAME).click() + driver.get_element(FolderPageLocator.INPUT_FIELD_RENAME_JOB_IN_FOLDER).clear() + driver.do_send_keys(FolderPageLocator.INPUT_FIELD_RENAME_JOB_IN_FOLDER, FolderPage.name) + driver.get_element(FolderPageLocator.NAME_FIELD_INPUT_RENAME_JOB).click() + assert driver.get_element_text(FolderPageLocator.ERROR_VIEW_MESSAGE)\ + == f'The name “{FolderPage.name}” is already in use.' + + driver.get_element(FolderPageLocator.DASHBOARD_TAB_FOLDER).click() + time.sleep(3) + driver.switch_to_window() + driver.get_element(FolderPageLocator.LINK_DELETE_FOLDER).click() + time.sleep(4) + # driver.get_element(FolderPageLocator.BUTTON_YES).click() + + def test_create_two_jobs_with_same_name_in_once_folder(self): + driver = FolderPage(self.driver) + driver.do_send_keys(FolderPageLocator.ITEM_NAME, FolderPage.name) + driver.get_element(FolderPageLocator.LINK_FOLDER).click() + driver.get_element(FolderPageLocator.OK_BUTTON).click() + driver.get_wait(FolderPageLocator.SAVE_BUTTON) + driver.get_element(FolderPageLocator.SAVE_BUTTON).click() + driver.get_element(FolderPageLocator.LINK_CREATE_NEW_JOB_IN_FOLDER).click() + driver.do_send_keys(FolderPageLocator.ITEM_NAME, FolderPage.name) + driver.get_element(FolderPageLocator.LINK_FREESTYLE).click() + driver.get_element(FolderPageLocator.BUTTON_OK_IN_FOLDER).click() + driver.get_wait(FolderPageLocator.BUTTON_PANEL) + driver.get_element(FolderPageLocator.BUTTON_SAVE_IN_FOLDER).click() + driver.get_element(FolderPageLocator.LINK_NEW_FOLDER_ON_TOP_LIST).click() + driver.get_element(FolderPageLocator.LINK_NEW_ITEM).click() + driver.do_send_keys(FolderPageLocator.ITEM_NAME, FolderPage.name) + driver.get_element(FolderPageLocator.LINK_FREESTYLE).click() + assert driver.get_element_text(FolderPageLocator.ITEM_NAME_INVALID_INPUT) \ + == f"» A job already exists with the name ‘{FolderPage.name}’"