From 681b0ff99dc2ebe24a6fd8455500d729731b37a7 Mon Sep 17 00:00:00 2001 From: Radislav Date: Wed, 25 Feb 2026 13:43:03 +0300 Subject: [PATCH] =?UTF-8?q?=D1=82=D0=B5=D1=81=D1=82=D1=8B:=20=D0=BE=D0=B1?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=82=D0=B5?= =?UTF-8?q?=D1=81=D1=82=D0=BE=D0=B2=20=D0=B4=D0=BB=D1=8F=20=D1=83=D0=BF?= =?UTF-8?q?=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=81=D1=82?= =?UTF-8?q?=D0=BE=D0=B9=D0=BA=D0=B0=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/e2e/elements/test_element_rack.py | 253 ------------------------ 1 file changed, 253 deletions(-) delete mode 100644 tests/e2e/elements/test_element_rack.py diff --git a/tests/e2e/elements/test_element_rack.py b/tests/e2e/elements/test_element_rack.py deleted file mode 100644 index ecf8292..0000000 --- a/tests/e2e/elements/test_element_rack.py +++ /dev/null @@ -1,253 +0,0 @@ -"""Модуль тестов вкладки 'Стойка' в модуле Объекты. - -Содержит тесты для проверки функциональности -работы со стойкой оборудования. -""" - -import pytest -from playwright.sync_api import Page -from locators.navigation_panel_locators import NavigationPanelLocators -from components_derived.accounting_objects.rack_maker import RackObjectMaker, RackData -from components_derived.frames.create_child_element_frame import CreateChildElementFrame -from pages.location_page import LocationPage -from pages.login_page import LoginPage -from pages.main_page import MainPage -from pages.rack_page import RackPage - -# Константы -RACK_NAME = "Test-Rack-Functionality" - -class TestRackTab: - """Набор тестов для вкладки 'Стойка' в модуле Объекты. - - Проверяет корректность отображения, функциональность элементов интерфейса - и переключение между вкладками стойки оборудования. - - Тесты покрывают следующие функциональные области: - 1. test_rack_tab_content - Базовая структура и содержимое вкладки стойки - 2. test_rack_tab_switching - Функциональность переключения между вкладками стойки - """ - - # Инициализируем атрибуты - main_page: MainPage = None - location_page: LocationPage = None - - def _check_rack_existance(self, browser: Page, rack_name: str) -> bool: - """Проверяет существование стойки. - - Args: - browser: Страница Playwright - rack_name: Имя стойки для проверки - - Returns: - bool: True если стойка существует, False в противном случае - """ - - # Обновляем навигационную панель - self.main_page.wait_for_timeout(500) - self.main_page.click_subpanel_item("test-zone") - - nav_panel_locator = NavigationPanelLocators.TREEVIEW - - # Проверяем видимость элемента - element = browser.locator(nav_panel_locator).get_by_text(rack_name, exact=True).first - - if element.is_visible(): - return True - return False - - def _create_rack(self, browser: Page, rack_name: str) -> None: - """Создает стойку. - - Args: - browser: Страница Playwright - rack_name: Имя стойки для создания - """ - # Нажимаем кнопку "Создать" на тулбаре - self.location_page.click_create_button() - - # Создаем фрейм создания дочернего элемента - create_child_frame = CreateChildElementFrame(browser) - - # Нажимаем на плашку "Класс объекта учета" - create_child_frame.open_object_class_combobox() - - # Из выпадающего меню выбираем пункт "Стойка" - create_child_frame.select_object_class("Стойка") - - # Открывается набор плашек для задания параметров стойки - rack_maker = RackObjectMaker(browser) - - # Создаем объект данных стойки - rack_data = RackData( - name=rack_name, - height="42", - depth="1000" - ) - - # Заполняем данные стойки - rack_maker.fill_rack_data(rack_data) - - # Нажимаем кнопку создания - create_child_frame.click_add_button() - - def _delete_rack_from_context_menu(self, browser: Page, rack_name: str) -> None: - """Удаляет стойку через контекстное меню. - - Args: - browser: Страница Playwright - rack_name: Имя стойки для удаления - """ - - # 1. Находим элемент стойки в навигационной панели - rack_element = browser.locator(NavigationPanelLocators.TREEVIEW).get_by_text(rack_name, exact=True).first - - # Прокручиваем до элемента если нужно - rack_element.scroll_into_view_if_needed() - self.main_page.wait_for_timeout(500) - - # 2. Проверяем и нажимаем кнопку "Изменить" - rack_page = RackPage(browser) - - # Проверяем видимость кнопки - rack_page.toolbar.check_button_visibility("edit") - - # Проверяем тултип кнопки - rack_page.toolbar.check_button_tooltip("edit", "Изменить") - - # Кликаем на кнопку "Изменить" - rack_page.toolbar.get_button_by_name("edit").click() - - # 3. Используем метод click_remove_button, который обрабатывает весь процесс удаления - # включая диалог подтверждения - rack_page.click_remove_button() - - @pytest.fixture(scope="function", autouse=True) - def setup(self, browser: Page) -> None: - """Фикстура для подготовки тестового окружения. - - Выполняет: - 1. Авторизацию в системе - 2. Создание стойки если она не существует - 3. Переход к стойке - - Args: - browser (Page): Экземпляр страницы Playwright для взаимодействия с UI - """ - # Авторизация в системе - login_page = LoginPage(browser) - login_page.do_login() - - # Мы на главной странице - self.main_page = MainPage(browser) - self.main_page.should_be_navigation_panel() - - # Переходим к Объектам - self.main_page.click_main_navigation_panel_item("Объекты") - self.main_page.wait_for_timeout(1000) - self.main_page.click_main_navigation_panel_item("test-zone") - - # Создаем экземпляр страницы локации - self.location_page = LocationPage(browser) - - # Проверяем существование стойки - if not self._check_rack_existance(browser, RACK_NAME): - self._create_rack(browser, RACK_NAME) - self.main_page.wait_for_timeout(3000) - - # Переходим к стойке для тестирования - self.main_page.click_subpanel_item(RACK_NAME, parent="test-zone") - self.main_page.wait_for_timeout(3000) - - @pytest.fixture(scope="class", autouse=True) - def cleanup_rack(self, browser: Page): - """Фикстура для очистки созданной стойки после ВСЕХ тестов класса. - - Выполняется один раз после завершения всех тестов класса TestRackTab. - Удаляет созданную стойку. - - Args: - browser: Экземпляр страницы Playwright - """ - # Тесты выполняются здесь - yield - - # Переходим на главную страницу и в нужную зону - login_page = LoginPage(browser) - login_page.do_login() - - self.main_page = MainPage(browser) - self.main_page.should_be_navigation_panel() - - # Переходим к Объектам - self.main_page.click_main_navigation_panel_item("Объекты") - self.main_page.wait_for_timeout(1000) - self.main_page.click_main_navigation_panel_item("test-zone") - self.main_page.wait_for_timeout(1000) - - # Проверяем существование стойки - if self._check_rack_existance(browser, RACK_NAME): - - # Переходим на страницу стойки - self.main_page.click_subpanel_item(RACK_NAME, parent="test-zone") - self.main_page.wait_for_timeout(2000) - - # Удаляем стойку - self._delete_rack_from_context_menu(browser, RACK_NAME) - - # Дополнительная проверка - self.main_page.click_subpanel_item("test-zone") - self.main_page.wait_for_timeout(1000) - - #@pytest.mark.develop - def test_rack_tab_content(self, browser: Page) -> None: - """Тест содержимого вкладки 'Стойка'. - - Проверяет: - 1. Наличие и корректность заголовка панели с навигационной цепочкой - 2. Отображение и структуру обеих сторон стойки (лицевой и обратной) - 3. Наличие и функциональность кнопок панели инструментов - 4. Корректность отображения юнитов и устройств на стойке - - Args: - browser (Page): Экземпляр страницы Playwright для взаимодействия с UI - """ - - expected_toolbar_subtitles = [ - "test-zone", - 'chevron_right', - RACK_NAME - ] - - rt = RackPage(browser) - rt.should_be_panel_header(expected_toolbar_subtitles) - - # Комплексная проверка отображения обеих сторон стойки с детальной информацией - rt.should_be_rack_sides_displayed() - - # Проверка кнопки "Скрыть стойку" - rt.should_have_hide_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.should_be_toolbar_buttons() - rt.wait_for_timeout(1000)