Как проверить стабильность теста
Проблема
Существует масса причин, из-за которых тесты могут падать:
- проблемы с инфраструктурой — недоступность браузеров, некорректная работа сети, протухание доступов и т. п.
- проблемы с внешними сервисами, к которым обращается тест —
- гонки в самом тесте, когда какой-либо элемент не успел прорисоваться, а контрольное время его ожидания истекло;
- внезапно возникающие попапы при выполнении теста, которые перекрывают нужный элемент, вносят дифф в отснятый скриншот, не дают кликнуть по нужному элементу;
- и т. д. и т. п.
Часто такие падения не воспроизводятся с первого раза. Поэтому, чтобы убедиться, что свеженаписанный тест стабилен, нужно запустить его много раз. Но есть одна проблема: если вы запустите свой тест в testplane as is, то после первого же успешного прогона testplane прекратит запускать ваш тест. Тест прошел — всё ОК. Но для проверки стабильности этого недостаточно. Может быть, тест прошел случайно, и если запустить его повторно, то он упадет. Хотелось бы запустить его не 1 раз, и не 2, а например, 20 раз и посмотреть сколько раз он успешно пройдет при 20 повторах. Или 30. Или... и т. д.
Решение: @testplane/test-repeater
Для решения данной проблемы был разработан плагин @testplane/test-repeater.
Плагин позволяет запустить один и тот же тест (или группу тестов) требуемое количество раз.
Плагин гарантирует, что тесты будут запущены столько раз, сколько вы задали, независимо от результатов их прогона в каждой попытке. Кроме того, плагин позволяет запускать тесты каждый раз в новой сессии браузера. Это исключает влияние деградации браузера или еще какие-либо побочные эффекты, которые могли бы возникнуть при повторных прогонах в одной и той же сессии браузера.
Подробнее о том, как добавить этот плагин в проект, настроить и использовать его, читайте в документации плагина.
Примеры использования
Ниже приведены примеры прогонов тестов, в которых их прогнали 21 раз (1 основной + 20 ретраев), чтобы проверить их на стабильность.
Пример сломанных тестов
Как видно из скриншота тесты были запущены 21 раз и ни разу не завершились успешно:
Пример стабильного теста
А здесь наоборот — все запуски прошли успешно:
Пример нестабильных тестов
На следующем скриншоте первый тест практически не рабочий — из 21 попытки только 1 раз тест прошел. А второй тест — достаточно стабильный, хотя 2 падения из 21 — это все равно не 100%-ная стабильность. И разработчик может попытаться разобраться, почему все-таки тест иногда падает.
Ключевые слова
- @testplane/test-repeater