@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: 'ваша строка'
}