testcafe runner 允许命令行值

testcafe runner to allow command line values

我有一个这样定义的测试咖啡馆运行程序

  const createTestCafe = require('testcafe');
  const glob = require('glob');

  let runner = null;
  let testcafe = null;

  const getTests = suite => {
        return new Promise(resolve => {
       glob(suite, (er, files) => resolve(files));
       });
   };

 const runTest = suite => {
    createTestCafe()
    .then(tc => {
        testcafe = tc;
        runner = testcafe.createRunner();
    })
    .then(() => {
        return getTests(suite);
    })
    .then(testFiles => {
        runner
            .src(testFiles)
            .browsers('chrome')
            .run()
            .then(failedCount => {
                console.log(failedCount);
                testcafe.close();
            });
    });
}

const suites = {
    suite1: 'src/tests/1.spec.ts',
        'src/tests/2.spec.ts, 
    suite2: 'src/tests/3.spec.ts',
 };

runTest(suites.suite1);

如何从命令行传递套件名称、浏览器名称等,即现在,套件 1 是硬编码的,但我想从命令行 select 套件名称,如

  node testCafeRunner --suite suite2 --browser firefox

我该怎么做?

此外,如果我不得不打扰 .testcaferc.jsonrunner,testcafe 会看两者吗?

您可以按如下方式传递 nodejs 参数:

node testCafeRunner.js --suite=suite2 --browser=firefox

在testCafeRunner.js中:

var argv = require('minimist')(process.argv.slice(2));
 
const suite = argv.suite;
const browser = argv.browser;

当您从命令行和编程接口 运行 TestCafe 时指定的设置会覆盖配置文件 (.testcaferc.json) 中的设置。 TestCafe 在控制台中打印有关每个被覆盖的信息 属性。

另见:

How do I pass command line arguments to a Node.js program?

nodejs process.argv

https://www.npmjs.com/package/minimist

TestCafe Configuration File