我想知道我如何能够将量角器测试作为一个脚本运行,而不是作为子进程或者像grunt和gulp这样的任务运行器。当我的酱汁排队申请通知我正在建设的测试运行员时,我想要运行测试服。这样,我的测试与我的同事测试没有冲突。
我正在使用节点,所以有这样的东西吗?
var protractor = require('protractor');
protractor.run('path/to/conf', suites, callback);
protractor.on('message', callback)
protractor.on('error', callback)
protractor.end(callback);
答案 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>
`);
}