Перейти к основному содержимому

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...
};

Расшифровка параметров конфигурации

ПараметрТипПо умолчаниюОписание
enabledBooleantrueВключить / отключить плагин.
extraRetryNumber5Количество раз, которые нужно повторно прогнать тест, если он падает с ошибкой, подходящей под один из шаблонов errorPatterns.
errorPatternsArray[ ]Список шаблонов, под один из которых должна подойти ошибка, чтобы плагин запустил тест повторно. Подробнее см. ниже.

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 ...