一个文件中的多个跑步者仅产生第一个的结果

时间:2018-12-07 08:23:54

标签: node.js automated-tests e2e-testing testcafe runner

我正在尝试使用TestCafe来自动化项目的初始设置。在设置过程中,必须花很长时间才能发出POST请求,然后才能继续设置。这是我的runner.js,它正在节点10中运行:

const longRunningPostRequest = require('./setup/seed-database');
const createTestCafe = require('testcafe');

const RUN_OPTIONS = {pageLoadTimeout: 120000, selectorTimeout: 15000};

const setupLicense = async () => {
  const testcafe = await createTestCafe('localhost', 1337, 1338, undefined, true);
  const runner = testcafe.createRunner();
  const failedCount = await runner
    .src(['fixtures/setup-license.js'])
    .browsers(['chrome -incognito'])
    .run(RUN_OPTIONS);
  await testcafe.close();
};

const setupData = async () => {
  const testcafe = await createTestCafe('localhost', 1337, 1338, undefined, true)
  const runner = testcafe.createRunner();
  await runner
    .src(['fixtures/setup-wizard.js'])
    .browsers(['chrome -incognito'])
    .run(RUN_OPTIONS);
  await testcafe.close();
};

// running them all in sequence
setupLicense()
  .then(() => longRunningPostRequest()) // long-running POST request. Typically takes around 100 seconds to complete
  .then(() => setupData())
  .catch(err => console.log('Error occured:', err));

当我运行应用程序node runner.js时,它们正在工作。但是,仅显示setup-license.js中的fixtures的结果,而第二个运行者fixtures/setup-wizard.js的fixtures没有显示任何输出(但是它们正在运行并且正在运行),但是这非常令人讨厌因为它失败了,错误消息也会被吞噬。我所做的解决方法是注释掉setupLicense固定装置的内容,以便显示setupData的输出。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

尝试使用最新的testcafe@0.23.3版本。该团队最近修复了一个可能导致此类问题的错误-当未指定显式报告程序时,TestCafe关闭了stdout输出流。这样可以防止从一个脚本文件开始在第二次和连续的测试会话中显示任何测试结果。

作为一种解决方法,您可以通过向设置代码中添加spec调用来显式启用.reporter('spec')报告程序,如下例所示:

gist.github.com/AndreyBelym/c9afd908d4b2891a62a4ba87623ec064