2017-08-31 4 views
0

J'ai une situation dans laquelle j'ai besoin de générer dynamiquement des tests fonctionnels. Fondamentalement, je veux employer BrowserStack pour exécuter mes tests sur une série d'environnements différents, mais je veux enregistrer une série différente de tests selon que je cours sur le bureau ou le mobile.TheIntern - détermination de l'environnement pour la génération de tests dynamiques

Voici un extrait de code à partir du fichier qui démarre le tout, afin que vous puissiez avoir une idée de la façon dont je vais parler:

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); 
    } 
}); 

Je cours puis à travers la configuration, la génération dynamique des tests et en appelant le registerSuite.

Ce que je voudrais, c'est pouvoir transmettre un paramètre de plus - l'environnement qui a été choisi.

https://theintern.io/leadfoot/module-leadfoot_Server.html#getSessionCapabilities On dirait que cela fournirait l'information dont j'ai besoin, mais je ne sais pas comment l'obtenir.

Ma config pour le nouveau stagiaire comprend la liste suivante des environnements, et je voudrais savoir que l'on a été choisi pour une course particulière avant d'appeler la fonction homepage_basic_site_test_suites():

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 
    } 
] 

Répondre

1

Vous pouvez obtenir des informations environnement de la session à distance. Dans une méthode de cycle de vie de suite ou un test, vous devez utiliser this.remote.session.capabilities. Toutefois, la télécommande n'est pas disponible au moment où registerSuite est appelée.

Vous pouvez ajouter des tests dans la suite elle-même, où la télécommande est disponible:

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 
       } 
      }); 
     } 
    }, 

    ... 
}); 

Une autre option serait de faire des suites fonctionnelles spécifiques à distance et de les charger en utilisant configs spécifiques à distance. Comme, avoir une configuration Android qui charge functionalSuites spécifique à l'Android, et une config iOS qui charge iOS functionalSuites spécifique. Ces configs peuvent hériter d'une config centrale, de sorte que la plupart des propriétés seront partagées.