testplane-retry-progressive
Обзор
Используйте плагин testplane-retry-progressive, чтобы дополнительно прогонять тесты, если ошибки, с которыми они упали соответствуют заданному набору шаблонов.
Для чего это может понадобиться?
Тесты могут падать не только из-за ошибок разработчика, гонок между скриптами, исполняющимися на веб-странице, но и по инфраструктурным причинам. Например, когда моргает сеть, вовремя не отдается браузер, временные проблемы с DNS и т. п.
См. примеры шаблонов для таких ошибок
- Browser request was cancelled
- A window size operation failed because the window is not currently available
- chrome not reachable
- Tried to run command without establishing a connection
- No such driver
- no such window
- Session timed out or not found
- Reached error page
- getaddrinfo ENOTFOUND
- Browsing context has been discarded
- Cannot launch browser
- Failed to decode response from marionette
- session deleted because of page crash
- Couldn't connect to selenium server
Установка
npm install -D testplane-retry-progressive
Настройка
Необходимо подключить плагин в разделе plugins
конфига testplane
:
module.exports = {
plugins: {
"testplane-retry-progressive": {
enabled: true,
extraRetry: 7,
errorPatterns: [
"Parameter .* must be a string",
{
name: "Cannot read property of undefined",
pattern: "Cannot read property .* of undefined",
},
],
},
// другие плагины testplane...
},
// другие настройки testplane...
};
Расшифровка параметров конфигурации
Параметр | Тип | По умолчанию | Описание |
enabled | Boolean | true | Включить / отключить плагин. |
extraRetry | Number | 5 | Количество раз, которые нужно повторно прогнать тест, если он падает с ошибкой, подходящей под один из шаблонов errorPatterns. |
errorPatterns | Array | [ ] | Список шаблонов, под один из которых должна подойти ошибка, чтобы плагин запустил тест повторно. Подробнее см. ниже. |
errorPatterns
Каждый шаблон в массиве errorPatterns
представляет собой либо объект вида:
{
name: 'Понятное сообщение для пользователя, которое будет выводиться в консоль',
pattern: 'Шаблон ошибки, который может задаваться в том числе как строка для регулярного выражения'
}
либо строку, которая будет проинтерпретирована плагином как объект вида:
{
name: 'ваша строка',
pattern: 'ваша строка'
}
Последний вариант удобен, если формат для консоли и шаблон ошибки полностью совпадают.
Передача параметров через CLI
Все параметры плагина, которые можно определить в конфиге, можно также передать в виде опций командной строки или через переменные окружения во время запуска testplane. Используйте префикс --retry-progressive-
для опций командной строки и testplane_retry_progressive_
— для переменных окружения. Например:
npx testplane --retry-progressive-extra-retry 3 ...
testplane_retry_progressive_extra_retry=3 npx testplane ...