感谢您对此进行研究!
我们正在运行一个相当全面的测试套件(一些测试的hunderds ),目的是确保我们的跟踪实现按预期工作。我们每天通过CI 4x执行此测试。几个星期以来,我们有随机的测试中止,不幸的是,这是非常难以跟踪和再现的。
当前的行为是什么?
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的代理。但是我们不知道如何修复这个问题--或者至少要确保不是整个测试套件都会被它中止。
如果测试中止,这就是堆栈跟踪。不幸的是,这意味着所有测试的执行都会中止,并且不仅影响单个测试,这使得整个套件对我们来说非常无用……
重现步骤
如果测试是在套件中执行而不是单独执行,似乎会有更多的中止-但即使在那里,也很难识别模式。
TestCafe版本
"testcafe":"^1.17.1",
Node.js版本
节点版本:'16.x‘
命令行参数
testcafe -config-file .testcaferc-dev.json测试
发布于 2021-11-29 08:15:42
该问题可能与HTTP/2请求有关。因此,您可以使用以下选项禁用它:disableHttp2。检查问题是否在此之后重现。
您还可以尝试增加超时,例如ajaxRequestTimeout和testExecutionTimeout。
如果这不起作用,请创建一个简单的项目,其中问题是可重现的,并在这里分享它。我们将在我们这边进行研究。
https://stackoverflow.com/questions/70125688
复制相似问题