Тесты Cypress периодически завершаются с ошибкой

#angular #gitlab #cypress

#angular #gitlab #cypress

Вопрос:

Мы уже несколько дней отлаживаем неудачные тесты cypress и, похоже, не можем сузить причину. Тесты выполняются в нашем конвейере CICD GitLab.

Ошибка, которую мы видим в журналах:

Неперехваченный (в обещании): ошибка типа: не удается преобразовать undefined или null в objectnTypeError: не удается преобразовать undefined или null в objectn в функции.keys ()n в MapSubscriber.project (http://localhost:49152/main.2e49092b1a3db7b9c078.js:8506:28 )n в MapSubscriber.push../node_modules/rxjs/_esm5/internal/operators/map.js.MapSubscriber._next …

Мы добавили плагин cypress для повторного запуска любого теста в случае сбоя, и он всегда проходит во второй раз. Это не один и тот же тест, который терпит неудачу каждый раз, он меняется. Сбой, похоже, происходит из-за того, что страница не отображается из-за ошибки, указанной выше, но неясно, из-за чего эта ошибка.

Мы заметили, что тесты проходят в Firefox, поэтому мы видим эту ошибку только в безголовых браузерах на базе Chrome / chromium.

Есть идеи, на что мы могли бы обратить внимание, чтобы выяснить, что происходит не так?

Комментарии:

1. Звучит как проблема с синхронизацией, а также возможный промах в неопределенном parm. Шаг 1) ничего не делайте с этими тестами, пока не будет выполнена проверка проверки входных параметров. Шаг 2) Используйте собственные процедуры ожидания Cypress, чтобы убедиться, что содержимое есть. Я написал серию из 14 частей о Cypress, которая может помочь dev.to/jwp/angular-and-cypress-in-20-minutes-21be

2. Я также подумал, что это может быть состояние гонки, но оказалось, что это проблема с памятью в Chrome в Docker. См. Ответ.

Ответ №1:

Мы смогли получить более полезную ошибку после добавления пакета ведения журнала в Cypress для нашего интерфейса.

ошибка (сеть): не удалось загрузить ресурс: net::ERR_INSUFFICIENT_RESOURCES

Наша проблема оказывается открытой проблемой с Cypress, где Chrome потребляет слишком много памяти и приводит к сбою Docker.

Проблема и решение размещены здесь: https://github.com/cypress-io/cypress/issues/7457

Следуйте https://docs.cypress.io/guides/guides/continuous-integration.html#In-Docker и затем установка —ipc=host в наших контейнерах docker [остановит проблему.

Ответ №2:

Немного покопавшись, добавление --disable-dev-shm-usage флага в chrome решает проблему для меня. Вы можете использовать --ipc=host , но изоляция лучше без нее.

Я столкнулся с той же проблемой с Karma и Chrome> = 90 в Docker.