Мы отлаживаем неудачные тесты на кипарис в течение нескольких дней и, похоже, не можем сузить причину. Тесты выполняются в нашем конвейере GitLab CICD.
Ошибка мы видим в логах:
Uncaught (в обещании): TypeError: Невозможно преобразовать undefined или null в объект \ nTypeError: Невозможно преобразовать undefined или null в объект \ n в Function.keys () \ n в MapSubscriber.project (https: // localhost: 49152 / main. 2e49092b1a3db7b9c078.js: 8506: 28) \ n в MapSubscriber.push ../ node_modules / rxjs / _esm5 / internal / operations / map.js.MapSubscriber._next …
Мы добавили плагин cypress, чтобы повторно запустить любой тест, если он не прошел, и он всегда проходит второй раз. Это не один и тот же тест, который каждый раз терпит неудачу, он меняется. Кажется, что сбой происходит из-за того, что страница не отображается из-за ошибки выше, но неясно, из-за чего эта ошибка.
Мы заметили, что тесты проходят в Firefox, поэтому мы видим эту ошибку только в браузерах без заголовка на основе хрома / хрома.
Есть идеи, на что мы могли бы взглянуть, чтобы узнать, что не так?
Похоже на проблему с синхронизацией, а также на возможный промах при неопределенном параметре. Шаг 1) ничего не делайте в этих тестах, пока не будет выполнена проверка правильности входных параметров. Шаг 2) Используйте собственные процедуры ожидания Cypress, чтобы убедиться, что контент есть. Я написал серию статей о Cypress, которые могут помочь разработчикам .to / jwp / angular-and-cypress-in-20-minutes-21be — person Justin schedule 07.10.2020
Я также подумал, что это может быть состояние гонки, но оказалось, что это проблема с памятью Chrome в Docker. Смотрите ответ. — person Justin schedule 07.10.2020
Мы смогли получить более полезную ошибку после добавления пакета регистрации в Cypress для нашего интерфейса.
Наша проблема оказывается открытой проблемой с Cypress, когда Chrome съедает слишком много памяти и вызывает сбой Docker.
Проблема и решение опубликованы здесь: https://github.com/cypress-io/cypress/issues/7457