Commit Graph

2 Commits

Author SHA1 Message Date
Дмитрий 8a611eb054 feat(supplier): Plan 3 Task 9 — E2E mock-server skeleton (Linux CI completion pending)
Создан skeleton tests/Browser/SupplierIntegrationE2ETest.php с inline-комментариями
содержащими full mock-server impl (react/http + react/socket).

Skip pattern same as Browser/SmokeTest.php (Sprint 2 Phase A): ->skip() с
указанием на Linux CI requirement (ext-sockets + pest-plugin-browser).

Что покрыто другими тестами (не дублируем — see file header):
- Per-supplier_project routing (Plan 2 Task 6)
- SyncSupplierProjectsJob create/update flow (Plan 3 Task 6, 8 tests)
- Cleanup Phase A→B→C ordering (Plan 3 Task 7, 6 tests)
- Session refresh + retry (Plan 3 Task 5, 7 tests)
- PortalClient cookie/CSRF + retry (Plan 3 Task 4, 9 tests)

Linux CI completion (отдельная sprint после Б-1):
- composer require react/http react/socket --dev
- composer require pestphp/pest-plugin-browser --dev (если не установлен)
- Uncomment test body (lines 41-77 в файле)
- Run: php artisan test --testsuite=Browser

+1 test (skipped on Windows + Linux until completion).
2026-05-11 06:46:13 +03:00
Дмитрий 20d4682e21 feat(backend): Sprint 2 Phase A — Pest 4 browser scaffold + mutation + lazy-loading + Larastan cache
Sprint 2 Phase A (modernization). Закрытие audit O-stack-01/02/03 + O-perf-07:

- O-stack-01: Pest 4 browser-tests scaffold. testsuite Browser в phpunit.xml,
  Pest.php extend(...)->in('Browser'), tests/Browser/SmokeTest.php
  (login-flow + deal-create-flow). На Windows native PHP плагин
  pest-plugin-browser требует ext-sockets (отсутствует в стандартной
  сборке) и при автозагрузке вызывает socket_create_listen() ДО старта
  тестов, что ломает весь Pest. Поэтому плагин НЕ в require-dev,
  тесты помечены ->skip(...) с инструкцией активации на Linux CI.
  Скелет тестов в комментариях — на CI достаточно
  composer require pestphp/pest-plugin-browser --dev + npx playwright
  install + раскомментировать тела.
- O-stack-02: infection/infection ^0.32.7 в require-dev + app/infection.json
  (minMsi=50, source: Http/Models/Services). composer mutation script.
  Запуск отдельной задачей в CI (медленный). allow-plugins для
  infection/extension-installer.
- O-stack-03: Laravel 13 string-based lazy-loading в routes/web.php —
  убран блок use App\Http\Controllers\Api\* (16 импортов), все
  ссылки заменены на строки 'App\Http\...\X@method'. Контроллеры
  не загружаются автозагрузчиком при boot route'ов; класс резолвится
  только при матче маршрута. Использован строковый синтаксис, а не
  FQN-class — Pint default preset (fully_qualified_strict_types fixer)
  сворачивает FQN-class обратно в use, на строки не действует.
- O-perf-07: Larastan result cache через tmpDir: .phpstan-cache в
  phpstan.neon (cache-dir не дублируется флагом — phpstan не принимает
  оба источника). lefthook job 6 (larastan) использует этот же
  tmpDir автоматически. Ускорение инкрементальных pre-commit прогонов:
  на правке одного файла — переанализ только зависящих, не всего
  графа классов. .phpstan-cache в .gitignore.

Pest: 416/416 PASS + 2 skipped (browser smoke pending Linux CI).
Larastan: 0 errors above baseline.
Infection: vendor/bin/infection --version → 0.32.7.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 19:18:38 +03:00