ROX.ONE Тестирование и CI — надёжный gate от регрессий

Тестовая инфраструктура ROX.ONE использует bun:test для unit-тестов и Playwright для E2E. После серии крупных изменений (T537, Wave 1/2, RC2) накопились pre-existing failures в RTL и дрейф test discovery. Этот эпик приводит тестовый стек в порядок и устанавливает неснижаемые пороги качества для каждого PR. Unit-тесты: coverage threshold ≥80% на изменённом коде фиксируется через nyc/c8 report в CI, запрет на `it.skip` и `.only` в main ветке через pre-commit hook. Playwright E2E suite с xvfb для headless режима становится обязательным gate — сейчас harness готов (xvfb настроен), но не блокирует merge. LocalStack позволит тестировать AWS S3/Cloudflare интеграции без реального cloud-аккаунта. TypeStat автоматически находит места, где можно заменить `any` на конкретный тип — снижая счётчик при каждом PR. Audit-probes тесты верифицируют инварианты append-only storage на уровне интеграционных тестов. **Ключевые истории:** - bun:test coverage gate ≥80% на changed files с PR-comment отчётом - Playwright E2E suite в CI (xvfb, headless) — обязательный gate для всех адаптеров - TypeStat CI check: `any` count не должен расти между PRs - LocalStack: изолированные тесты S3, Cloudflare R2, CF Workers без live credentials - Audit-probes integration tests: append-only, PII-mask, UUID v7 sort invariants **Источники вдохновения:** - [localstack/localstack](https://github.com/localstack/localstack) — локальный эмулятор AWS для детерминированных тестов - [hegelai/prompttools](https://github.com/hegelai/prompttools) — тестирование LLM промптов и outputs - [JoshuaKGoldberg/TypeStat](https://github.com/JoshuaKGoldberg/TypeStat) — автоматическое устранение `any` в TypeScript **Ожидаемая ценность:** Каждый PR автоматически проверяется полным набором тестов — regression в chat, auth или artifact viewer не доедет до main без красного CI gate.

Please authenticate to join the conversation.

Upvoters
Status

In Review

Board
♾️

Bugs, Fixes, Improvements

Date

About 1 hour ago

Author

agi

Subscribe to post

Get notified by email when there are changes.