2015-12-19 9 views
10

La Storia:multiCapabilities e test di gelsomino focalizzato

Abbiamo una piuttosto grande prova di goniometro codebase end-to-end. Abbiamo due configurazioni: una è "locale" - per eseguire i test in Chrome e Firefox utilizzando directConnect e l'altra è "remota" - per eseguire test su un server di selenio remoto - BrowserStack nel nostro caso.

La nostra configurazione "locale" è configurata per eseguire alcuni test in Chrome e alcuni in Firefox, perché in realtà non è possibile eseguire alcuni test in Chrome, ad esempio keyboard shortcuts don't work in Chrome+Mac. L'esecuzione dei test che richiedono l'utilizzo delle scorciatoie da tastiera in Firefox è una soluzione temporanea finché il problema chromedriver collegato non viene risolto.

Ecco la parte rilevante della configurazione:

var firefox_only_specs = [ 
    "../specs/some_spec1.js", 
    "../specs/some_spec2.js", 
    "../specs/some_spec3.js" 
]; 

exports.config = { 
    directConnect: true, 

    multiCapabilities: [ 
     { 
      browserName: "chrome", 
      chromeOptions: { 
       args: ["incognito", "disable-extensions", "start-maximized"] 
      }, 
      specs: [ 
       "../specs/**/*.spec.js", 
       "../specs/**/**/*.spec.js", 
       "../specs/**/**/**/*.spec.js" 
      ], 
      exclude: firefox_only_specs 
     }, 
     { 
      browserName: "firefox", 
      specs: firefox_only_specs 
     } 
    ], 

    // ... 
}; 

Il problema:

Ora, il problema è che, se sto debug di un singolo test, o vogliono eseguire un single test - Sto marcando è focalizzato (via fdescribe/fit) - ma il goniometro avvia due sessioni di driver: una per Chrome e l'altra per Firefox, utilizzando entrambe le funzionalità configurate:

Running "protractor:local" (protractor) task 
[launcher] Running 2 instances of WebDriver 

... 
------------------------------------ 
[chrome #1] PID: 2329 
[chrome #1] Using ChromeDriver directly... 
[chrome #1] Spec started 

... 

------------------------------------ 
[firefox #2] PID: 2330 
[firefox #2] Using FirefoxDriver directly... 
[firefox #2] Spec started 

... 

La domanda:

C'è un modo per dire goniometro per utilizzare l'unica possibilità che ha configurato una specifica mirata?


Utilizzo attualmente aggiornato protractor 3.0.0.

auguriamo che la questione è chiara. Fammi sapere se hai bisogno di ulteriori informazioni.

+0

non disponi di una risposta alla tua domanda, ma a me sembra ... non si può. La configurazione viene letta prima che i test inizino a essere eseguiti, quindi tutti i browser in 'multiCapabilities' inizieranno.Una soluzione dolorosa sarebbe quella di cambiare il "runner" o lo script di esecuzione per avere una configurazione diversa o per configurare dinamicamente la configurazione in base ai parametri della riga di comando. vale a dire. Non sta utilizzando la funzione incorporata degli strumenti/framework ma è possibile eseguirla con una configurazione diversa che non ha l'installazione di Chrome. – aneroid

+0

@aneroid grazie per il punto. Sì, non è così chiaro come affrontare il problema..potrebbe essere necessario un parametro della riga di comando personalizzato separato che, a seconda del valore, eseguirà una delle funzionalità o tutte .. – alecxe

+0

Tieni presente che puoi generare dinamicamente funzionalità con una funzione 'getMultiCapabilities' nel tuo' protractor.conf.js', se necessario – martin770

risposta

1

mi chiedo se si può fare qualcosa per avvolgere i it dichiarazioni come:

onPrepare: function() { 
    browser.getCapabilities().then(function(caps) { 
     global.browserName = caps.caps_.browserName; 
    }); 

    global.firefoxOnly = function(name, testFunction) { 
     if (browserName === 'firefox') { 
      return it(name, testFunction); 
     } else { 
      return xit(name, testFunction).pend('firefox only'); 
     } 
    }; 
} 

Poi, quando si scrive un test, invece di it uso qualcosa di simile:

describe('when I do something', function() { 
    firefoxOnly('it should do the right thing', function() { 
     doSomething(); 
     expect(thing).toBe(right); 
    )}; 
}); 

non ho idea se questo funziona davvero, buttandolo lì fuori. In realtà, quando torno al mio computer di test e provare, sarei interessato ad aggiungere una funzione come wip da usare al posto di xit pend automaticamente i miei test ATDD!

0

C'è un modo per dire al goniometro di usare l'unica capacità che ha una specifica focalizzata configurata?

Secondo la relevant github issue, non è possibile.

Problemi correlati