mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-21 20:21:02 +03:00
Конфиг и хуки резолвились строго от каталога первого позиционного пути, поэтому запуск подкаталога сьюта был невозможен: `test tests/app/00-smoke/` падал с «No URL provided and no webtest.config.mjs found» — хотя спека прямо обещает запуск подкаталога («Фильтр по пути с CLI»). Опаснее отказа по URL были два молчаливых следствия: при `--url=` прогон подкаталога терял `_hooks.mjs` и ехал по неподготовленному стенду без единого предупреждения, а `_allure/` не находился. Плюс `file:` в отчёте считался от переданного пути, из-за чего один и тот же тест получал разный ID в зависимости от способа запуска и рвал историю Allure/JUnit. Введён корень сьюта: подъём от каталога пути до первого `webtest.config.mjs` ИЛИ `_hooks.mjs` (конфиг необязателен — сьют только с хуками иначе снова терял бы подготовку), с ограничением подъёма каталогом `.git`/`.v8-project.json`, а при их отсутствии — cwd. Граница ничего не выбирает, только останавливает, так что ложная граница даёт «корень не найден», а не чужой корень. От найденного корня берутся все пять ролей: конфиг, хуки, каталог отчёта, пути в отчёте, `_allure/`. Попутно: пути из разных сьютов в одном прогоне теперь отвергаются (раньше молча выигрывал первый путь, и сьют B ехал по подготовке сьюта A); найденный корень печатается в шапке; отсутствие корня — предупреждение в stderr; диагностика говорит про корень сьюта, а не только про URL. Проверено: 12/12 офлайн-кейсов резолвера; полный регресс 29/29 до и после — `file`/`name`/`status` идентичны; `_suite-root/nested/` (сценарий, который падал) проходит с подхваченными конфигом и хуками; `_hang/` 6/6. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>