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

我有一个小沙盒项目,我在过去几周一直在玩,以了解实现 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 来说相对较新的人来说并不那么明显。


小唯快跑啊
浏览 236回答 2
2回答

繁花不似锦

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

智慧大石

问题的原因在于您的自定义报告器。我删除了你的记者,现在它可以正常工作了。请尝试这种方法并重新检查您的记者。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript