如何将量角器作为脚本运行而不是作为子进程或使用任务运行器?

时间:2015-07-20 14:08:20

标签: node.js protractor

我想知道我如何能够将量角器测试作为一个脚本运行,而不是作为子进程或者像grunt和gulp这样的任务运行器。当我的酱汁排队申请通知我正在建设的测试运行员时,我想要运行测试服。这样,我的测试与我的同事测试没有冲突。

我正在使用节点,所以有这样的东西吗?

var protractor = require('protractor');

protractor.run('path/to/conf', suites, callback);
protractor.on('message', callback)
protractor.on('error', callback)
protractor.end(callback);

3 个答案:

答案 0 :(得分:4)

这是不可能的。我尝试这样做,但通过阅读量角器源代码,没有办法执行此操作。

https://github.com/angular/protractor/blob/master/lib/launcher.js#L107

使用您的配置作为json对象调用此函数,但正如您所看到的那样,它会调用一堆process.exit,根据这一点,如果不至少分析您的进程,将无法运行它。

我以编程方式调用量角器的解决方案如下:

var npm = require('npm');
var childProcess = require('child_process');
var address = ...some address object
var args = ['--baseUrl', url.format(address)];

npm.load({}, function() {
  var child = childProcess
  .fork(path.join(npm.root, 'protractor/lib/cli'), args)
  .on('close', function(errorCode) {
    console.log('error code: ', errorCode);
  });
  process.on('SIGINT', child.kill);
});

答案 1 :(得分:3)

const Launcher = require("protractor/built/launcher");
Launcher.init('path/to/conf');

答案 2 :(得分:0)

const protractorFlake = require('protractor-flake'),
    baseUrl = process.argv[2],
    maxAttempts = process.argv[3];

if (process.argv.length > 2) {
    console.info('Launching protractor with baseUrl: %s, maxAttempts: %d', baseUrl, maxAttempts);

    protractorFlake({
        maxAttempts: maxAttempts,
        parser: 'multi',
        protractorArgs: [
        './protractor.conf.js',
        '--baseUrl',
        baseUrl
    ]
    }, function (status, output) {
        process.exit(status);
});
} else {
    console.error(`
        Usage: protractor-wrapper <baseUrl>
    `);
}