Skip to content

[Feature] CI: lint + smoke-тесты на PR (PHP / vueManager) #337

Description

@Ibochkarev

Описание функции

Gating PR через GitHub Actions: PHP lint/smoke-тесты и lint vueManager. Сейчас .github/workflows/release.yml только собирает релиз по тегу — регрессии не ловятся автоматически.

Проблема, которую решает

В core/components/minishop3/tests/ лежат standalone PHP-скрипты (DirectFilterKeys, EmailVerificationUrl, Phinx*, ProductCatalogService, UtilsParseImportedOptionValue). Их нет в CI. Vue Manager: npm run lint локально, на PR не обязателен.

Аудит: почти нулевое покрытие горячих путей (Cart/Order/auth/ImportCSV/OrdersController).

Предлагаемое решение

Минимальный Viable Gate (без большого rewrite):

  1. Workflow ci.yml на pull_request + push в основные ветки.
  2. PHP: composer install в core/components/minishop3, php -l по изменённым/всем src/, прогон существующих tests/*.php с ненулевым exit code при fail.
  3. Vue: npm ci && npm run lint в vueManager/ (Node 18+).
  4. Позже (отдельным PR): PHPUnit/Pest + пара unit-тестов на чистые функции (Utils::parseImportedOptionValue уже почти готов).

Не тащить полный e2e MODX в первый PR.

Альтернативные варианты

  • Только php -l без прогона tests — слабее, но лучше нуля.
  • PHPUnit сразу на всё — дороже; сначала обернуть существующие скрипты.

Примеры использования

# локально до push
cd core/components/minishop3 && php tests/ProductCatalogServiceTest.php
cd vueManager && npm run lint

Критерии приёмки

  • Красный CI блокирует merge при падении lint/smoke.
  • Документировано в README или PR template, как гонять локально.
  • Не требует живого MODX/MySQL для первого гейта (или явно помечено integration и optional).

Дополнительный контекст

Источник: аудит техдолга Jul 2026. F.I.R.S.T.: начать с Fast/Independent скриптов, которые уже есть.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestpriority: highВажно исправить в ближайшее времяtech-debtMaintainability / refactor / architecture debt

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions