Skip to content

features testing

Sergey Bogorad edited this page Jul 29, 2026 · 4 revisions

Тестирование

В Когнитике 357 тестов в 84 файлах (Vitest) плюс Playwright E2E. Все тесты зелёные. Тесты сгруппированы по категориям ниже.


Безопасность и приватность

Эти тесты принуждают к соблюдению границ безопасности, задокументированных в SECURITY.md. Они проверяют, что никакие чувствительные данные не утекают через API, логи или хранилище.

Файл (от корня репозитория) Назначение
src/tests/analytics-export-privacy.test.ts Проверяет, что /api/analytics/export не возвращает сырой Brain ID, email, токены, хэши паролей. Объект privacy в ответе подтверждает personal_identifiers_included: false, safe_for_external_llm: true.
src/tests/admin-route-privacy.test.ts Проверяет, что админ-API отклоняет запросы от не-админов. Роль из JWT не доверяется — сервер делает свой запрос к БД.
src/tests/app-identity-privacy.test.tsx Проверяет, что React-приложение не отображает сырой Brain ID, email, токены в публичных компонентах.
src/tests/legacy-email-audit.test.ts Проверяет, что legacy-поля email/password в модели User не раскрываются публичным API и остаются за флагами.
src/tests/socket-duels.test.ts Проверяет trust-boundary Socket.io дуэлей: аутентификация сокетов, серверная проверка членства в матче, 증거-based клетки.
src/tests/cors-config.test.ts Проверяет логику CORS в src/server/config/cors.ts: отказ wildcard в продакшене, явный allowlist, dev-флаг.
src/tests/logging-privacy.test.ts Проверяет, что серверные логи не содержат сырой Brain ID, email, токены, хэши. Утилиты safeError / createSafeLogger в src/lib/safe-logger.ts тестируются на корректное замаскирование.
src/tests/privacy-sanitizers.test.ts Юнит-тесты privacyGuard middleware и сериализаторов, вырезающих PII из API-ответов.

Route-контракты

Эти тесты обеспечивают соответствие API-маршрутов ожидаемым форматам запроса/ответа и кодам статуса.

Файл Назначение
src/tests/feedback-route.test.ts /api/feedback: персистит фидбек, возвращает tracking number, валидирует обязательные поля, ошибки.
src/tests/ideas-route.test.ts /api/ideas: создание идей, листинг по пользователю, уникальность голосов (один голос на идею на пользователя), нотификация о новых идеях.
src/tests/game-route.test.ts /api/game: создание сессий, расчёт XP, возврат прогресса, XP-event контракт.
src/tests/neurotrainer-route.test.ts /api/neurotrainer: генерация контента, приём ответов, фидбек; тесты LLM-enabled и fallback режимов.
src/tests/practice-flow-route.test.ts /api/analytics/practice-flow: генерация рекомендаций на основе истории сессий, контракт рекомендации.
src/tests/leaderboard-route.test.ts /api/leaderboard: ранжированные данные, синхронизация недельного XP, авторизация sync-операций.
src/tests/navigation-contract.test.ts Контракт навигации: все рекомендации маппятся на реальные маршруты, статичные навигации в App.tsx совпадают с декларированными роутами, TrainingGallery модули рутабельны, ROUTE_DEFINITIONS и APP_ROUTE_PATHS в синхронизации, HEADER_NAV_ITEMS соответствуют роутам, header навигация за широким брейкпоинтом (2xl), мобильная кнопка меню className="2xl:hidden p-2".

UI-компоненты

Тесты рендеринга, взаимодействия и состояний React-компонентов.

Файл Назначение
src/tests/dashboard-ui.test.tsx Dashboard: рендер вкладки тренировок по умолчанию, переключение на профиль, дуэли, загрузка асинхронных данных (waitFor).
src/tests/admin-access-ui.test.tsx /admin: Brain ID логин-промпт для неавторизованных, доступ-запрещён для не-админов, рендер админ-панели для админов.
src/tests/gallery-ui.test.tsx TrainingGallery: отображение базовых модулей, переключение доменов (Инженерия, Страж Разума), вызов onStart при клике, открытие новых тренажёров.
src/tests/analytics-ui.test.tsx CognitiveProfile: кнопка экспорта, внутренние переходы к рекомендованным модулям; Wiki: список статей.
src/tests/feedback-ui.test.tsx FeedbackModal: отображение tracking number после успешной отправки.
src/tests/luscher-ui.test.tsx LuscherTest: заголовок, пошаговый выбор всех 8 цветов, вызов onFinish.
src/tests/app-identity-privacy.test.tsx Приватность ID в мобильном drawer, ожидание гидратации auth перед онбордингом.
src/tests/onboarding.test.tsx OnboardingModal: поэтапный путь, аналитика тренажёров, LLM экспорт, приватность.
src/tests/auth-modal.test.tsx AuthModal: публичный контракт Brain ID-only (нет email/password контролов в публичном режиме).
src/tests/app-error-boundary.test.tsx AppErrorBoundary: перехват React-ошибок рендеринга, фолбэк UI без краша всего приложения.
src/tests/safe-responsive-container.test.tsx SafeResponsiveContainer: рендеринг Recharts без zero-size container warning.

Ядра тренажёров (Engine cores)

Юнит-тесты детерминированной логики каждого движка. Используют seeded generators для воспроизводимости.

Файл Модуль
src/tests/schulte-core.test.ts Schulte tables (classic, Gorbov)
src/tests/nback-core.test.ts N-Back
src/tests/stroop-core.test.ts Stroop test
src/tests/spatial-core.test.ts Spatial Concealment
src/tests/mental-math-engine.test.ts Mental Math (4 режима)
src/tests/alphabet-table-engine.test.ts Alphabet Table
src/tests/stroop-alphabet-engine.test.ts Stroop-Alphabet combined
src/tests/schulte90-core.test.ts Schulte 1-90 (Gorbov 4 rules)
src/tests/typing-core.test.ts Speed Typing
src/tests/logical-core.test.ts Logical Matrix
src/tests/numerical-core.test.ts Numerical Analysis
src/tests/situational-core.test.ts Situational Judgment
src/tests/topology-core.test.ts Topology Memory
src/tests/collision-core.test.ts Collision Detector
src/tests/dispatcher-core.test.ts Async Dispatcher
src/tests/language-scanner-core.test.ts Language Scanner
src/tests/decryptor-core.test.ts Decryptor
src/tests/reality-check-core.test.ts Reality Check
src/tests/noise-reduction.test.ts Noise Reduction
src/tests/luscher-core.test.ts Luscher color test
src/tests/puzzle-logic.test.ts Puzzle logic helpers
src/tests/praise-engine.test.ts Hype Filter / Praise engine

Знания / Домен

Файл Назначение
src/tests/knowledge-base-contract.test.ts Контракт базы знаний: каждый публичный тренинговый роут имеет стабильную статью /wiki/<module-id>, все теги имеют глоссарий, статьи полезны для онбординга и ручного QA.
src/tests/content-db.test.ts Контент-БД: 500+ карточек, seed-детерминизм, отсутствие дублей.
src/tests/cognitive-module-graph.test.ts Cognitive Module Graph: рендер узлов, связи, unlock-логика.
src/tests/cognitive-map.test.ts CognitiveMap компонент: рендер, навигация.
src/tests/cognitive-trend.test.ts Вычисление тренда когнитивного профиля (improving/declining/stable).
src/tests/cognitive-trend-curve.test.tsx ConcentrationCurve UI: рендер кривой концентрации.
src/tests/daily-trajectory.test.ts DailyPracticePlan: генерация плана с weak_area для нового пользователя.
src/tests/daily-tasks.test.ts Ежедневные задания: XP награды, completion status.
src/tests/leagues.test.ts Лиги: расчёт, ранжирование.
src/tests/completion-recommendation-contract.test.ts Контракт рекомендаций после завершения сессии.

Инфраструктура

Файл Назначение
src/tests/cors-config.test.ts CORS логика (см. Security)
src/tests/storage-gateway.test.ts StorageGateway: аудируемый доступ к localStorage.
src/tests/runtime-platform.test.ts Runtime platform detection (web vs native).
src/tests/api-validation.test.ts Zod-схемы API: валидация запросов/ответов.
src/tests/frame-budget.test.ts Frame budget benchmarks (WASM gate).
src/tests/pwa-strategy.test.ts PWA/offline стратегия (отключена до гейтов).
src/tests/session-batch-analytics-contract.test.ts Контракт батч-аналитики сессий.
src/tests/analyze-session-core.test.ts Core анализ сессии.
src/tests/analyze-session-v2-fixtures.test.ts Fixtures для v2 анализатора.
src/tests/zod-csp.test.ts CSP-заголовки и Zod-валидация.
src/tests/ui-smoke.test.tsx Smoke-тесты рендеринга ключевых страниц.
src/tests/safe-responsive-container.test.tsx SafeResponsiveContainer (см. UI)

E2E (Playwright)

Файл Назначение
tests/basic.spec.ts Production smoke: загрузка без blank page, horizontal overflow на QA viewport'ах (320–2560), прямые маршруты.
tests/screenshot.spec.ts Скриншот-тесты ключевых страниц.
tests/frame-budget.spec.ts Frame budget E2E проверки.

Запуск

# Vitest (unit + integration)
pnpm test

# Playwright E2E
pnpm test:e2e

# Playwright к запущенному серверу
pnpm dev
pnpm test:e2e:attached

Все 357 тестов проходят. Известные неблокирующие предупреждения: Recharts zero-size в jsdom, React act(...) в dashboard-тестах.

Clone this wiki locally