TestCafe 与 Cucumber 集成 - github 项目中的测试用例超时

TestCafe integration with cucumber - test cases in github project time out

我一直在试验 javascript 测试自动化框架,其中之一是 testCafe。我已经能够为我的应用程序设置一个简单的 TestCafe 项目和 运行 一些测试用例。但是,现在,要求是内置某种 BDD 支持。我在 GitHub 上查找了一些 testCafe-cucumber 集成项目,但我找不到 运行。这是我尝试过的一些:-

1) https://github.com/rquellh/testcafe-cucumber - 我克隆了回购协议, - 是否安装了 npm, - 运行 使用 "npm test" 的测试用例, - 空白浏览器启动但测试没有启动 运行。我在 VS 代码控制台中看到此错误:

× Before # features\support\hooks.js:46
           Error: function timed out, ensure the promise resolves within 20000 milliseconds
               at Timeout._onTimeout (C:\Users\Mo\Desktop\TestCafe\github\testCafeBDD\testcafe-cucumber\node_modules\cucumber\src\user_code_runner.js:61:18)
               at ontimeout (timers.js:482:11)
               at tryOnTimeout (timers.js:317:5)
               at Timer.listOnTimeout (timers.js:277:5)



× After # features\support\hooks.js:60
       ReferenceError: testController is not defined

然后我尝试了另一个 gitHub 项目,即这个:https://github.com/kiwigrid/gherkin-testcafe

自述文件中的 运行 命令对我不起作用,它甚至无法识别 "gherkin-testcafe"。

当我 运行 我的 TestCafe 测试用例没有黄瓜时,我的 package.json

中有这一行
"scripts": {
    "test": "testcafe chrome Tests/ -e --proxy https.proxy.mycompany.com:8000"
  },

提到代理是因为我在代理后面,没有这个浏览器启动但不会 运行 任何测试用例。我在 testCafe 站点

上找到了此修复程序

我猜(还不确定)这也可能是黄瓜集成的问题。 None 这些框架可以正常工作,因为它们没有在任何地方设置代理。有人能指出我正确的方向吗?如果需要设置代理,那么它需要在框架中的哪个位置设置 - 举个例子会有帮助吗?

TestCafe/Cucumber 集成依赖于以编程方式启动 TestCafe runner

在 repo 中,搜索此序列:

const runner = tc.createRunner();
            return runner
                .src('./test.js')
                .screenshots('reports/screenshots/', true)
                .browsers(browser)
                .run()
                .catch(function(error) {
                    console.error(error);
                });

或搜索此序列:

await runner
      .browsers(browsers)
      .specs(specs)
      .steps(steps)
      .concurrency(concurrency)
      .startApp(app, appInitDelay)
      .tags(tags)
      .run(...)

useProxy 方法链接到 runner 对象(在 run() 方法之前执行):

const runner = tc.createRunner();
            return runner
                .src('./test.js')
                .screenshots('reports/screenshots/', true)
                .browsers(browser)
                .useProxy('username:password@proxy.mycorp.com')
                .run()
                .catch(function(error) {
                    console.error(error);
                });