2015-07-20 63 views
3

我想知道如何将量角器测试作为脚本运行,而不是作为子进程或从任务运行程序(如grunt和gulp)运行。当我的酱排队申请通知我正在建造的测试跑步者时,我想要运行测试服。这样,我的测试不会与我的同事测试发生冲突。如何将量角器作为脚本运行,而不是作为子进程或使用任务运行器?

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

var protractor = require('protractor'); 

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

回答

2

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

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); 
}); 
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> 
    `); 
} 
2
const Launcher = require("protractor/built/launcher"); 
Launcher.init('path/to/conf'); 
相关问题