-
Notifications
You must be signed in to change notification settings - Fork 0
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-ответов. |
Эти тесты обеспечивают соответствие 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". |
Тесты рендеринга, взаимодействия и состояний 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. |
Юнит-тесты детерминированной логики каждого движка. Используют 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) |
| Файл | Назначение |
|---|---|
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-тестах.