From ddcecce8b7d088ac7a46e982fd9b1390acb3e99d Mon Sep 17 00:00:00 2001 From: Radislav Date: Fri, 29 Aug 2025 14:04:48 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=BE=D1=82=D1=81=D1=83=D1=82=D1=81=D1=82=D0=B2?= =?UTF-8?q?=D1=83=D1=8E=D1=89=D0=B8=D0=B5=20=D0=B0=D0=BD=D0=BD=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D0=B8=20=D1=82=D0=B8=D0=BF=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/json_container_component.py | 8 +++----- components/navbar_component.py | 4 ++-- pages/base_page.py | 13 +++++++------ tests/e2e/test_users_tab.py | 6 +++--- 4 files changed, 15 insertions(+), 16 deletions(-) diff --git a/components/json_container_component.py b/components/json_container_component.py index d593952..c7421d6 100644 --- a/components/json_container_component.py +++ b/components/json_container_component.py @@ -6,6 +6,7 @@ import json import jsondiff +from typing import Any, Dict from playwright.sync_api import Page from tools.logger import get_logger from components.base_component import BaseComponent @@ -16,9 +17,6 @@ logger = get_logger("JSON_CONTAINER") class JsonContainerComponent(BaseComponent): """Компонент для работы с JSON-данными на странице. - - - Предоставляет методы чтения и проверки JSON-данных в контейнерах. """ @@ -33,7 +31,7 @@ class JsonContainerComponent(BaseComponent): super().__init__(page) # Действия: - def read_data(self, locator): + def read_data(self, locator: Any) -> Dict: """Читает и форматирует JSON-данные из указанного локатора. Args: @@ -93,7 +91,7 @@ class JsonContainerComponent(BaseComponent): return json.loads(formatted_json_string) # Проверки: - def check_json_equals(self, actual, expected, msg): + def check_json_equals(self, actual: Any, expected: Any, msg: str) -> None: """Сравнивает JSON-объекты на идентичность. Args: diff --git a/components/navbar_component.py b/components/navbar_component.py index 69384d6..43ad6e4 100644 --- a/components/navbar_component.py +++ b/components/navbar_component.py @@ -46,7 +46,7 @@ class NavigationPanelComponent(BaseComponent): loc = self.get_locator(locator) loc.get_by_text(item_name).click() - def click_sub_item(self, node_root_locator, item_name: str) -> None: + def click_sub_item(self, node_root_locator: str | Locator, item_name: str) -> None: """Кликает по вложенному элементу с указанным текстом. Args: @@ -120,7 +120,7 @@ class NavigationPanelComponent(BaseComponent): found = find_and_click_item(self.page, root_locator, item_name) assert found, f"Navigation panel item {item_name} is missing" - def traverse_panel_tree(self, node_root_locator, level=0, debug=False): + def traverse_panel_tree(self, node_root_locator: str | Locator, level=0, debug=False): """ Рекурсивно обходит дерево v-treeview и выводит информацию об элементах в режиме отладки (debug=True). diff --git a/pages/base_page.py b/pages/base_page.py index f25424f..63df32f 100644 --- a/pages/base_page.py +++ b/pages/base_page.py @@ -3,6 +3,7 @@ Содержит общие методы для взаимодействия со страницей и API. """ +from typing import Dict from playwright.sync_api import Page, Response, APIRequestContext, expect from data.environment import host from tools.logger import get_logger @@ -50,7 +51,7 @@ class BasePage: """Перезагружает текущую страницу.""" self.page.reload() - def wait_for_timeout(self, timeout): + def wait_for_timeout(self, timeout: int) -> None: """Ожидает указанное количество миллисекунд. Args: @@ -66,7 +67,7 @@ class BasePage: """ return self.page.context.request - def send_get_api_request(self, uri) -> Response: + def send_get_api_request(self, uri: str) -> Response: """Отправляет GET-запрос к API. Args: @@ -84,12 +85,12 @@ class BasePage: ) return response - def send_post_api_request(self, uri, payload) -> Response: + def send_post_api_request(self, uri: str, payload: Dict) -> Response: """Отправляет POST-запрос к API. Args: uri (str): URI API-эндпоинта (без базового URL). - payload: Данные для отправки в теле запроса. + payload (Dict): Данные для отправки в теле запроса. Returns: Response: Ответ сервера. @@ -104,7 +105,7 @@ class BasePage: ) return response - def get_response_body(self, response) -> dict | None: + def get_response_body(self, response: Response) -> dict | None: """Извлекает тело ответа в формате JSON. Args: @@ -180,4 +181,4 @@ class BasePage: return False return True - assert compare_lists(actual, expected), msg \ No newline at end of file + assert compare_lists(actual, expected), msg diff --git a/tests/e2e/test_users_tab.py b/tests/e2e/test_users_tab.py index 50d0a28..6edbe9f 100644 --- a/tests/e2e/test_users_tab.py +++ b/tests/e2e/test_users_tab.py @@ -134,7 +134,7 @@ class TestUsersTab: user_name, _ = ut.open_edit_user_page_by_index(0) ut.close_edit_user_window(user_name) - def test_add_and_delete_user(self, browser: Page, cleanup_user) -> None: + def test_add_and_delete_user(self, browser: Page, cleanup_user: None) -> None: """Проверяет добавление и удаление пользователя. Args: @@ -181,7 +181,7 @@ class TestUsersTab: mp.click_subpanel_item("Пользователи") ut.should_not_be_user_in_table(user_data["name"], user_data["role"]) - def test_reset_password(self, browser: Page, cleanup_autoadmin) -> None: + def test_reset_password(self, browser: Page, cleanup_autoadmin: None) -> None: """Проверяет сброс пароля пользователя. Args: @@ -221,7 +221,7 @@ class TestUsersTab: mp_1.click_subpanel_item("Пользователи") ut_1.should_not_be_user_in_table(user_data["name"], user_data["role"]) - def test_edit_user_role(self, browser: Page, cleanup_autooperator) -> None: + def test_edit_user_role(self, browser: Page, cleanup_autooperator: None) -> None: """Проверяет изменение роли пользователя. Args: