2017-07-06 9 views
1

現在、Chrome(ドライバ)のみでテスト中です。私はFirefoxとSafariでもテストしたい。相次いで、それは並行することはできません。複数のブラウザでテストを実行する(順次)

は、ここでのテストを開始するには、私の一気のタスクです:

gulp.task('test', function() { 
    return gulp.src('*test/features/*').pipe(cucumber({ 
    'steps': '*test/features/steps/*.js' 
    })); 
}); 

シンプル機能ファイル:

Feature: UI 
    Testing UI 

    Scenario: Check the title of the page 
     When I open the homepage 
     Then I should see "Test - IntApp" in the title 

そしてステップファイル:

const chrome = require('selenium-webdriver/chrome'); 
const webdriver = require('selenium-webdriver'); 
const assert = require('assert'); 


module.exports = function() { 
    let options = new chrome.Options(); 
    options.addArguments('start-maximized'); 

    var driver = new webdriver.Builder() 
    .forBrowser('chrome') 
    .setChromeOptions(options) 
    .build(); 

    this.When('I open the homepage', function (done) { 
     driver.get('http://intapp.dev/').then(done); 
    }); 

    this.Then('I should see "Test - IntApp" in the title', function (done) { 
     driver.getTitle().then(function(title) { 
      assert.equal(title, "Test - IntApp"); 
     }).then(done); 
    }); 


    this.registerHandler('AfterFeatures', function (features) { 
     return driver.quit(); 
    }); 
}; 

私がいました多分私は思うかもしれないと思っているどこかでgulpタスクのパラメータとしてブラウザの名前が表示されますが、これは可能ではないようです。

+0

、それを並列にすることはできません*非常に珍しい要件です。好奇心から、なぜ? –

+0

@AlexBlexサーバーはいくつかのカスタムハードウェアを制御するので、外部ハードウェアの状態が各テストで期待どおりになるように、テストは順番に実行する必要があります。 – Cornwell

答えて

1

私がテストをやってみたかったので、順次これは私が思い付いたものです:。次々*

gulp.task('test', function(cb) { 
    runSequence(
    'test-chrome', 
    'test-firefox', 
    cb); 
}); 

gulp.task('test-chrome', function(cb) { 
    return gulp.src('*test/features/*').pipe(cucumber({ 
     'steps': '*test/features/steps/*.js', 
     'support': '*test/support/chrome.js' 
    })); 
}); 

gulp.task('test-firefox', function(cb) { 
    return gulp.src('*test/features/*').pipe(cucumber({ 
     'steps': '*test/features/steps/*.js', 
     'support': '*test/support/firefox.js' 
    })); 
}); 
0

私は多分、私が何とか一気タスクからパラメータ として、ブラウザの名前を渡すことができると考えていたが、可能ではないようです。

各ブラウザには独自のドライバがあり、各ドライバは独自の方法で作成/初期化する必要があります。

あなたが計画した方向に進む場合は、 を使用して、すべてのブラウザハンドル(作成後)を配列に保存し、その名前で必要なものをプルすることができます。

1

bashスクリプトまたはバッチスクリプトを作成し、セットアップファイルを作成します。

セットアップファイルでは、スクリプトを使って(行を編集して)変更できる変数を設定し、使用するドライバを宣言する場所に渡します。

このスクリプトは、それらを順番に実行しますが、JSONまたはHTML出力を使用する場合、異なるスイートを作成します。

これは私がしばらくの間、クロスブラウザの自動化を行ってきた方法です。

bashはMac、UNIX、Windows 10で実行できますが、バッチは主にWindowsです(メモリからはWindowsのみと考えています)。

開始する場所についてのガイダンスが必要な場合は、要望に応じて概要を説明しますが、それを行う方法を調べるための十分な情報を与えておく必要があります。

関連する問題