architect/_archive/2025-11-cleanup/tests/integration/README.md

Integration Tests — Интеграционные тесты

Версия: 1.0
Дата создания: 2025-11-10
Статус: Production ready


ЧТО ЭТО?

Интеграционные тесты проверяют что различные части системы работают вместе:
- Шаблоны совместимы друг с другом
- Компоненты используются в проектах
- Нет конфликтов между шаблонами


СТРУКТУРА

tests/integration/
├── README.md                           # Этот файл
├── test_auth_crud.js                   # Auth + CRUD совместимость (E2E)
├── test_components_usage.py            # Использование компонентов в проектах
└── test_template_compatibility.py      # Совместимость шаблонов

ЗАПУСК ТЕСТОВ

Python тесты

# Все тесты
pytest tests/integration/

# Конкретный тест
pytest tests/integration/test_components_usage.py

# С подробным выводом
pytest tests/integration/ -v

# С покрытием
pytest tests/integration/ --cov=components --cov=templates

JavaScript тесты (E2E)

# Установить Playwright (если ещё не установлен)
npm install -D @playwright/test

# Запустить тесты
npx playwright test tests/integration/test_auth_crud.js

# С UI
npx playwright test tests/integration/test_auth_crud.js --ui

# Headless
npx playwright test tests/integration/test_auth_crud.js --headed

ТЕСТЫ

1. test_auth_crud.js

Что проверяет: Интеграция auth-v1 + crud-v1 шаблонов

Сценарии:
- ✅ Полный workflow: login → create → edit → delete → logout
- ✅ Auth защищает CRUD страницы
- ✅ Сессия сохраняется при CRUD операциях

Требования:
- Запущенное Streamlit приложение с auth + CRUD
- BASE_URL в env: export BASE_URL=http://localhost:8501

Запуск:

# Запустить приложение
streamlit run app.py &

# Запустить тест
npx playwright test tests/integration/test_auth_crud.js

2. test_components_usage.py

Что проверяет: Использование components/ в projects/

Проверки:
- ✅ Компоненты существуют (formatters, validators, entities)
- ✅ Компоненты используются в проектах
- ✅ Правильная структура components/
- ✅ Нет циклических зависимостей (FSD правило)
- ✅ Итоговая статистика использования

Запуск:

pytest tests/integration/test_components_usage.py -v

Ожидаемый вывод:

✓ Всего компонентов создано: 9 файлов
✓ Всего файлов в projects/: 45
✓ Файлов использующих components: 5
✓ Процент использования: 11.1%

3. test_template_compatibility.py

Что проверяет: Совместимость шаблонов друг с другом

Проверки:
- ✅ VERSIONS.yaml существует и валиден
- ✅ Все шаблоны описаны в VERSIONS.yaml
- ✅ Матрица совместимости существует
- ✅ Нет конфликтов session_state между шаблонами
- ✅ Нет конфликтов component keys
- ✅ Зависимости совместимы
- ✅ Итоговая матрица совместимости

Запуск:

pytest tests/integration/test_template_compatibility.py -v

Ожидаемый вывод:

✓ Всего шаблонов: 3
✓ Совместимых пар: 4

Матрица совместимости:
  streamlit-auth-v1:
    + streamlit-crud-v1: ✅ Полностью совместимы
    + table-filters-v1: ✅ Полностью совместимы

НЕПРЕРЫВНАЯ ИНТЕГРАЦИЯ (CI/CD)

GitHub Actions

# .github/workflows/integration-tests.yml
name: Integration Tests

on: [push, pull_request]

jobs:
  test-python:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
      - run: pip install -r requirements.txt
      - run: pytest tests/integration/*.py

  test-e2e:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
      - run: npm install -D @playwright/test
      - run: npx playwright install chromium
      - run: streamlit run app.py &
      - run: npx playwright test tests/integration/*.js

Pre-commit Hook

# .git/hooks/pre-commit
#!/bin/bash
echo "Running integration tests..."
pytest tests/integration/*.py || exit 1
echo "✓ Integration tests passed"

КОГДА ЗАПУСКАТЬ

Обязательно:

Рекомендуется:


ДОБАВЛЕНИЕ НОВЫХ ТЕСТОВ

Пример: Тест нового шаблона

# tests/integration/test_new_template.py

def test_new_template_exists():
    """Проверить что новый шаблон существует"""
    template_path = TEMPLATES_DIR / "by-task/new-template-v1"
    assert template_path.exists()

def test_new_template_compatible_with_auth():
    """Проверить совместимость с auth"""
    # ... проверки ...

Пример: Тест E2E

// tests/integration/test_new_feature.js

test('new feature works with existing features', async ({ page }) => {
    // 1. Setup
    await page.goto(BASE_URL);

    // 2. Test interaction
    await page.click('button:has-text("New Feature")');

    // 3. Verify
    await expect(page.locator('text=Success')).toBeVisible();
});

МЕТРИКИ КАЧЕСТВА

Целевые показатели:

Метрика Цель Текущее
Использование компонентов 50%+ ~10% (после рефакторинга вырастет)
Совместимых пар шаблонов 90%+ 100% (4/4)
Покрытие тестами 80%+ TBD
Время выполнения < 2 мин ~30 сек

TROUBLESHOOTING

Ошибка "ModuleNotFoundError: No module named 'pytest'"

pip install pytest

Ошибка "Playwright is not installed"

npm install -D @playwright/test
npx playwright install chromium

Тесты не находят компоненты

# Проверить структуру
ls -la components/

# Проверить PYTHONPATH
export PYTHONPATH=/opt/claude-workspace:$PYTHONPATH

E2E тесты таймаутят

# Увеличить timeout
npx playwright test --timeout=60000

СВЯЗАННЫЕ РЕСУРСЫ


Версия: 1.0
Дата: 2025-11-10
Автор: Claude Code