Files
docs/infrastructure/autotesting.md
T
2026-06-04 13:22:23 +03:00

4.4 KiB
Raw Blame History

Автотестирование Sova

Ветка внедрения: issues/27-test в репозиториях k8s/sova-*.

Правило по контурам

Контур (тег) Тесты в CI E2E
*-test Unit + integration (backend), Jest (adminpanel), PHPUnit (cabinet) Smoke + full (Playwright, mocks)
*-stage То же pre-deploy Только smoke read-only
*-prod Нет автотестов Нет

Тесты никогда не гоняются на production-окружении. Запуск привязан к git-тегам backend-v*, adminpanel-v*, … в Gitea Actions.

Пирамида

1. Backend (sova-backend)

  • Инструменты: PHPUnit 12, Zenstruck Foundry (далее).
  • Unit: tests/Unit, tests/Service — без БД.
  • Integration: tests/Controller, tests/Integrationс PostgreSQL в CI (только тег *-test, continue-on-error на старте).
  • Логи E2E: App\Log\TestTraceProcessor — заголовки X-Is-Auto-Test, X-Test-Trace-Idextra.is_test, extra.test_trace_id в Loki.
composer phpunit:unit
composer phpunit:coverage   # var/coverage/clover.xml

CI: .gitea/workflows/build.yml — job test на test|stage, артефакт backend-coverage-* (14 дней).

2. adminPanel (sova-adminpanel)

  • Инструменты: Jest + React Testing Library (миграция на Vitest — в roadmap).
  • CI: npm run test:ci (coverage lcov), lint, build до образа.

3. E2E (sova-e2e)

  • Инструменты: Playwright.
  • Проекты: smoke-readonly (stage), full-e2e (test, сценарии в tests/e2e/).
  • CI: .gitea/workflows/e2e-tests.ymlworkflow_dispatch или тег e2e-v*-*.

Локально:

cd k8s/sova-e2e
npm install && npx playwright install chromium
export API_BASE_URL=http://192.168.252.6 API_HOST=api.test.sova.local
npm run test:smoke

Loki (Grafana Explore)

После деплоя с прогоном E2E:

{namespace="sova-test"} | json | extra_is_test="true" | extra_test_trace_id="<GITHUB_RUN_ID>"

CI/CD: две фазы

flowchart LR
  tag[Git tag *-test] --> pre[Pre-deploy: unit/coverage]
  pre --> build[Build image]
  build --> deploy[sova-deploy GitOps]
  deploy --> e2e[Post-deploy: sova-e2e]
  1. Pre-deploy — в workflow каждого приложения (build.yml).
  2. Post-deploy — репозиторий sova-e2e, ожидание Argo CD (scripts/wait-for-argocd.sh), отчёт Playwright HTML в artifacts.

Проверка деплоя на test (локальная ферма)

После ./scripts/release-tag.sh backend backend-v1.0.6-test test (и аналоги для adminpanel, cabinet, docs):

Проверка Команда / URL
Образы в кластере kubectl get deploy -n sova-test → теги *-v1.0.x-test
API smoke curl -H "Host: api.test.sova.local" http://192.168.252.6/news/list
admin login curl -H "Host: admin.test.sova.local" http://192.168.252.6/login
Docs curl -H "Host: docs.sova.local" http://192.168.252.6/ (или docs.test.sova.local после sync ingress)
Playwright cd sova-e2e && npm run test:smoke

Gitea Actions: артефакты backend-coverage-*, adminpanel-coverage-* (14 дней).

Покрытие (test contour)

При теге backend-v1.0.x-test / adminpanel-v1.0.x-test в Gitea Actions → Artifacts:

  • backend-coverage-<tag>/ — Clover + HTML
  • adminpanel-coverage-<tag>/ — lcov

Просмотр: скачать артефакт job test или открыть summary в логе (coverage text-summary).

Дорожная карта

Месяц Задачи
1 (текущая ветка) PHPUnit unit + coverage, Jest CI, TestTraceProcessor, sova-e2e smoke, документация
2 PG в runner, миграции, SpecialistRepository integration; 3 smoke в пайплайне
3 Full E2E JWT/CRUD/запись; nightly test; Telegram alerts

Связанные страницы