diff --git a/locators/base_locators.py b/locators/base_locators.py index 335fa81..089685c 100644 --- a/locators/base_locators.py +++ b/locators/base_locators.py @@ -2,7 +2,7 @@ class BaseLocators: NEW_ITEM_BUTTON = "a[href='/view/all/newJob']" OK_BUTTON = "button#ok-button" SAVE_BUTTON = "button[name='Submit']" - NAME_OF_CREATED_PROJECT = lambda job_name: f"td a[href='job/{job_name}/']" + NAME_OF_CREATED_PROJECT = lambda job_name: f"td a[href='job/{job_name}/']" class BaseConfigurationPageLocators: TEXTAREA_DESCRIPTION = "//div[normalize-space()='Description']/following-sibling::div[1]//textarea" @@ -12,3 +12,10 @@ class BaseConfigurationPageLocators: TOGGLE_LABEL = "label[for='enable-disable-project']" DISABLED_MESSAGE_TEXT = "This project is currently disabled" DISABLED_MESSAGE_TEXT_LOC = "form#enable-project" + + # Side menu + HEALTH_METRICS = "button[data-section-id='health-metrics']" + HEALTH_METRICS_DROPDOWN_BUTTON_LOC = "button[class*='advancedButton']" + ADD_METRIC_BUTTON_LOC = "button[class*='hetero-list-add']" + DROPDOWN_TEXT_LOC = "//button[@class = 'jenkins-dropdown__item ']" + diff --git a/pages/base_configuration_page.py b/pages/base_configuration_page.py index 6c56101..90e3c97 100644 --- a/pages/base_configuration_page.py +++ b/pages/base_configuration_page.py @@ -1,4 +1,5 @@ import allure +from playwright.sync_api import expect from data.data import BaseConfigurationPageData from pages.base_page import BasePage @@ -42,4 +43,14 @@ def assert_disable_text(self, actual_text): self.assertion.assert_text( expected_text=self.data.DISABLED_MESSAGE_TEXT, actual_text=actual_text - ) \ No newline at end of file + ) + + def expect_locator_enabled(self, loc): + with allure.step("Expect locator is enabled"): + expect(self.page.locator(loc)).to_be_enabled() + + def get_inner_text(self, loc): + with allure.step(f"Inner text"): + text = self.page.locator(loc).all_inner_texts() + + return text \ No newline at end of file diff --git a/tests/folder_project/conftest.py b/tests/folder_project/conftest.py deleted file mode 100644 index 8b369fd..0000000 --- a/tests/folder_project/conftest.py +++ /dev/null @@ -1,58 +0,0 @@ -import os -import pytest -from playwright.sync_api import expect -import random -from conftest import BASE_URL - - -@pytest.fixture -def new_folder(page): - new_folder_name = f"Test_folder_{random.randint(0, 999999)}" - - new_item_link_loc = "a[href='/view/all/newJob']" - item_name_field_loc = "input[class='jenkins-input']" - item_type_text = "Folder" - ok_btn_loc = "button[id='ok-button']" - save_btn_loc = "button[name='Submit']" - folder_title_loc = "h1.job-index-headline" - - page.goto("/") - page.locator(new_item_link_loc).click() - page.locator(item_name_field_loc).fill(new_folder_name) - page.get_by_text(item_type_text, exact=True).click() - page.locator(ok_btn_loc).click() - page.locator(save_btn_loc).click() - - folder_title = page.locator(folder_title_loc) - expect(folder_title).to_have_text(new_folder_name) - - return new_folder_name - - -@pytest.fixture -def new_view(page, new_folder): - - new_name = f"New_name_{random.randint(0, 999999)}" - - new_view_link_loc = page.locator(f"a[href='/job/{new_folder}/newView']") - view_name_input_loc = page.locator("input[name='name']") - global_view_type_loc = page.get_by_text("Include a global view") - create_btn_loc = page.get_by_role("button", name="Create") - save_btn_loc = page.get_by_role("button", name="Save") - - new_view_link_loc.click() - - view_name_input_loc.fill(new_name) - - global_view_type_loc.check() - - create_btn_loc.click() - expected_url = f"{BASE_URL}/job/{new_folder}/view/{new_name}/configure" - expect(page).to_have_url(expected_url) - - save_btn_loc.click() - expect(page).to_have_url(f"{BASE_URL}/job/{new_folder}/view/{new_name}/?") - - expect(page.get_by_text(new_name)).to_be_visible() - - return new_name diff --git a/tests/folder_project/test_accessibility_folders_health_metric.py b/tests/folder_project/test_accessibility_folders_health_metric.py index 347144d..8a1c82c 100644 --- a/tests/folder_project/test_accessibility_folders_health_metric.py +++ b/tests/folder_project/test_accessibility_folders_health_metric.py @@ -1,11 +1,37 @@ +import allure +from data.endpoints import Endpoints +from data.enums import ItemType +from pages.base_configuration_page import BaseConfigurationPage +from locators.base_locators import BaseLocators +from utils.generators.project_generator import ProjectGenerator -def test_05_002_01(page, new_folder): - folder_name = new_folder - configure_loc = "svg[class='icon-gear icon-md']" - health_metric_button_loc = "button[data-section-id='health-metrics']" - page.goto(f"/job/{folder_name}/") - page.click(configure_loc) - button_hm = page.locator(health_metric_button_loc) - assert button_hm.is_enabled(), "Кнопка недоступна" +@allure.epic("Folder") +@allure.feature("Essential features in folder") +class TestAccessibilityFoldersHealthMetrics: + generator = ProjectGenerator() + endpoints = Endpoints() + locators = BaseLocators() + item_type = ItemType + + @allure.story("Health metrics") + def test_click_health_metrics_05_002_01(self, create_job, open_page): + folder_job = create_job(self.generator.generate_folder_name(), self.item_type.FOLDER) + configuration_page = open_page(BaseConfigurationPage, + self.endpoints.JOB_CONFIGURE_URL(folder_job)) + button_hm = self.locators.BaseConfigurationPageLocators.HEALTH_METRICS + configuration_page.click(button_hm) + configuration_page.expect_locator_enabled(button_hm) + + @allure.story("Health metrics") + def test_click_health_metrics_tc_05_002_02(self, create_job, open_page): + folder_job = create_job(self.generator.generate_folder_name(), self.item_type.FOLDER) + configuration_page = open_page(BaseConfigurationPage, + self.endpoints.JOB_CONFIGURE_URL(folder_job)) + configuration_page.click(self.locators.BaseConfigurationPageLocators.HEALTH_METRICS) + configuration_page.click(self.locators.BaseConfigurationPageLocators.HEALTH_METRICS_DROPDOWN_BUTTON_LOC) + configuration_page.click(self.locators.BaseConfigurationPageLocators.ADD_METRIC_BUTTON_LOC) + inner_text = configuration_page.get_inner_text(self.locators.BaseConfigurationPageLocators.DROPDOWN_TEXT_LOC) + + assert inner_text == ['Child item with the given name', 'Child item with worst health'] \ No newline at end of file diff --git a/tests/folder_project/test_button_add_healt_metric.py b/tests/folder_project/test_button_add_healt_metric.py deleted file mode 100644 index 563e421..0000000 --- a/tests/folder_project/test_button_add_healt_metric.py +++ /dev/null @@ -1,18 +0,0 @@ -def test_tc_05_002_02(page,new_folder): - folder_name = new_folder - """Метрики выпадающего списка из acceptance Criteria""" - metric = ["Child item with the given name", "Child item with worst health"] - - health_metric_button_loc = "button[data-section-id='health-metrics']" - health_metric_dropdown_button_loc = "button[class*='advancedButton']" - add_metric_button_loc = "button[class*='hetero-list-add']" - dropdown_text_loc = "button.jenkins-dropdown__item" - - page.goto(f"/job/{folder_name}/configure") - page.click(health_metric_button_loc) - page.click(health_metric_dropdown_button_loc) - page.click(add_metric_button_loc) - """Получить все опции выпадающего меню""" - all_options_button = page.locator(dropdown_text_loc).all_inner_texts() - """Проверка, что все опции из Acceptance Criteria присутствуют в выпадающем меню""" - assert all_options_button == metric diff --git a/tests/folder_project/test_configuration_dublicat_ns.py b/tests/folder_project/test_configuration_dublicat_ns.py deleted file mode 100644 index 44cc61b..0000000 --- a/tests/folder_project/test_configuration_dublicat_ns.py +++ /dev/null @@ -1,16 +0,0 @@ -from data.enums import ItemType - - -class TestConfigurationDuplicate: - NAME_FOLDER = "smoke_test1" - DESCRIPTION = "KAK KAK KAK" - - def test_configuration_duplicate(self, create_job, base_configuration_page, page, base_project_page): - - create_job(self.NAME_FOLDER ,ItemType.FOLDER ) - base_configuration_page.go_to_configuration_page(self.NAME_FOLDER) - base_configuration_page.set_or_change_description(self.DESCRIPTION) - base_configuration_page.save_configuration() - text_description = base_project_page.description_text(self.DESCRIPTION) - - assert text_description == self.DESCRIPTION