私は、分度器を使用してエンドツーエンドのテストを行う角度プロジェクトに取り組んでいます。gulp-protractor
これらのテストを実行するために使用します。すべてがローカルで正常に動作します。テスト対象のブラウザーとデバイスの数を増やしたいので、ブラウザースタックで動作するように変更を開始しましたprotractor.conf.js
。
テスト中の Web アプリケーションはローカルで実行されているので、それも使用browserstack-local
します。
ローカルで実行されている Web サイトをテストする 1 つのブラウザーでうまく機能する構成があります ( https://github.com/browserstack/protractor-browserstack/blob/master/conf/local.conf.jsから着想を得ています)。
現在、マルチブラウザで実行するように適応させようとしています( https://github.com/browserstack/protractor-browserstack/blob/master/conf/parallel.conf.jsに従ってください)。私はその構成で終わります:
exports.config = {
framework: 'jasmine2',
onPrepare: common.onPrepare,
// The address of a running selenium server.
seleniumAddress: 'http://hub-cloud.browserstack.com/wd/hub',
commonCapabilities: {
'browserstack.user': 'OUR_USER',
'browserstack.key': 'OUR_KEY',
name: 'Taylor Wimpey e2e tests',
'browserstack.debug': 'true',
'browserName': 'chrome',
'browserstack.local': true
},
multiCapabilities: [{
browserName: 'Chrome'
},{
browserName: 'Safari'
},{
browserName: 'Firefox'
},{
browserName: 'IE'
}],
baseUrl: 'http://localhost:3000',
// Spec patterns are relative to the current working directory when
// protractor is called.
specs: [paths.e2e + '/**/*.js'],
// Options to be passed to Jasmine-node.
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 30000
},
// Code to start browserstack local before start of test
beforeLaunch: function(){
console.log("Connecting local");
return new Promise(function(resolve, reject){
exports.bs_local_args = {
key: exports.config.commonCapabilities['browserstack.key'],
force: true
};
exports.bs_local = new browserstack.Local();
exports.bs_local.start(exports.bs_local_args, function(error) {
if (error) return reject(error);
console.log('Connected. Now testing...');
resolve();
});
});
},
// Code to stop browserstack local after end of test
onComplete: function(){
console.log('Stop browserstack local');
return new Promise(function(resolve){
exports.bs_local.stop(resolve);
});
}
};
// Code to support common capabilities
exports.config.multiCapabilities.forEach(function(caps){
for(var i in exports.config.commonCapabilities) {
caps[i] = caps[i] || exports.config.commonCapabilities[i];
}
});
テストが開始されて動作します (私のレポートはブラウザーごとに生成されます) が、停止することはありません。コンソールログの最後は次のとおりです。
...
[BS] Serving files from: .tmp/serve
[BS] Serving files from: src
Connecting local
Connected. Now testing...
[09:05:39] I/launcher - Running 4 instances of WebDriver
......F......FFF^C
そのため、それらを手動で強制終了する必要がありますが、これはオプションではありません。テストは継続的インテグレーション サーバーで実行されます。
ローカルで実行されているテスト対象の Web アプリケーションで browserstack を使用してマルチブラウザーで e2e テストを実行する方法を知っている人はいますか?
更新: browserstack のサポートにより、github リポジトリのローカルで実行されるマルチ機能の例が追加されました: https://github.com/browserstack/protractor-browserstack/blob/master/conf/parallel_local.conf.js
唯一の違いは、afterLaunch
代わりに使用することですonComplete
ありがとう