Cypress тесты не пройдены, потому что Chrome Renderer аварийно завершает работу в CI (используя дрон) - PullRequest
1 голос
/ 07 января 2020

Мы используем drone для нашего CI и запускаем Cypress внутри drone для тестирования нашего приложения (Angular 7).

Все тесты работают нормально на моей локальной машине, но в CI тесты не пройдены потому что Chrome Рендерер разбился. Около 50% ошибок, даже если они действительно не длинные или сложные (большинство из них всего около 5-10 строк).

Я знаю, что это известная проблема (https://github.com/cypress-io/cypress/issues/350), и провел довольно много времени, пытаясь найти различные исправления, которые были предложены онлайн. Я уже пробовал:

  • увеличение размера dev / shm
  • обновление до последних версий drone, drone-agent и cypress
  • уменьшение параметра numTestsKeptInMemory

Исправление чаще всего используется, настройка - ipc = host в настоящее время не работает с дроном (https://discourse.drone.io/t/does-drone-support-ipc-host-option/1049).

Я на самом деле немного сбит с толку, потому что в оригинальном билете явно указано When running headlessly on very long and memory intense applications we are seeing renderer crashes with Docker. Я вполне уверен, что наше приложение не может быть квалифицировано как very long или memory intense (страница занимает около 50-80 МБ, например, Chrome Диспетчер задач), поэтому, возможно, наша проблема на самом деле это что-то еще?

Может кто-нибудь дать еще несколько советов, если я что-то здесь упустил?

Ответы [ 2 ]

1 голос
/ 29 января 2020

Мы смогли исправить это, полностью отключив Chrome использование /dev/shm, добавив его в наш plugins/index.js -файл.

on('before:browser:launch', (browser = {}, args) => {
  if (browser.name === 'chrome') {
    args.push('--disable-dev-shm-usage')
    return args
  }

  return args
})

Источник: https://github.com/cypress-io/cypress/issues/350#issuecomment -574072211

0 голосов
/ 28 февраля 2020

Если в вашей среде CI запущен Cypress Test Runner и браузер в образе docker, вы можете указать аргумент --ipc=host для использования пространства имен IP C хост-системы.

Проверить спецификацию c подробности для вашей среды CI, чтобы узнать, как включить этот аргумент при запуске вашего изображения.

Это известная проблема, отслеживаемая в Cypress Github Issues в виде заявки # 350: https://github.com/cypress-io/cypress/issues/350


К сожалению, установка аргумента --ipc=host от Drone в настоящее время не поддерживается.

...