测试执行因源自 Hammerhead 的请求管道的问题而随机中止(Testcafe e2e 测试)
Posted
技术标签:
【中文标题】测试执行因源自 Hammerhead 的请求管道的问题而随机中止(Testcafe e2e 测试)【英文标题】:Test execution randomly aborted by an issue originated in the request-pipeline of Hammerhead (Testcafe e2e tests) 【发布时间】:2022-01-04 14:10:17 【问题描述】:感谢您对此进行调查!
我们正在运行一个非常全面的测试套件(数百个测试),目的是确保我们的跟踪实现按预期工作。我们每天通过 CI 执行 4 次测试。几周以来,我们出现了随机测试中止,不幸的是,这些中止极难追踪和重现。
当前的行为是什么?
Errors: Unhandled promise rejection:
Error [ERR_HTTP2_INVALID_SESSION]: The session has been destroyed
at new NodeError (node:internal/errors:371:5)
at ClientHttp2Session.request (node:internal/http2/core:1702:13)
at DestinationRequest._sendRealThroughHttp2 (/home/ec2-user/actions-runner/_work/ds_cerberus/ds_cerberus/node_modules/testcafe-hammerhead/lib/request-pipeline/destination-request/index.js:51:32)
at DestinationRequest._send (/home/ec2-user/actions-runner/_work/ds_cerberus/ds_cerberus/node_modules/testcafe-hammerhead/lib/request-pipeline/destination-request/index.js:110:18)
at runMicrotasks (:null:null)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
对我们来说,它看起来像是作为 testcafe 代理的hammerhead-lib 中的一个竞速条件。但我们不知道如何解决这个问题 - 或者至少确保不是整个测试套件都被它中止。
如果测试被中止,这是堆栈跟踪。不幸的是,这意味着所有测试的执行都被中止,并且不仅影响单个测试,这使得整个套件对我们来说毫无用处......
复制步骤
如果测试是在套件中执行而不是单独执行,似乎会有更多的中止 - 但即使在那里也很难识别模式。
TestCafe 版本
"testcafe": "^1.17.1",
Node.js 版本
节点版本:'16.x'
命令行参数
testcafe --config-file .testcaferc-dev.json 测试
【问题讨论】:
【参考方案1】:该问题可能与 HTTP/2 请求有关。因此,您可以使用以下选项禁用它:disableHttp2。之后检查问题是否重现。
您也可以尝试增加超时时间,例如ajaxRequestTimeout 和 testExecutionTimeout。
如果这没有帮助,请创建一个可重现问题的简单项目并在此处分享。我们将在我们这边进行研究。
【讨论】:
非常感谢 - 我们会尽力让您知道!以上是关于测试执行因源自 Hammerhead 的请求管道的问题而随机中止(Testcafe e2e 测试)的主要内容,如果未能解决你的问题,请参考以下文章
.gitlab-ci.yml 管道中的 Plotly-Dash 测试因 NameError 失败:未定义名称“DashComposite”
在本地运行 GitLab 和 GitLab-Runner docker 实例时,管道中的构建步骤因连接被拒绝错误而失败