Версия: 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 # Совместимость шаблонов
# Все тесты
pytest tests/integration/
# Конкретный тест
pytest tests/integration/test_components_usage.py
# С подробным выводом
pytest tests/integration/ -v
# С покрытием
pytest tests/integration/ --cov=components --cov=templates
# Установить 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
Что проверяет: Интеграция 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
Что проверяет: Использование components/ в projects/
Проверки:
- ✅ Компоненты существуют (formatters, validators, entities)
- ✅ Компоненты используются в проектах
- ✅ Правильная структура components/
- ✅ Нет циклических зависимостей (FSD правило)
- ✅ Итоговая статистика использования
Запуск:
pytest tests/integration/test_components_usage.py -v
Ожидаемый вывод:
✓ Всего компонентов создано: 9 файлов
✓ Всего файлов в projects/: 45
✓ Файлов использующих components: 5
✓ Процент использования: 11.1%
Что проверяет: Совместимость шаблонов друг с другом
Проверки:
- ✅ 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: ✅ Полностью совместимы
# .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
# .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"""
# ... проверки ...
// 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 сек |
pip install pytest
npm install -D @playwright/test
npx playwright install chromium
# Проверить структуру
ls -la components/
# Проверить PYTHONPATH
export PYTHONPATH=/opt/claude-workspace:$PYTHONPATH
# Увеличить timeout
npx playwright test --timeout=60000
tests/library/e2e/ — тесты отдельных страницtests/library/unit/ — тесты функцийtemplates/VERSIONS.yaml — версии шаблоновcomponents/ — переиспользуемые компонентыВерсия: 1.0
Дата: 2025-11-10
Автор: Claude Code