为了账号安全,请及时绑定邮箱和手机立即绑定

TestCafe Runner.run(runOptions) 从不返回,浏览器挂起

TestCafe Runner.run(runOptions) 从不返回,浏览器挂起

小唯快跑啊 2021-10-14 16:01:56
我有一个小沙盒项目,我在过去几周一直在玩,以了解实现 TestCafe runner 的来龙去脉。除了一个问题,我已经设法解决了所有问题,此时我已经尝试了所有我能想到的方法。但我的问题仍然存在。我玩弄了我的 argv.json 文件。我玩弄了我的 CICDtestBranches.json 文件。我玩弄了我的 package.json 文件。我已经在多台机器上测试了有问题的同一个分支。我已经用多个浏览器(Firefox 和 Chrome)进行了测试——两者都产生了同样的问题。我已经尝试重新排列代码,见下文我尝试在夹具中添加多个测试,并为每个测试添加了一个页面导航。我试图删除处理视频日志和并发(并行执行)等不相关选项的代码我还与办公室周围一些做过类似项目的同事进行了交谈,并询问他们如何解决问题。我尝试了他们的建议,甚至根据他们的尝试重新安排了事情,但仍然没有快乐。我已经多次阅读有关如何实现测试运行器的 TestCafe 文档,但仍然无法找到有关如何解决浏览器在测试/夹具结束时未关闭的问题的任何具体信息/脚本运行。我确实发现了一些描述类似行为的错误,但所有这些错误都已修复,其余错误特定于 Firefox 或 Safari。就我而言,问题出在 Chrome 和 Firefox 上。我正在运行 TestCafe 1.4.2。我不想向 TestCafe 提交错误,除非它确实是一个已确认的错误,并且没有其他办法可以解决它。所以我知道其他人也有同样的问题,因为我的同事说他在实施时遇到了同样的问题。由于我知道此时我别无选择,因此我在此处发布问题,希望有人能找到解决方案。感谢您抽出时间来查看我的问题。执行以下代码时,返回returnData后;执行,.then 语句永远不会执行,因此 TestCafe 命令和浏览器窗口永远不会终止。仅供参考下面的代码是纯实施的NodeJS CommonJS的不ES6,因为这是启动TestCafe(app.js)的代码,而不是脚本代码。    ...**Boiler Plate testcafe.createRunner() Code**...    console.log('Starting test');    var returnData = tcRunner.run(runOptions);    console.log('Done running tests');    return returnData;}).then(failed => {     console.log(`Test finished with ${failed} failures`);     exitCode = failed;     if (argv.upload) return upload(jsonReporterName);     else return 0;     testcafe.close();     process.exit(exitCode);}).then(() => {     console.log('Killing TestCafe');     testcafe.close();     process.exit(exitCode);});我试图交换两个最终的 .then 语句,以尝试查看在另一个之前是否会导致它关闭。我复制了 testcafe.close() 和 process.exit() 并将它们放在 then-failed 块中的 if-else 语句之后,尽管我知道它们可能不应该因为之前的 if-else 返回语句而被调用那。我已经尝试在 if-else 返回之前移动那些 close 和 exit 语句,只是为了看看是否可以解决它。此时浏览器仍会旋转,命令行仍处于忙碌状态。您可以从上面的控制台输出中看到“Done running tests”控制台日志已经输出,并且由于“Got to the end of the test1,...”控制台日志也已执行,因此应该完成测试/夹具,作为 test.after(...) 的一部分运行。所以接下来要执行的事情应该是在 app.js 中使用 .then(()) 调用......但事实并非如此。是什么赋予了?有任何想法吗?我正在寻找可以解决这个问题的具体方法,不仅是为了我可以解决它,而且是为了让其他人在未来不会遇到同样的陷阱。一定有一些我遗漏的魔法酱对其他人来说可能很明显,但对我或其他对 JavaScript、NodeJS、ES6 和 TestCafe 来说相对较新的人来说并不那么明显。
查看完整描述

2 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

出现问题是因为您为该runner.src()方法指定了错误的值。

//img1.sycdn.imooc.com//6167e4300001259908600402.jpg


查看完整回答
反对 回复 2021-10-14
?
智慧大石

TA贡献1946条经验 获得超3个赞

问题的原因在于您的自定义报告器。我删除了你的记者,现在它可以正常工作了。请尝试这种方法并重新检查您的记者。


查看完整回答
反对 回复 2021-10-14
  • 2 回答
  • 0 关注
  • 235 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信