### 🚀 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
- **Улучшенная диагностика**: Добавлены подробные логи для отслеживания проблем в тестах
- Replace local_session() calls with db_session fixture in tests
- Add @pytest.mark.asyncio decorators to async test functions
- Fix test_unpublish_shout.py to use proper test database setup
- Tests now use in-memory SQLite database with proper schema
- All test tables are created automatically via conftest.py fixtures
- Remove mocks that only test mocks
- Use real database connections and functions
- Fix virtual environment to use .venv instead of venv
- All 361 tests collect successfully
- Tests now test real functionality instead of mocked behavior
- Add oauth_db_session fixture for OAuth tests
- Add simple_user fixture for test data
- Fix TestModel constructor to avoid pytest warning
- Improve test isolation and cleanup
- Fixes pytest collection error during import
- Prevents code execution at module level
- Maintains functionality when run as script
- All 361 tests now collect successfully
- Comment out migrate_old_roles_to_community_author function
- Fixes F821 undefined name error
- TODO: implement migration when AuthorRole model is available
- Убрал логику создания Author объектов в декораторах login_required и login_accepted
- Это исправляет ошибку 'Cannot return null for non-nullable field Author.slug'
- Авторы должны создаваться только в резолверах при необходимости