将命令行参数传递给nightwatch.runner

时间:2017-05-06 07:26:40

标签: nightwatch.js

我有一个测试设置,接受预定义选项的动态值(例如: - foo =“bar”, - foo =“car”等),从命令行运行时效果很好。

这有效:

./node_modules/nightwatch/bin/nightwatch ./tests/test.js --env "production" --foo="bar"

但是,我想从节点应用程序内部调用测试,但似乎无法将额外的参数传递到我的测试中。我的测试正确初始化,但随后失败,因为我无法得到任何额外的参数。

try {
    const nightwatch = require('nightwatch');

    const argv = {
        config: 'nightwatch.json',
        test: 'test.js',
        env: 'default',
        foo: 'bar',
    };

    const done = function() {
        console.log('nightwatch complete');
    }; // your callback function

    const settings = {};

    nightwatch.runner(argv, done, settings);

} catch (error) {
    console.log('Exception:' + error.message);
}

似乎绝对没有nightwatch.runner或nightwatch.cli的文档,所以您可以提供的任何帮助都将非常感谢。

1 个答案:

答案 0 :(得分:1)

需要花很多时间才能看到设置在哪里,但最后我尝试使用设置对象并意识到我可以像这样覆盖全局参数:

var settings = {
    globals: {
        foo: 'one',
        bar: 'two'
    }
};

这可能不是设置对象的预期功能,但它对我有用。

try {
    const nightwatch = require('nightwatch');

    const argv = {
        config: 'nightwatch.json',
        test: 'test.js',
        env: 'default',
        foo: 'bar',
    };

    const done = function() {
        console.log('nightwatch complete');
    }; // your callback function

    var settings = {
        globals: {
            foo: 'one',
            bar: 'two'
        }
    };

    nightwatch.runner(argv, done, settings);

} catch (error) {
    console.log('Exception:' + error.message);
}

如果有人对此感兴趣,我会在github上发布一个非常简单的版本。