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

Passing command line arguments to nightwatch.runner

我有一个测试设置,它接受预定义选项的动态值(例如:--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 的文档,因此非常感谢您提供的任何帮助。

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

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 上发布了一个非常简单的版本。