开发者问题收集

柏树测试偶尔失败

2020-10-06
1514

几天来,我们一直在调试失败的 Cypress 测试,但似乎无法缩小原因范围。测试在我们的 GitLab CICD 管道中运行。

我们在日志中看到的错误:

Uncaught (in promise): TypeError: Cannot convert undefined or null to object\nTypeError: Cannot convert undefined or null to object\n at Function.keys ()\n at MapSubscriber.project (http://localhost:49152/main.2e49092b1a3db7b9c078.js:8506:28)\n at MapSubscriber.push../node_modules/rxjs/_esm5/internal/operators/map.js.MapSubscriber._next ...

我们添加了一个 Cypress 插件,如果任何测试失败,则重新运行它们,并且它总是第二次通过。每次失败的测试并不相同,而是各不相同。失败似乎是因为页面由于上述错误而无法呈现,但不清楚该错误来自何处。

我们注意到测试在 Firefox 中通过,因此我们只会在基于无头 chrome/chromium 的浏览器中看到此错误。

有什么想法可以让我们查看以找出问题所在?

2个回答

在为我们的前端向 Cypress 添加日志记录包后,我们能够获得更有用的错误。

error (network): Failed to load resource: net::ERR_INSUFFICIENT_RESOURCES

我们的问题原来是 Cypress 的一个未解决的问题,Chrome 占用了太多内存并导致 Docker 崩溃。

问题和解决方案发布在此处: https://github.com/cypress-io/cypress/issues/7457

Follow https://docs.cypress.io/guides/guides/continuous-integration.html#In-Docker and then setting --ipc=host on our docker containers [will] stop the issue.

Justin
2020-10-07

经过一番挖掘,向 chrome 添加 --disable-dev-shm-usage 标志解决了这个问题。您可以使用 --ipc=host ,但不使用它隔离效果会更好。

我在 Docker 中遇到了 Karma 和 Chrome >= 90 的相同问题。

HugoPoi
2022-01-19