4.4 KiB
4.4 KiB
Автотестирование 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-Id→extra.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.yml—workflow_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]
- Pre-deploy — в workflow каждого приложения (
build.yml). - 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 + HTMLadminpanel-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 |