36

これを設定する方法に関する情報は見つかりませんが、かなり基本的な概念のように思えるので、そこに答えがあると確信しています.

構成でオブジェクトのbrowserNameプロパティを設定することにより、さまざまなブラウザーで分度器を実行する方法を知っています。capabilitiesそして、それはうまく機能しています。必要に応じて設定でき'chrome''firefox'期待どおりに動作します。しかし、(私が知る限り) 複数のブラウザーに対して単一のテスト スイートを実行する唯一の方法は、それぞれが異なる構成ファイルを作成し、browserName各ブラウザーを独自の構成で実行することです。これは機能しますが、テストが同時にではなく順番に実行されるため、非常に遅くなります。

複数のブラウザで並行して実行する方法はありますか?

SauceLabs で実行できますか? または、ローカルの Selenium-Grid を使用していますか?

私たちはテストプロセスを合理化しようとしているだけで、これは大きな助けになるでしょう. 提案や情報をいただければ幸いです。前もって感謝します。

4

6 に答える 6

65

そのために呼び出される新しいオプションがありますmultiCapabilities

multiCapabilities: [{
  'browserName': 'chrome'
}, {
  'browserName': 'firefox'
}],

完全な例を次に示します。

于 2014-02-20T14:40:21.037 に答える
22

2014 年 2 月更新 - この回答は無効になりました。以下のPaolo Morettiの回答を使用してください。


これを行うためのより良い方法があるかもしれませんが、現在、これらを並行 Grunt タスクとして実行しているだけです。

1) grunt 同時実行プラグインを追加します

npm install grunt-concurrent --save-dev

2) grunt.initConfig の下に各ブラウザーのタスクを追加します。ブラウザーを引数として追加して、構成ファイルを再利用できます。

protractor: {
        options: {
            keepAlive: true,
            singleRun: false,
            configFile: "test/protractor.conf.js"
        },
        run_chrome: {
            options: {
                args: {
                    browser: "chrome"
                }
            }
        },
        run_firefox: {
            options: {
                args: {
                    browser: "firefox"
                }
            }
        }
    },

3) これらをタスクとして登録します。

grunt.registerTask('protractor-chrome', ['protractor:run_chrome']);
grunt.registerTask('protractor-firefox', ['protractor:run_firefox']);

4) grunt.initConfig の下に並行タスクを作成します。

concurrent: {
        protractor_test: ['protractor-chrome', 'protractor-firefox']
    },

5) 同時実行用の grunt タスクを追加します

grunt.registerTask('protractor-e2e', ['concurrent:protractor_test']);

そして、それを実行すると、同時分度器テストが得られるはずです。

于 2013-12-23T07:13:28.713 に答える
14

usingmultiCapabilitiesは、各ブラウザーですべてのテストを実行します。したがって、以下の構成では、すべてのテストを 2 回 (Firefox で 1 回、Chrome で 1 回) 実行します。

multiCapabilities: [{
  'browserName': 'chrome'
}, {
  'browserName': 'firefox'
}],

各テスト ファイルを 1 回だけ実行し、複数のブラウザーに分割する場合は、次のsplitTestsBetweenCapabilitiesオプションを使用します。

splitTestsBetweenCapabilities: true

このブログ投稿では、splitTestsBetweenCapabilities

于 2014-06-16T18:41:05.767 に答える
1

私も同じ問題を抱えていましたが、私たちが話しているように、彼らが並列実行の機能を追加していることがわかりました! :D

これを見てください: https://github.com/angular/protractor/pull/492

その変更は master にマージされましたが、新しいもの (512) がまだ開いています。彼らがそれをマスターにマージするとすぐに(プルリクエストの議論によると、今日か明日になるはずです)、それはあなたの手にあるはずです:D.

于 2014-02-13T03:44:50.737 に答える
1

BrowserStack もこの目的で使用できます。非常に詳細なスタート ガイドがあります: https://www.browserstack.com/automate/nodeですが、無料ではありません。

于 2014-11-25T05:26:09.000 に答える