2015-07-20 58 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'); 
相關問題