Привод контракта `run.mjs test` к общей практике (pytest/jest/playwright):
- позиционные аргументы = пути к тестам, можно несколько
(`test a.test.mjs b.test.mjs dir/`); discoverTests объединяет, дедуплицирует,
сортирует (порядок по числовым префиксам сохраняется);
- URL переехал из первого позиционного во флаг --url= (по умолчанию из
webtest.config.mjs) — раньше url-первым путал: второй путь уходил в page.goto()
и падал с криптовым 'Cannot navigate to invalid URL';
- fail-fast: несуществующий путь → понятная ошибка вместо падения goto;
аргумент, похожий на URL, подсказывает про --url=.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Guard-таймаут теста собирался через Promise.race([t.fn, setTimeout(reject)]),
но setTimeout после победы теста не очищался. На успешном пути раннер не зовёт
process.exit(), поэтому node не мог завершиться, пока сторож не догорит — до
`timeout` мс простоя после последнего теста (на стенде с timeout=60s это ~45с
зависания уже после закрытия браузера).
Оборачиваю гонку в try/finally с clearTimeout. Вердикт теста и таймаут-защита
не меняются: clearTimeout срабатывает только после завершения гонки (тест
добежал или сторож сработал), по уже сработавшему таймеру это no-op. Замер на
одиночном тесте: 64.5s → 18.9s wall-clock.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Команда `test` приведена к поведению тест-раннеров (jest/pytest/playwright):
человеческий отчёт со сводкой в последней строке идёт в stdout, а машинный
JSON/JUnit — опционально через `--report=-` (Unix-конвенция `-` = stdout),
при этом прогресс уезжает в stderr. Убран безусловный дамп JSON в stdout,
из-за которого `test … | tail` хоронил сводку под отчётом.
- test.mjs: writer выбирается по режиму (--report=- → stderr-прогресс);
развилка `-` в обеих ветках записи (json и junit), чтобы не плодить файл "-";
валидация: --report=- несовместимо с --format=allure (каталог, не поток).
- util.mjs: строка --report=- в справке.
- Документация (spec/guide/regress/README) приведена к фактическому
английскому выводу и описывает матрицу потоков stdout/stderr.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>