Добавлены отсутствующие аннотации типов
parent
a3956c08fc
commit
ddcecce8b7
|
|
@ -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:
|
||||||
|
|
|
||||||
|
|
@ -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).
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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:
|
||||||
|
|
|
||||||
|
|
@ -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:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue