Tests/config/ui_config.py
2026-01-19 23:32:11 +04:00

90 lines
3.9 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from typing import Dict, Any
from config.environment import EnvironmentLoader
class UIConfig:
"""Настройки UI тестов"""
# Базовые настройки
UI_BASE_URL = EnvironmentLoader.get_env_variable('UI_BASE_URL', 'http://localhost:5173')
UI_TIMEOUT = EnvironmentLoader.get_env_variable('UI_TIMEOUT', 30) # секунды
# Настройки браузера
BROWSER_NAME = EnvironmentLoader.get_env_variable('BROWSER_NAME', 'firefox').lower()
BROWSER_HEADLESS = EnvironmentLoader.get_env_variable('BROWSER_HEADLESS', True)
BROWSER_WIDTH = EnvironmentLoader.get_env_variable('BROWSER_WIDTH', 1920)
BROWSER_HEIGHT = EnvironmentLoader.get_env_variable('BROWSER_HEIGHT', 1080)
BROWSER_LANGUAGE = EnvironmentLoader.get_env_variable('BROWSER_LANGUAGE', 'en')
BROWSER_FULLSCREEN = EnvironmentLoader.get_env_variable('BROWSER_FULLSCREEN', False)
# Настройки Chrome
CHROME_HEADLESS_NEW = EnvironmentLoader.get_env_variable('CHROME_HEADLESS_NEW', True)
CHROME_DISABLE_GPU = EnvironmentLoader.get_env_variable('CHROME_DISABLE_GPU', True)
CHROME_NO_SANDBOX = EnvironmentLoader.get_env_variable('CHROME_NO_SANDBOX', True)
CHROME_DISABLE_DEV_SHM = EnvironmentLoader.get_env_variable('CHROME_DISABLE_DEV_SHM', True)
# Настройки Firefox
FIREFOX_HEADLESS = EnvironmentLoader.get_env_variable('FIREFOX_HEADLESS', True)
# Настройки ожиданий
IMPLICIT_WAIT = EnvironmentLoader.get_env_variable('IMPLICIT_WAIT', 10) # секунды
EXPLICIT_WAIT = EnvironmentLoader.get_env_variable('EXPLICIT_WAIT', 30) # секунды
PAGE_LOAD_TIMEOUT = EnvironmentLoader.get_env_variable('PAGE_LOAD_TIMEOUT', 60) # секунды
SCRIPT_TIMEOUT = EnvironmentLoader.get_env_variable('SCRIPT_TIMEOUT', 30) # секунды
# Настройки скриншотов
SCREENSHOTS_ON_FAILURE = EnvironmentLoader.get_env_variable('SCREENSHOTS_ON_FAILURE', True)
SCREENSHOTS_DIR = EnvironmentLoader.get_env_variable('SCREENSHOTS_DIR', 'screenshots')
SCREENSHOTS_FORMAT = EnvironmentLoader.get_env_variable('SCREENSHOTS_FORMAT', 'png')
# Пути
URLS = {
"team": EnvironmentLoader.get_env_variable('UI_URL_TEAM', '/team'),
"blog": EnvironmentLoader.get_env_variable('UI_URL_BLOG', '/blog')
}
@classmethod
def get_url(cls, url_name: str, **kwargs) -> str:
"""Получение endpoint с подстановкой параметров"""
url_template = cls.URLS.get(url_name)
if not url_template:
raise ValueError(f"URL '{url_name}' not found in configuration")
return cls.UI_BASE_URL + url_template.format(**kwargs)
@classmethod
def get_browser_options(cls) -> Dict[str, Any]:
"""Получение опций браузера"""
options = {
'headless': cls.BROWSER_HEADLESS,
'width': cls.BROWSER_WIDTH,
'height': cls.BROWSER_HEIGHT,
'language': cls.BROWSER_LANGUAGE,
}
if cls.BROWSER_NAME == 'chrome':
options.update({
'headless_new': cls.CHROME_HEADLESS_NEW,
'disable_gpu': cls.CHROME_DISABLE_GPU,
'no_sandbox': cls.CHROME_NO_SANDBOX,
'disable_dev_shm': cls.CHROME_DISABLE_DEV_SHM,
})
elif cls.BROWSER_NAME == 'firefox':
options.update({
'headless': cls.FIREFOX_HEADLESS,
})
return options
@classmethod
def get_wait_config(cls) -> Dict[str, Any]:
"""Получение конфигурации ожиданий"""
return {
'implicit': cls.IMPLICIT_WAIT,
'explicit': cls.EXPLICIT_WAIT,
'page_load': cls.PAGE_LOAD_TIMEOUT,
'script': cls.SCRIPT_TIMEOUT,
}
# Экспорт конфигурации
ui_config = UIConfig