Рефакторинг

ra4/management_rack
Radislav 2026-02-24 15:36:03 +03:00
parent 4e3ae8227d
commit 0643990d59
4 changed files with 34 additions and 53 deletions

View File

@ -56,16 +56,8 @@ class RackPage(BasePage):
# Действия # Действия
def click_edit_button(self) -> None: def click_edit_button(self) -> None:
""" """ Кликает на кнопку 'Изменить'."""
Кликает на кнопку 'Изменить'.
"""
logger.debug("Clicking on 'Edit' button...")
# Проверяем видимость кнопки
self.toolbar.check_button_visibility("edit")
self.toolbar.check_button_tooltip("edit", "Изменить")
# Кликаем на кнопку
self.toolbar.get_button_by_name("edit").click() self.toolbar.get_button_by_name("edit").click()
self.wait_for_timeout(1000) self.wait_for_timeout(1000)
@ -458,7 +450,7 @@ class RackPage(BasePage):
self.toolbar.check_button_tooltip("edit", "Изменить") self.toolbar.check_button_tooltip("edit", "Изменить")
# Кликаем на кнопку "Изменить" для проверки функциональности # Кликаем на кнопку "Изменить" для проверки функциональности
self.toolbar.get_button_by_name("edit").click() #self.toolbar.get_button_by_name("edit").click()
def should_have_hide_rack_button(self) -> None: def should_have_hide_rack_button(self) -> None:

View File

@ -8,6 +8,7 @@ from locators.rack_locators import RackLocators
from components_derived.accounting_objects.rack_maker import RackObjectMaker, RackData from components_derived.accounting_objects.rack_maker import RackObjectMaker, RackData
from components_derived.frames.create_child_element_frame import CreateChildElementFrame from components_derived.frames.create_child_element_frame import CreateChildElementFrame
from pages.location_page import LocationPage from pages.location_page import LocationPage
from components_derived.modal_edit_rack import ModalEditRack, RackEditData
from pages.login_page import LoginPage from pages.login_page import LoginPage
from pages.main_page import MainPage from pages.main_page import MainPage
from pages.rack_page import RackPage from pages.rack_page import RackPage
@ -153,24 +154,22 @@ class TestCreateRackElement:
self.main_page.wait_for_timeout(500) self.main_page.wait_for_timeout(500)
# 2. Проверяем и нажимаем кнопку "Изменить" # 2. Проверяем и нажимаем кнопку "Изменить"
logger.debug("Step 1: Clicking 'Edit' button...")
rack_page = RackPage(browser) rack_page = RackPage(browser)
# Проверяем видимость кнопки # Проверяем видимость и тултип кнопки
rack_page.toolbar.check_button_visibility("edit") rack_page.should_be_toolbar_buttons()
# Проверяем тултип кнопки
rack_page.toolbar.check_button_tooltip("edit", "Изменить")
# Кликаем на кнопку "Изменить" # Кликаем на кнопку "Изменить"
rack_page.toolbar.get_button_by_name("edit").click() rack_page.click_edit_button()
logger.debug("Edit button clicked, waiting for edit form...") self.main_page.wait_for_timeout(1000)
# 3. Используем метод click_remove_button, который обрабатывает весь процесс удаления # 3. Создаем экземпляр ModalRackEditRack
# включая диалог подтверждения rack_edit = ModalEditRack(browser, rack_name)
logger.debug("Clicking remove button...")
rack_page.click_remove_button() # Используем метод для удаления
rack_edit.click_remove_button()
self.main_page.wait_for_timeout(1000)
# 4. Проверяем уведомление об успешном удалении - требуется создать разработчику (заведена задача) # 4. Проверяем уведомление об успешном удалении - требуется создать разработчику (заведена задача)
# Создаем экземпляр фрейма для доступа к alert компоненту # Создаем экземпляр фрейма для доступа к alert компоненту

View File

@ -123,20 +123,20 @@ class TestRackTab:
# 2. Проверяем и нажимаем кнопку "Изменить" # 2. Проверяем и нажимаем кнопку "Изменить"
rack_page = RackPage(browser) rack_page = RackPage(browser)
# Проверяем видимость кнопки # Проверяем видимость и тултип кнопки
rack_page.toolbar.check_button_visibility("edit") rack_page.should_be_toolbar_buttons()
# Проверяем тултип кнопки
rack_page.toolbar.check_button_tooltip("edit", "Изменить")
# Кликаем на кнопку "Изменить" # Кликаем на кнопку "Изменить"
rack_page.toolbar.get_button_by_name("edit").click() rack_page.click_edit_button()
self.main_page.wait_for_timeout(1000)
# 3. Создаем экземпляр ModalRackEditRack # 3. Создаем экземпляр ModalRackEditRack
rack_edit = ModalEditRack(browser, rack_name) rack_edit = ModalEditRack(browser, rack_name)
# Используем метод для удаления # Используем метод для удаления
rack_edit.click_remove_button() rack_edit.click_remove_button()
self.main_page.wait_for_timeout(1000)
logger.info(f"Rack '{rack_name}' deleted successfully") logger.info(f"Rack '{rack_name}' deleted successfully")

View File

@ -9,6 +9,7 @@ from playwright.sync_api import Page
from locators.navigation_panel_locators import NavigationPanelLocators from locators.navigation_panel_locators import NavigationPanelLocators
from components_derived.accounting_objects.rack_maker import RackObjectMaker, RackData from components_derived.accounting_objects.rack_maker import RackObjectMaker, RackData
from components_derived.frames.create_child_element_frame import CreateChildElementFrame from components_derived.frames.create_child_element_frame import CreateChildElementFrame
from components_derived.modal_edit_rack import ModalEditRack
from pages.location_page import LocationPage from pages.location_page import LocationPage
from pages.login_page import LoginPage from pages.login_page import LoginPage
from pages.main_page import MainPage from pages.main_page import MainPage
@ -25,7 +26,6 @@ class TestRackTab:
Тесты покрывают следующие функциональные области: Тесты покрывают следующие функциональные области:
1. test_rack_tab_content - Базовая структура и содержимое вкладки стойки 1. test_rack_tab_content - Базовая структура и содержимое вкладки стойки
2. test_rack_tab_switching - Функциональность переключения между вкладками стойки
""" """
# Инициализируем атрибуты # Инициализируем атрибуты
@ -100,7 +100,9 @@ class TestRackTab:
""" """
# 1. Находим элемент стойки в навигационной панели # 1. Находим элемент стойки в навигационной панели
rack_element = browser.locator(NavigationPanelLocators.TREEVIEW).get_by_text(rack_name, exact=True).first rack_element = browser.locator(
NavigationPanelLocators.TREEVIEW
).get_by_text(rack_name, exact=True).first
# Прокручиваем до элемента если нужно # Прокручиваем до элемента если нужно
rack_element.scroll_into_view_if_needed() rack_element.scroll_into_view_if_needed()
@ -109,18 +111,20 @@ class TestRackTab:
# 2. Проверяем и нажимаем кнопку "Изменить" # 2. Проверяем и нажимаем кнопку "Изменить"
rack_page = RackPage(browser) rack_page = RackPage(browser)
# Проверяем видимость кнопки # Проверяем видимость и тултип кнопки
rack_page.toolbar.check_button_visibility("edit") rack_page.should_be_toolbar_buttons()
# Проверяем тултип кнопки
rack_page.toolbar.check_button_tooltip("edit", "Изменить")
# Кликаем на кнопку "Изменить" # Кликаем на кнопку "Изменить"
rack_page.toolbar.get_button_by_name("edit").click() rack_page.click_edit_button()
# 3. Используем метод click_remove_button, который обрабатывает весь процесс удаления self.main_page.wait_for_timeout(1000)
# включая диалог подтверждения
rack_page.click_remove_button() # 3. Создаем экземпляр ModalRackEditRack
rack_edit = ModalEditRack(browser, rack_name)
# Используем метод для удаления
rack_edit.click_remove_button()
self.main_page.wait_for_timeout(1000)
@pytest.fixture(scope="function", autouse=True) @pytest.fixture(scope="function", autouse=True)
def setup(self, browser: Page) -> None: def setup(self, browser: Page) -> None:
@ -231,20 +235,6 @@ class TestRackTab:
# Проверка кнопки "Показать стойку" # Проверка кнопки "Показать стойку"
rt.should_have_show_rack_button() rt.should_have_show_rack_button()
rt.wait_for_timeout(1000)
def test_rack_tab_switching(self, browser: Page) -> None:
"""Тест переключения между вкладками стойки оборудования.
Тестирует переключение на все доступные вкладки: Общая информация,
Обслуживание, События, Сервисы.
Args:
browser (Page): Экземпляр страницы Playwright для взаимодействия с UI
"""
rt = RackPage(browser)
# Проверяем переключение между всеми вкладками стойки # Проверяем переключение между всеми вкладками стойки
rt.check_tab_switching() rt.check_tab_switching()