node --test снова ищет каталог: проверка discovery в Node.js 26.8.0. Обратимый тест, матрица наблюдений, контрольная ветка, критерии остановки и минимальный пакет для support без рабочих секретов.
Факт и граница вывода
Первичный источник фиксирует ровно одно изменение: 26.8.0 восстанавливает поиск тестов в каталоге для команды --test. Он не доказывает, что симптом есть у всех, что переход на Current ветку разрешён политикой проекта или что один видимый результат выявляет причину. Отдельная проблема здесь: команда с каталогом завершается без ожидаемого test file или находит лишний fixture за его границами. До теста запишите effective runtime, канал поддержки и ожидаемую границу. Discovery здесь оценивается как множество имён, а не как количество зелёных assertions: helper может загрузиться косвенно, но не должен стать отдельной test suite.
Минимальный обратимый стенд
Используйте только изолированный fixture: temp tree с двумя test files, одним helper и одним тестом в соседнем каталоге. Не подключайте боевую базу, реальные адреса, ключи, cookies, полные логи или личные файлы. Сначала получите baseline, затем измените один фактор, повторите сценарий и верните исходное состояние. Так A→B→A2 отделит эффект версии от кэша, порядка событий и случайности. Дайте каждому synthetic test уникальный marker и пишите его только в TAP вывод; не создавайте файлы-маркеры. Так dry run остаётся без побочного состояния.
Поля наблюдения и control
На каждом прогоне заполняйте одну строку матрицы: argument × discovered files × test count × helper executed × exit code. Не добавляйте поля «похоже на исправление»: нужны наблюдаемые классы, счётчики, hashes и коды ошибок. Контрольная ветка: явное перечисление двух ожидаемых test files в той же версии. Если control даёт тот же неожиданный результат, влияние изменения Node.js не доказано. Расхождение A и A2 означает, что стенд загрязнён и вывод нужно отложить. Порядок имён не считайте контрактом, если runner его не обещает. Сравнивайте отсортированные sets, а отдельно фиксируйте число suites, tests, skipped и failures.
Дерево решения по результату
Применяйте решение, записанное до прогона: directory и explicit set совпали — pass; файл потерян — discovery issue; соседний включён — граница argument неверна. Не смешивайте статусы «API документирован», «бинарник имеет нужную версию», «тест прошёл» и «миграция разрешена». Это разные границы. Один проход не превращайте в заключение о производительности, безопасности или совместимости всего проекта. Если explicit list находит оба файла, а directory argument только один, проверяйте naming pattern и границу каталога. Если не видит оба — это уже не discovery, а ошибка самих tests или loader.
Красные флаги и stop-line
Жёсткий критерий остановки для этой темы: не запускать discovery от корня репозитория, если fixtures имеют побочные эффекты. Также остановитесь, если тест неожиданно обращается в сеть, требует повышенных прав, меняет данные за пределами temp каталога, не возвращает A2 к baseline или зависит без timeout. Неизвестный результат не нужно заменять удобным объяснением или повторять на рабочей среде. Особый красный флаг — запуск helper или fixture как suite: он может не иметь assertions, но выполнять setup при импорте. В таком случае CI-команду не меняют.
Минимальный пакет для support
Для эскалации достаточно: runtime, относительное synthetic tree, список discovered files и итоговые счётчики. Добавьте точный канал Node.js, время теста, ожидаемый класс и фактический класс, а также прошёл ли A→B→A2. Не прикладывайте env, токены, ключи, полные пути с именем пользователя, содержимое рабочей базы или сырые сетевые данные. Цель пакета — доказать одну нарушенную границу и один следующий безопасный тест. К тикету по discovery приложите два списка: ожидаемые relative test paths и фактически обнаруженные. Это полезнее полного TAP log и не раскрывает тела tests.
Материал подготовлен редакцией VOne с помощью ИИ по открытым официальным и первичным источникам; факты, даты и ссылки перепроверены. Реальные пользовательские данные не использовались.
Источники и проверка
- Node.js 26.8 release notes проверено 2026-08-29
- Node.js 26.8 API documentation проверено 2026-08-29
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.