diff --git a/locators/new_item_locators.py b/locators/new_item_locators.py index 7240b27f..c8d869c3 100644 --- a/locators/new_item_locators.py +++ b/locators/new_item_locators.py @@ -8,4 +8,6 @@ class NewItemLocators(BaseLocators): ITEM_TYPES = 'div#items li' NAME_FIELD = "input#name" - PIPELINE_TYPE = "li.org_jenkinsci_plugins_workflow_job_WorkflowJob" \ No newline at end of file + PIPELINE_TYPE = "li.org_jenkinsci_plugins_workflow_job_WorkflowJob" + FREESTYLE_PROJECT_TYPE = ".hudson_model_FreeStyleProject" + ERROR_MESSAGE = "#itemname-invalid" \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 509b2184..c05dbd66 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,4 +5,4 @@ requests==2.32.5 python-dotenv==1.2.1 faker==39.0.0 allure-pytest==2.15.3 - +allure-python-commons~=2.15.3 \ No newline at end of file diff --git a/tests/folder_project/test_unique_item_name_constraint_ya.py b/tests/folder_project/test_unique_item_name_constraint_ya.py deleted file mode 100644 index d3038dd3..00000000 --- a/tests/folder_project/test_unique_item_name_constraint_ya.py +++ /dev/null @@ -1,34 +0,0 @@ - - -def test_unique_item_name_constraint(page): - """Предусловия""" - page.goto("/") - page.locator("a[href='/view/all/newJob']").click() - page.locator("#name").fill("Autotest") - page.locator("li.com_cloudbees_hudson_plugins_folder_Folder").click() - page.locator("button[id='ok-button']").click() - page.locator("#jenkins-head-icon").click() - page.locator("a.jenkins-table__link.model-link.inside[href='job/Autotest/']").click() - page.locator("a[href='/job/Autotest/newJob']").click() - page.locator("#name").fill("Test_Project") - page.locator(".hudson_model_FreeStyleProject").click() - page.locator("button[id='ok-button']").click() - - folder_name = "Autotest" - existing_project = "Test_Project" - - page.goto(f"/job/{folder_name}") - page.click("a[href='/job/Autotest/newJob']") - - page.fill("#name", existing_project) - page.wait_for_timeout(1000) - - error_locator = page.locator("#itemname-invalid") - - assert error_locator.is_visible() - actual_error_text = error_locator.inner_text() - print(f"Текст ошибки: '{actual_error_text}'") - - page.goto("/job/Autotest/delete") - page.locator("button[name='Submit']").click() - page.wait_for_timeout(1000) diff --git a/tests/new_item/test_unique_item_name_constraint_ya.py b/tests/new_item/test_unique_item_name_constraint_ya.py new file mode 100644 index 00000000..973423bd --- /dev/null +++ b/tests/new_item/test_unique_item_name_constraint_ya.py @@ -0,0 +1,16 @@ +import allure +from locators.new_item_locators import NewItemLocators +from .unique_item_name_class_test import TestUniqueItemName + + +@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() + + folder, freestyle = name_validator.setup_unique_item_name(create_job) + duplicate_page = name_validator.attempt_duplicate_creation(open_page, folder, freestyle) + + page.wait_for_timeout(3000) + + 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 diff --git a/tests/new_item/unique_item_name_class_test.py b/tests/new_item/unique_item_name_class_test.py new file mode 100644 index 00000000..d6fdb89c --- /dev/null +++ b/tests/new_item/unique_item_name_class_test.py @@ -0,0 +1,21 @@ +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