2017-08-31 8 views
0

私は、機能テストを動的に生成する必要がある状況があります。基本的に、BrowserStackを使用してさまざまな環境でテストを実行したいのですが、私がデスクトップで実行しているのか、モバイルで実行しているのかによって、異なるテストスイートを登録します。あなたは、私はそれについてつもり方法のアイデアを得ることができるので、ここでTheIntern - 動的テスト生成の環境を決定する

は、物事をキックオフファイルからのコードの抜粋です:

define(function (require) { 
    var registerSuite = require('intern!object'); 
    var assert = require('intern/chai!assert'); 
    var config = require('intern/dojo/node!../../node_modules/our-repo/config'); 
    // RIGHT HERE I NEED TO KNOW PLATFORM + BROWSER INFO! 
    var our_sites = ['A', 'C', 'C', 'D']; 
    for (let i=0; i<our_sites.length; i++) { 
     homepage_basic_site_test_suites(registerSuite, our_sites[i], config, assert); 
    } 
}); 

私はその後、設定を介して実行、動的テストを生成しますregisterSuiteを呼び出してください。

私が望むのは、もう1つのパラメータ、つまり選ばれた環境を渡すことです。

https://theintern.io/leadfoot/module-leadfoot_Server.html#getSessionCapabilities私は必要な情報を提供するようですが、それをどうやって取得するのか分かりません。

TheInternのための私の設定は、環境の次のリストが含まれており、私は前homepage_basic_site_test_suites()関数を呼び出すには、特定の実行のために選択された1知っていただきたいと思います:

environments: [ 
    { 
     browserName: 'IE', 
     version: ['11'], 
     platform: ['WINDOWS'] 
    }, 
    { 
     browserName: 'Edge', 
     version: ['13', 'latest'], 
     platform: ['WINDOWS'] 
    }, 
    { 
     browserName: 'Firefox', 
     version: ['54', 'latest'], 
     platform: [ 'WINDOWS', 'MAC'] 
    }, 
    { 
     browserName: 'Chrome', 
     version: ['45', 'latest'], 
     platform: ['WINDOWS', 'MAC'] 
    }, 
    { 
     browserName: 'Safari', 
     version: ['10.1', 'latest'], 
     platform: 'MAC' 
    }, 
    { 
     browserName: 'iPhone', 
     platform: 'MAC', 
     device: ['iPhone 6'], 
     realMobile: true 
    }, 
    { 
     browserName: 'iPad', 
     platform: 'MAC', 
     device: ['iPad 4th'], 
     realMobile: true 
    }, 
    { 
     browserName: 'android', 
     platform: 'ANDROID', 
     device: ['Samsung Galaxy S5'], 
     realMobile: true 
    } 
] 

答えて

1

あなたがからの環境情報を取得することができますリモートセッションスイートライフサイクルの方法またはテストでは、this.remote.session.capabilitiesを使用します。ただし、registerSuiteが呼び出された時点では、リモートは使用できません。

リモートで利用できるスイート自体、内テストを追加することができます。

registerSuite({ 
    name: 'my suite', 

    before: function() { 
     if (this.remote.session.capabilities.something) { 
      // Test is from intern/lib/Test 
      this.tests.push(new Test({ 
       name: 'a test', 
       parent: this, 
       test: function() { 
        // test function 
       } 
      }); 
     } 
    }, 

    ... 
}); 

別のオプションは、リモート固有の機能のスイートを作成し、リモート固有のコンフィグを使用してそれらをロードすることです。同様に、アンドロイド特有のfunctionalSuitesを読み込むAndroidの設定と、iOS固有のfunctionalSuitesを読み込むiOSの設定があります。これらの設定は、ほとんどのプロパティが共有されるように、中央設定から継承できます。

関連する問題