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

TESTS LIBRARY — Библиотека переиспользуемых тестов

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


ЧТО ЭТО?

Библиотека готовых тестов для экономии токенов.

Проблема:
Каждый раз генерировать тесты с нуля → 2000-3000 tokens

Решение:
Копировать шаблон → Адаптировать → 300 tokens (экономия 85%)


БЫСТРЫЙ СТАРТ

1. Найти нужный шаблон

cat tests/catalog.yaml | grep -A 10 "test-streamlit-page"

2. Скопировать

cp tests/library/e2e/streamlit/test_page_load.js tests/project/test_orders_page.js

3. Заменить {{VARIABLES}}

const BASE_URL = 'http://localhost:8501';  // было: {{BASE_URL}}
const PAGE_PATH = '/Orders';                // было: {{PAGE_PATH}}
const PAGE_TITLE = 'Заказы';               // было: {{PAGE_TITLE}}

4. Запустить

npx playwright test tests/project/test_orders_page.js

СТРУКТУРА

tests/
├── catalog.yaml              # Каталог всех тестов
├── README.md                 # Этот файл

├── library/                  # Библиотека шаблонов
   ├── unit/                 # Unit тесты
      ├── test_function.py
      ├── test_class.py
      └── test_validation.py
   
   ├── integration/          # Integration тесты
      ├── test_database.py
      ├── test_api_endpoint.py
      └── test_external_api.py
   
   ├── e2e/                  # E2E тесты
      └── streamlit/
          ├── test_page_load.js         создан
          ├── test_form_submit.js       создан
          ├── test_navigation.js        создан
          ├── test_table_render.js      создан
          └── test_auth_flow.js         создан
   
   └── performance/          # Нагрузочные тесты

└── fixtures/                 # Общие fixtures
    ├── database.py
    ├── auth.py
    └── mock_data.py

ДОСТУПНЫЕ ТЕСТЫ

E2E (Streamlit) — 5 шаблонов ✅

  1. test_page_load.js — Проверка загрузки страницы
  2. test_form_submit.js — Тестирование форм
  3. test_navigation.js — Навигация между страницами
  4. test_table_render.js — Таблицы и фильтры
  5. test_auth_flow.js — Авторизация

Unit — 1 шаблон ✅

  1. test_function.py — Чистые функции

Integration — 0 шаблонов (TODO)

Fixtures — 0 шаблонов (TODO)


ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ

Пример 1: E2E тест страницы Orders

# 1. Скопировать шаблон
cp tests/library/e2e/streamlit/test_page_load.js tests/project/test_orders.js

# 2. Открыть и заменить переменные
vim tests/project/test_orders.js

# Заменить:
# {{BASE_URL}} → http://localhost:8501
# {{PAGE_PATH}} → /Orders
# {{PAGE_TITLE}} → Заказы
# {{KEY_ELEMENT_1}} → text=Фильтры
# {{KEY_ELEMENT_2}} → [data-testid="stDataFrame"]

# 3. Запустить
npx playwright test tests/project/test_orders.js

Пример 2: Unit тест функции calculate_total

# 1. Скопировать
cp tests/library/unit/test_function.py tests/project/test_calculate_total.py

# 2. Заменить переменные
# {{FUNCTION_NAME}} → calculate_total
# {{MODULE_PATH}} → utils.pricing
# {{SAMPLE_INPUT}} → [{"price": 100, "quantity": 2}]
# {{EXPECTED_OUTPUT}} → 200

# 3. Запустить
pytest tests/project/test_calculate_total.py -v

ЭКОНОМИЯ ТОКЕНОВ

Сравнение: генерация vs адаптация

Тип теста Генерация Адаптация Экономия
Unit 2000 tokens 300 tokens 85%
Integration 2500 tokens 500 tokens 80%
E2E 2200 tokens 400 tokens 82%

Средняя экономия: 80-85%


WORKFLOW

┌─────────────────────────────────────────┐
 Нужен тест для X                        
└───────────────┬─────────────────────────┘
                
                
┌─────────────────────────────────────────┐
 1. Поиск в catalog.yaml                 
    cat tests/catalog.yaml | grep X      
└───────────────┬─────────────────────────┘
                
                
┌─────────────────────────────────────────┐
 2. Копирование шаблона                  
    cp tests/library/.../template.py     
└───────────────┬─────────────────────────┘
                
                
┌─────────────────────────────────────────┐
 3. Адаптация (замена {{VARIABLES}})    
    Экономия: 80-85% токенов             
└───────────────┬─────────────────────────┘
                
                
┌─────────────────────────────────────────┐
 4. Запуск теста                         
    pytest / playwright test             
└─────────────────────────────────────────┘

ПРАВИЛА РАБОТЫ

✅ Всегда:

  1. Искать в catalog.yaml ПЕРЕД генерацией
  2. Копировать шаблон, не генерировать с нуля
  3. Адаптировать под свои нужды
  4. Запускать после адаптации

❌ Никогда:

  1. Не генерировать тесты с нуля
  2. Не игнорировать библиотеку
  3. Не создавать дубликаты шаблонов

ИНТЕГРАЦИЯ С КАСКАДОМ

Tests Library = уровень L4 в каскаде поиска.

L1: Platform rules (85%)
L2: External libraries (98%)  pytest, playwright
L3: Templates (99.5%)
L4: Tests library (99.8%)  ВЫ ЗДЕСЬ
L5: Project code (99.95%)
L6: Archive (100%)
L7: Generate (последний вариант)

СТАТИСТИКА

Создано:
- 5 E2E тестов (Streamlit)
- 1 unit тест
- 1 каталог (catalog.yaml)

Всего шаблонов: 6
Средняя экономия: 80-85% токенов
Токенов сэкономлено: ~10,000 (на 6 тестах)


СЛЕДУЮЩИЕ ШАГИ

Ближайшие (приоритет)

Будущие


ТЕХНОЛОГИИ

Frameworks:
- pytest (Python unit/integration)
- Playwright (E2E)
- locust (performance) — TODO

Установка:

# Pytest
pip install pytest pytest-cov

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


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