retry-limiter
Обзор
Используйте плагин retry-limiter, чтобы ограничивать количество ретраев упавших тестов, а также время, в течение которого ретраи разрешены.
Используйте данный плагин при прогоне тестов в CI. — Так как в CI, как правило, прогоняются либо все тесты проекта, либо их значительная часть.
Использовать плагин retry-limiter при локальных запусках отдельных тестов чаще всего нецелесообразно, ввиду их малого количества и, соответственно, отсутствия значимого эффекта от экономии «железа» или времени на прогон тестов.
Ретраи упавших тестов — один из способов борьбы с нестабильными тестами. Однако, бывают случаи, когда тесты падают массово из-за проблем с инфраструктурой или из-за того, что код проекта был сломан (например, в пулл-реквесте). В таких случаях ретраи только зря тратят ресурсы серверов, на которых прогоняются тесты, и время разработчика, заставляя разработчика ждать окончания прогона тестов, которые заведомо упадут.
Чтобы избежать подобных сценариев, плагин retry-limiter
позволяет:
- зад ать максимальную долю ретраев от общего количества тестов;
- ограничить время, в течение которого ретраи могут использоваться;
- снизить максимальное количество ретраев для всех тестов, если хотя бы один из тестов упадет, несмотря на все ретраи.
Например, если в проекте запускаются 1000 тестов и для параметра limit
в конфиге плагина установлено значение 0.3, то при падении тестов будет максимально разрешено 300 ретраев.
Если в конфиге плагина ещё установлено значение 600 секунд (10 минут) для параметра timeLimit
, то независимо от того, сколько раз ещё можно ретраить упавшие тесты, плагин отключит механизм ретраев через 10 минут после начала прогона тестов. Последнее защищает от нерациональной траты ресурсов «железа» на слишком долгие прогоны тестов.
Если testplane запущена с опцией --retry
, например, со значением 7, и при этом в конфиге плагина retry-limiter
параметр setRetriesOnTestFail
установлен в значение 4, то это означает следующее: в случае падения хотя бы одного теста в любом из браузеров после 7 ретраев, плагин посчитает, что возникла какая-то си стемная проблема и нужно снизить максимально разрешенное число ретраев до значения, заданного в параметре setRetriesOnTestFail
, то есть до 4. Это также позволяет защититься от нерационального расхода ресурсов на прогон тестов в случае системных проблем.
Если вы столкнулись в своем проекте с ситуацией, когда механизм ретраев начинает отключаться из-за превышения timeLimit, то не рекомендуется бездумно увеличивать это время. Стоит разобраться, почему прогон тестов начал выполняться слишком долго, а не «заливать железом» реальную проблему со стабильностью прогонов тестов.