20d4682e21
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>
41 lines
1.5 KiB
XML
41 lines
1.5 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd"
|
|
bootstrap="vendor/autoload.php"
|
|
colors="true"
|
|
>
|
|
<testsuites>
|
|
<testsuite name="Unit">
|
|
<directory>tests/Unit</directory>
|
|
</testsuite>
|
|
<testsuite name="Feature">
|
|
<directory>tests/Feature</directory>
|
|
</testsuite>
|
|
<testsuite name="Browser">
|
|
<directory>tests/Browser</directory>
|
|
</testsuite>
|
|
</testsuites>
|
|
<source>
|
|
<include>
|
|
<directory>app</directory>
|
|
</include>
|
|
</source>
|
|
<php>
|
|
<env name="APP_ENV" value="testing"/>
|
|
<env name="APP_MAINTENANCE_DRIVER" value="file"/>
|
|
<env name="BCRYPT_ROUNDS" value="4"/>
|
|
<env name="BROADCAST_CONNECTION" value="null"/>
|
|
<env name="CACHE_STORE" value="array"/>
|
|
<env name="DB_CONNECTION" value="pgsql"/>
|
|
<env name="DB_DATABASE" value="liderra_testing"/>
|
|
<env name="DB_URL" value=""/>
|
|
<env name="MAIL_MAILER" value="array"/>
|
|
<env name="AUTH_PASSWORD_RESET_TOKEN_TABLE" value="password_resets" force="true"/>
|
|
<env name="QUEUE_CONNECTION" value="sync"/>
|
|
<env name="SESSION_DRIVER" value="array"/>
|
|
<env name="PULSE_ENABLED" value="false"/>
|
|
<env name="TELESCOPE_ENABLED" value="false"/>
|
|
<env name="NIGHTWATCH_ENABLED" value="false"/>
|
|
</php>
|
|
</phpunit>
|