diff --git a/data/endpoints.py b/data/endpoints.py index 0d6d8824..75045f93 100644 --- a/data/endpoints.py +++ b/data/endpoints.py @@ -6,4 +6,6 @@ class Endpoints: MANAGE_URL = "/manage" SECURITY_REALM_URL = "/securityRealm/" VIEW_ALL_PAGE_URL = "/view/all/" - ALL_NEW_JOB_URL = "/view/all/newJob" \ No newline at end of file + ALL_NEW_JOB_URL = "/view/all/newJob" + + FOLDER_NEW_ITEM_URL = lambda self, folder_name: f"/job/{folder_name}/newJob" \ No newline at end of file diff --git a/tests/folder_project/test_new_folder_can_be_created_from_dashboard_ya.py b/tests/folder_project/test_new_folder_can_be_created_from_dashboard_ya.py deleted file mode 100644 index 78703e6b..00000000 --- a/tests/folder_project/test_new_folder_can_be_created_from_dashboard_ya.py +++ /dev/null @@ -1,7 +0,0 @@ -from pages.base_configuration_page import BaseConfigurationPage - -def test_tc_01_002_02_new_folder_can_be_created_from_dashboard(page, new_folder, open_page): - """TC_01.002.02 | New Item > Folder > Verify new folder can be created from dashboard""" - - config_page = open_page(BaseConfigurationPage, f"/job/{new_folder}/configure") - assert new_folder in config_page.page.title() diff --git a/tests/folder_project/test_same_names_items_in_different_folders_ya.py b/tests/folder_project/test_same_names_items_in_different_folders_ya.py deleted file mode 100644 index d72415c6..00000000 --- a/tests/folder_project/test_same_names_items_in_different_folders_ya.py +++ /dev/null @@ -1,26 +0,0 @@ - - -def test_tc_01_002_07_same_names_items_in_different_folders(page): - # Предусловия - for folder in ["Folder_1", "Folder_2"]: - page.goto("/view/all/newJob") - page.fill("#name", folder) - page.locator("li.com_cloudbees_hudson_plugins_folder_Folder").click() - page.locator("#ok-button").click() - - page.goto("/job/Folder_1/newJob") - page.fill("#name", "MyProject") - page.locator("li.hudson_model_FreeStyleProject").click() - page.locator("#ok-button").click() - - # Основной тест - page.goto("/job/Folder_2/newJob") - page.fill("#name", "MyProject") - page.locator("li.hudson_model_FreeStyleProject").click() - page.locator("#ok-button").click() - - assert "/job/Folder_2/job/MyProject/" in page.url - - for folder in ["Folder_1", "Folder_2"]: - page.goto(f"/job/{folder}/delete") - page.locator("button[name='Submit']").click() \ No newline at end of file diff --git a/tests/new_item/test_folder_has_distinct_icon_on_dashboard_ya.py b/tests/new_item/test_folder_has_distinct_icon_on_dashboard_ya.py index 8e096a63..e033273b 100644 --- a/tests/new_item/test_folder_has_distinct_icon_on_dashboard_ya.py +++ b/tests/new_item/test_folder_has_distinct_icon_on_dashboard_ya.py @@ -1,21 +1,25 @@ import allure + +from data.endpoints import Endpoints +from data.enums import ItemType from pages.base_page import BasePage from utils.generators.project_generator import ProjectGenerator from locators.dashboard_locators import DashboardLocators -@allure.title("TC_01.002.05 | New Item > Folder > Verify folder has a distinct icon on the dashboard") -def test_tc_01_002_05_folder_has_distinct_icon(page, create_job, open_page): - - folder_name = ProjectGenerator.generate_folder_name() - create_job(folder_name, job_type="folder") - base_page = open_page(BasePage, "/") - - locator = DashboardLocators.folder_with_icon(folder_name) - assert base_page.page.locator(locator).is_visible() - - - - +@allure.epic("New Item") +@allure.feature("Folder visualization") +class TestFolderIconOnDashboard: + generator = ProjectGenerator() + endpoints = Endpoints() + base_page = BasePage + @allure.story("Folder has distinct icon") + @allure.title("TC_01.002.05 Verify folder has a distinct icon on the dashboard") + def test_tc_01_002_05_folder_has_distinct_icon(self, page, create_job, open_page): + folder_name = self.generator.generate_folder_name() + create_job(folder_name, ItemType.FOLDER) + dashboard_page = open_page(self.base_page, self.endpoints.VIEW_ALL_PAGE_URL) + locator = DashboardLocators.folder_with_icon(folder_name) + assert dashboard_page.page.locator(locator).is_visible() \ No newline at end of file diff --git a/tests/pipeline_project/test_job_auto_saved_without_configuration_ya.py b/tests/new_item/test_job_auto_saved_without_configuration_ya.py similarity index 91% rename from tests/pipeline_project/test_job_auto_saved_without_configuration_ya.py rename to tests/new_item/test_job_auto_saved_without_configuration_ya.py index 5a40e7ee..975ae8ce 100644 --- a/tests/pipeline_project/test_job_auto_saved_without_configuration_ya.py +++ b/tests/new_item/test_job_auto_saved_without_configuration_ya.py @@ -10,7 +10,4 @@ def test_tc_01_004_04_job_auto_saved_without_configuration(create_job, page): create_job(pipeline_name, ItemType.PIPELINE) page.goto(Endpoints().VIEW_ALL_PAGE_URL) - assert pipeline_name in page.content() - - - + assert pipeline_name in page.content() \ No newline at end of file diff --git a/tests/new_item/test_new_folder_can_be_created_from_dashboard_ya.py b/tests/new_item/test_new_folder_can_be_created_from_dashboard_ya.py new file mode 100644 index 00000000..48117805 --- /dev/null +++ b/tests/new_item/test_new_folder_can_be_created_from_dashboard_ya.py @@ -0,0 +1,23 @@ +import allure + +from data.endpoints import Endpoints +from data.enums import ItemType +from pages.base_configuration_page import BaseConfigurationPage +from utils.generators.project_generator import ProjectGenerator + + +@allure.epic("New Item") +@allure.feature("Folder creation") +class TestFolderCreationFromDashboard: + endpoints = Endpoints() + generator = ProjectGenerator() + + @allure.title("TC_01.002.02 Verify new folder can be created from dashboard") + def test_tc_01_002_02_new_folder_can_be_created_from_dashboard(self, page, create_job, open_page): + folder_name = self.generator.generate_folder_name() + create_job(folder_name, job_type=ItemType.FOLDER) + + config_url = self.endpoints.JOB_CONFIGURE_URL(folder_name) + config_page = open_page(BaseConfigurationPage, config_url) + + assert folder_name in config_page.page.title() \ No newline at end of file diff --git a/tests/folder_project/test_new_folder_is_empty_by_default_ya.py b/tests/new_item/test_new_folder_is_empty_by_default_ya.py similarity index 98% rename from tests/folder_project/test_new_folder_is_empty_by_default_ya.py rename to tests/new_item/test_new_folder_is_empty_by_default_ya.py index 20de6440..1c19d231 100644 --- a/tests/folder_project/test_new_folder_is_empty_by_default_ya.py +++ b/tests/new_item/test_new_folder_is_empty_by_default_ya.py @@ -10,9 +10,4 @@ def test_tc_01_002_04_new_folder_is_empty_by_default(create_job, page): create_job(folder_name, ItemType.FOLDER) page.goto(Endpoints().JOB_STATUS_PAGE_URL(folder_name)) - expect(page.get_by_text("This folder is empty")).to_be_visible() - - - - - + expect(page.get_by_text("This folder is empty")).to_be_visible() \ No newline at end of file diff --git a/tests/new_item/test_same_names_items_in_different_folders_ya.py b/tests/new_item/test_same_names_items_in_different_folders_ya.py new file mode 100644 index 00000000..77e59495 --- /dev/null +++ b/tests/new_item/test_same_names_items_in_different_folders_ya.py @@ -0,0 +1,40 @@ +import allure + +from data.endpoints import Endpoints +from data.enums import ItemType +from pages.new_item_page import NewItemPage +from locators.new_item_locators import NewItemLocators +from utils.generators.project_generator import ProjectGenerator + + +@allure.epic("New Item") +@allure.feature("Item Creation in Folders") +class TestSameNameItemsInDifferentFolders: + generator = ProjectGenerator() + endpoints = Endpoints() + item_type = ItemType + locators = NewItemLocators() + + def _create_project_in_folder(self, open_page, folder_name, project_name): + new_item_page = open_page(NewItemPage, self.endpoints.FOLDER_NEW_ITEM_URL(folder_name)) + new_item_page.page.locator(self.locators.NAME_FIELD).fill(project_name) + new_item_page.page.locator(self.locators.FREESTYLE_PROJECT_TYPE).click() + new_item_page.page.locator(self.locators.OK_BUTTON).click() + + new_item_page.page.wait_for_url(f"**/job/{project_name}/**") + return new_item_page + + @allure.story("Same name items in different folders") + @allure.title("TC_01.002.07 Verify items with identical names can exist in different folders") + def test_tc_01_002_07_same_names_items_in_different_folders(self, page, create_job, open_page): + folder_1 = self.generator.generate_folder_name() + folder_2 = self.generator.generate_folder_name() + project_name = self.generator.generate_freestyle_name() + + create_job(folder_1, self.item_type.FOLDER) + create_job(folder_2, self.item_type.FOLDER) + + self._create_project_in_folder(open_page, folder_1, project_name) + config_page_2 = self._create_project_in_folder(open_page, folder_2, project_name) + + assert f"/job/{folder_2}/job/{project_name}/" in config_page_2.page.url \ No newline at end of file diff --git a/tests/new_item/test_unique_item_name_constraint_ya.py b/tests/new_item/test_unique_item_name_constraint_ya.py index 973423bd..916f636c 100644 --- a/tests/new_item/test_unique_item_name_constraint_ya.py +++ b/tests/new_item/test_unique_item_name_constraint_ya.py @@ -1,16 +1,33 @@ import allure + +from data.endpoints import Endpoints +from data.enums import ItemType +from pages.new_item_page import NewItemPage from locators.new_item_locators import NewItemLocators -from .unique_item_name_class_test import TestUniqueItemName +from utils.assertions import Assertions +from utils.generators.project_generator import ProjectGenerator + + +@allure.epic("New Item") +@allure.feature("Item name validation") +class TestUniqueItemName: + endpoints = Endpoints() + assertions = Assertions() + generator = ProjectGenerator() + @allure.story("Unique item name constraint inside a folder") + @allure.title("TC_01.002.06 Verify unique item name constraint inside a folder") + def test_unique_item_name_constraint(self, page, create_job, open_page): + folder_name = self.generator.generate_folder_name() + freestyle_name = self.generator.generate_freestyle_name() -@allure.title("TC_01.002.06 | New Item > Folder > Verify unique item name constraint inside a folder") -def test_unique_item_name_constraint(page, create_job, open_page): - name_validator = TestUniqueItemName() + create_job(name=folder_name, job_type=ItemType.FOLDER) + create_job(name=freestyle_name, job_type=ItemType.FREESTYLE, folder=folder_name) - folder, freestyle = name_validator.setup_unique_item_name(create_job) - duplicate_page = name_validator.attempt_duplicate_creation(open_page, folder, freestyle) + duplicate_page = open_page(NewItemPage, f"{self.endpoints.JOB_STATUS_PAGE_URL(folder_name)}/newJob") + duplicate_page.fill(NewItemLocators.NAME_FIELD, freestyle_name) - page.wait_for_timeout(3000) + duplicate_page.wait_for_visible(NewItemLocators.ERROR_MESSAGE, timeout=5000) - error = duplicate_page.get_text(NewItemLocators.ERROR_MESSAGE) - assert "already exists" in error, f"Expected 'already exists' in: {error}" \ No newline at end of file + error = duplicate_page.get_text(NewItemLocators.ERROR_MESSAGE) + self.assertions.assert_text("already exists", error) \ No newline at end of file diff --git a/tests/new_item/test_verify_visual_selection_ya.py b/tests/new_item/test_verify_visual_selection_ya.py index 3f069357..c256b315 100644 --- a/tests/new_item/test_verify_visual_selection_ya.py +++ b/tests/new_item/test_verify_visual_selection_ya.py @@ -1,16 +1,25 @@ +import allure + +from data.endpoints import Endpoints from pages.new_item_page import NewItemPage from locators.new_item_locators import NewItemLocators from utils.generators.project_generator import ProjectGenerator -def test_tc_01_004_02_pipeline_type_visual_selection(page, open_page): - """TC_01.004.02 | New Item > Select an Item type > Verify visual selection of Pipeline type""" - - new_item_page = open_page(NewItemPage, "/view/all/newJob") - new_item_page.fill(NewItemLocators.NAME_FIELD, ProjectGenerator.generate_pipeline_name()) - new_item_page.click(NewItemLocators.PIPELINE_TYPE) - - pipeline_element = new_item_page.page.locator(NewItemLocators.PIPELINE_TYPE) - assert "active" in pipeline_element.get_attribute("class") +@allure.epic("New Item") +@allure.feature("Item type selection") +class TestPipelineTypeVisualSelection: + generator = ProjectGenerator() + endpoints = Endpoints() + new_item_page = NewItemPage + @allure.story("Visual selection of Pipeline type") + @allure.title("TC_01.004.02 Verify visual selection of Pipeline type") + def test_tc_01_004_02_pipeline_type_visual_selection(self, page, open_page): + pipeline_name = self.generator.generate_pipeline_name() + new_item_page = open_page(self.new_item_page, self.endpoints.ALL_NEW_JOB_URL) + new_item_page.fill(NewItemLocators.NAME_FIELD, pipeline_name) + new_item_page.click(NewItemLocators.PIPELINE_TYPE) + pipeline_element = new_item_page.page.locator(NewItemLocators.PIPELINE_TYPE) + assert "active" in pipeline_element.get_attribute("class") \ No newline at end of file diff --git a/tests/new_item/unique_item_name_class_test.py b/tests/new_item/unique_item_name_class_test.py deleted file mode 100644 index d6fdb89c..00000000 --- a/tests/new_item/unique_item_name_class_test.py +++ /dev/null @@ -1,21 +0,0 @@ -from utils.generators.project_generator import ProjectGenerator -from pages.new_item_page import NewItemPage -from locators.new_item_locators import NewItemLocators - - -class TestUniqueItemName: - - def setup_unique_item_name(self, create_job): - folder_name = ProjectGenerator.generate_folder_name() - freestyle_name = ProjectGenerator.generate_freestyle_name() - - create_job(name=folder_name, job_type="folder") - create_job(name=freestyle_name, job_type="freestyle", folder=folder_name) - - return folder_name, freestyle_name - - def attempt_duplicate_creation(self, open_page, folder_name, freestyle_name): - duplicate_page = open_page(NewItemPage, f"/job/{folder_name}/newJob") - duplicate_page.fill(NewItemLocators.NAME_FIELD, freestyle_name) - - return duplicate_page \ No newline at end of file