Хотя я знаю, что тесты должны работать надежно, мой опыт говорит мне: это не всегда может быть выполнено с разумными усилиями (и не обязательно; см. мой расчет ниже).
В частности, если тесты вводятся для уже существующего веб-приложения, которое необходимо постоянно улучшать, может быть сложно создать надежные E2E-тесты. Но, напротив, это довольно просто и, кроме того, достаточно для создания тестов, которые время от времени падают (при условии, что они надежно терпят неудачу, когда дело доходит до ожиданий/утверждений).
Если вы используете Protractor для тестирования E2E, возможно, вы тоже сталкивались с этим.
Статистика говорит мне, что тест, который, как известно, имеет 25-процентный шанс сбоя, будет иметь 6,25-процентный шанс сбоя дважды при повторном запуске, 1,56-процентный шанс сбоя три раза при трехкратном запуске и 0,39-процентный шанс сбоя. четыре раза при четырехкратном запуске и 0,10% шанс вылететь пять раз при пятикратном запуске (и так далее).
Следовательно, запуск набора таких тестов до тех пор, пока каждый из них не завершится без ошибок, не имеет большого значения.
Мое требование состоит в том, чтобы запускать сценарий Cucumber.js снова и снова до тех пор, пока он не будет успешным в первый раз во время одного запуска функции, а затем принять результат теста "пройдено/не пройдено" при успешном запуске.
Я попытался создать хук After
, который повторно запускает сценарий, но не нашел способа вызвать сценарий из хука. Кроме того, я не нашел способа отказаться от запуска сценария сбоя.
Подскажите, пожалуйста, какие у меня есть варианты. Я использую Grunt, Protractor и Cucumber.
Поскольку наш тестовый набор огромен, все еще быстро растет и выполняется с помощью автоматизированного процесса сборки, мне нужен способ запускать ненадежные тесты настолько надежно, насколько это возможно.