Initial commit

This commit is contained in:
KamilM1205 2026-01-19 23:32:11 +04:00
commit 9795660e1f
43 changed files with 2757 additions and 0 deletions

90
config/ui_config.py Normal file
View file

@ -0,0 +1,90 @@
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