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