Добавлены отсутствующие аннотации типов

pull/1/head
Radislav 2025-08-29 14:04:48 +03:00
parent a3956c08fc
commit ddcecce8b7
4 changed files with 15 additions and 16 deletions

View File

@ -6,6 +6,7 @@
import json import json
import jsondiff import jsondiff
from typing import Any, Dict
from playwright.sync_api import Page from playwright.sync_api import Page
from tools.logger import get_logger from tools.logger import get_logger
from components.base_component import BaseComponent from components.base_component import BaseComponent
@ -16,9 +17,6 @@ logger = get_logger("JSON_CONTAINER")
class JsonContainerComponent(BaseComponent): class JsonContainerComponent(BaseComponent):
"""Компонент для работы с JSON-данными на странице. """Компонент для работы с JSON-данными на странице.
Предоставляет методы чтения и проверки JSON-данных в контейнерах. Предоставляет методы чтения и проверки JSON-данных в контейнерах.
""" """
@ -33,7 +31,7 @@ class JsonContainerComponent(BaseComponent):
super().__init__(page) super().__init__(page)
# Действия: # Действия:
def read_data(self, locator): def read_data(self, locator: Any) -> Dict:
"""Читает и форматирует JSON-данные из указанного локатора. """Читает и форматирует JSON-данные из указанного локатора.
Args: Args:
@ -93,7 +91,7 @@ class JsonContainerComponent(BaseComponent):
return json.loads(formatted_json_string) 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-объекты на идентичность. """Сравнивает JSON-объекты на идентичность.
Args: Args:

View File

@ -46,7 +46,7 @@ class NavigationPanelComponent(BaseComponent):
loc = self.get_locator(locator) loc = self.get_locator(locator)
loc.get_by_text(item_name).click() 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: Args:
@ -120,7 +120,7 @@ class NavigationPanelComponent(BaseComponent):
found = find_and_click_item(self.page, root_locator, item_name) found = find_and_click_item(self.page, root_locator, item_name)
assert found, f"Navigation panel item {item_name} is missing" 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). Рекурсивно обходит дерево v-treeview и выводит информацию об элементах в режиме отладки (debug=True).

View File

@ -3,6 +3,7 @@
Содержит общие методы для взаимодействия со страницей и API. Содержит общие методы для взаимодействия со страницей и API.
""" """
from typing import Dict
from playwright.sync_api import Page, Response, APIRequestContext, expect from playwright.sync_api import Page, Response, APIRequestContext, expect
from data.environment import host from data.environment import host
from tools.logger import get_logger from tools.logger import get_logger
@ -50,7 +51,7 @@ class BasePage:
"""Перезагружает текущую страницу.""" """Перезагружает текущую страницу."""
self.page.reload() self.page.reload()
def wait_for_timeout(self, timeout): def wait_for_timeout(self, timeout: int) -> None:
"""Ожидает указанное количество миллисекунд. """Ожидает указанное количество миллисекунд.
Args: Args:
@ -66,7 +67,7 @@ class BasePage:
""" """
return self.page.context.request return self.page.context.request
def send_get_api_request(self, uri) -> Response: def send_get_api_request(self, uri: str) -> Response:
"""Отправляет GET-запрос к API. """Отправляет GET-запрос к API.
Args: Args:
@ -84,12 +85,12 @@ class BasePage:
) )
return response return response
def send_post_api_request(self, uri, payload) -> Response: def send_post_api_request(self, uri: str, payload: Dict) -> Response:
"""Отправляет POST-запрос к API. """Отправляет POST-запрос к API.
Args: Args:
uri (str): URI API-эндпоинта (без базового URL). uri (str): URI API-эндпоинта (без базового URL).
payload: Данные для отправки в теле запроса. payload (Dict): Данные для отправки в теле запроса.
Returns: Returns:
Response: Ответ сервера. Response: Ответ сервера.
@ -104,7 +105,7 @@ class BasePage:
) )
return response return response
def get_response_body(self, response) -> dict | None: def get_response_body(self, response: Response) -> dict | None:
"""Извлекает тело ответа в формате JSON. """Извлекает тело ответа в формате JSON.
Args: Args:
@ -180,4 +181,4 @@ class BasePage:
return False return False
return True return True
assert compare_lists(actual, expected), msg assert compare_lists(actual, expected), msg

View File

@ -134,7 +134,7 @@ class TestUsersTab:
user_name, _ = ut.open_edit_user_page_by_index(0) user_name, _ = ut.open_edit_user_page_by_index(0)
ut.close_edit_user_window(user_name) 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: Args:
@ -181,7 +181,7 @@ class TestUsersTab:
mp.click_subpanel_item("Пользователи") mp.click_subpanel_item("Пользователи")
ut.should_not_be_user_in_table(user_data["name"], user_data["role"]) 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: Args:
@ -221,7 +221,7 @@ class TestUsersTab:
mp_1.click_subpanel_item("Пользователи") mp_1.click_subpanel_item("Пользователи")
ut_1.should_not_be_user_in_table(user_data["name"], user_data["role"]) 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: Args: