Тесты зелёные локально, но периодически падают на CI
Набор юнит-тестов стабильно проходит на машине разработчика, где его запускают по одному файлу. На CI тот же набор запускается целиком и параллельно и падает примерно в каждом третьем запуске, каждый раз на разных тестах. Версии пакетов на CI и локально совпадают, они ставятся строго по lock-файлу.
Что вероятнее всего происходит?
- CI всегда медленнее машины разработчика, поэтому асинхронные тесты обязаны иногда падать по таймауту — это свойство любой сборочной среды и лечится только повторным запуском.
- Падения на CI означают дефект самого раннера или образа контейнера: код тестов на воспроизводимость результата не влияет.
- Тесты делят общее состояние и работают только в привычном порядке, а параллельный прогон этот порядок меняет.
- Тесты в принципе нельзя запускать параллельно: раннер распределяет файлы по процессам случайно, поэтому стабильный результат недостижим.
