Some checks failed
Deploy on push / deploy (push) Has been cancelled
### 🚀 CI/CD и E2E тестирование - **Исправлен Playwright headless режим в CI/CD**: Добавлена переменная окружения `PLAYWRIGHT_HEADLESS=true` для корректного запуска E2E тестов в CI/CD окружении без XServer - **Автоматическое переключение режимов**: Все Playwright тесты автоматически переключаются между headed (локально) и headless (CI/CD) режимами - **Установка браузеров Playwright в CI/CD**: Добавлен шаг для установки необходимых браузеров в CI/CD окружении - **Сборка фронтенда в CI/CD**: Добавлены шаги для установки Node.js зависимостей и сборки фронтенда перед запуском E2E тестов - **Условная загрузка статических файлов**: Бэкенд корректно обрабатывает отсутствие директории `dist/assets` в CI/CD окружении ### 🔧 Исправления тестов - **Исправлена ошибка pytest с TestModel**: Убран `__init__` конструктор из тестового класса `TestModel` в `test_db_coverage.py` - **Централизованная конфигурация URL**: Создана фикстура `frontend_url` с автоматическим определением доступности фронтенда - **Автоматическое переключение портов**: Тесты автоматически используют порт 8000 (бэкенд) если фронтенд на порту 3000 недоступен - **Исправлены все localhost:3000 в тестах**: Все тесты теперь используют динамическую фикстуру вместо жестко закодированных URL ### 🐛 Критические исправления - **Устранена бесконечная рекурсия в CommunityAuthor**: Исправлены методы `get_users_with_role`, `get_community_stats` и `get_user_communities_with_roles` - **Исправлено зависание CI/CD на 29% тестов**: Проблема была вызвана рекурсивными вызовами в ORM методах - **Упрощены тесты кастомных ролей**: Тесты теперь работают изолированно через Redis без зависимости от GraphQL слоя ### 📱 Админ-панель и фронтенд - **E2E тесты работают через бэкенд**: В CI/CD фронтенд обслуживается бэкендом на порту 8000 - **Автоматическая адаптация тестов**: Один код работает везде - локально и в CI/CD - **Улучшенная диагностика**: Добавлены подробные логи для отслеживания проблем в тестах
33 lines
1.3 KiB
Python
33 lines
1.3 KiB
Python
"""
|
||
Тест для проверки фикстуры frontend_url
|
||
"""
|
||
|
||
import pytest
|
||
import os
|
||
|
||
|
||
def test_frontend_url_fixture(frontend_url):
|
||
"""Тест фикстуры frontend_url"""
|
||
print(f"🔧 PLAYWRIGHT_HEADLESS: {os.getenv('PLAYWRIGHT_HEADLESS', 'false')}")
|
||
print(f"🌐 frontend_url: {frontend_url}")
|
||
|
||
# В локальной разработке (без PLAYWRIGHT_HEADLESS) должен быть порт 8000
|
||
# так как фронтенд сервер не запущен
|
||
if os.getenv("PLAYWRIGHT_HEADLESS", "false").lower() != "true":
|
||
assert frontend_url == "http://localhost:8000"
|
||
else:
|
||
assert frontend_url == "http://localhost:8000"
|
||
|
||
print(f"✅ frontend_url корректный: {frontend_url}")
|
||
|
||
|
||
def test_frontend_url_environment_variable():
|
||
"""Тест переменной окружения PLAYWRIGHT_HEADLESS"""
|
||
playwright_headless = os.getenv("PLAYWRIGHT_HEADLESS", "false").lower() == "true"
|
||
print(f"🔧 PLAYWRIGHT_HEADLESS: {playwright_headless}")
|
||
|
||
if playwright_headless:
|
||
print("✅ CI/CD режим - используем порт 8000")
|
||
else:
|
||
print("✅ Локальная разработка - используем порт 8000 (фронтенд не запущен)")
|