Используйте плагин @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
представляет собой либо объект вида:
{
name: 'Понятное сообщение для пользователя, которое будет выводиться в консоль',
pattern: 'Шаблон ошибки, который может задаваться в том числе как строка для регулярного выражения'
}
либо строку, которая будет проинтерпретирована плагином как объект вида:
{
name: 'ваша строка',
pattern: 'ваша строка'
}
Последний вариант удобен, если формат для консоли и шаблон ошибки полностью совпадают.
Все параметры плагина, которые можно определить в конфиге, можно также передать в виде опций командной строки или через переменные окружения во время запуска testplane
. Используйте префикс --retry-progressive-
для опций командной строки и testplane_retry_progressive_
— для переменных окружения. Например:
npx testplane --retry-progressive-extra-retry 3
testplane_retry_progressive_extra_retry=3 npx testplane