我有一个小沙盒项目,我在过去几周一直在玩,以了解实现 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 来说相对较新的人来说并不那么明显。
添加回答
举报
0/150
提交
取消