2014-08-31 8 views
13

Desidero poter testare la mia applicazione angolare con il goniometro. Dal momento che utilizzo RequireJS, non posso utilizzare la direttiva ng-app nel mio DOM ed è per questo che eseguo manualmente il boot di Angular con angular.bootstrap.Utilizzo del test del goniometro con AngularJS bootstrap

goniometro stampa un output degli errori come di seguito:

Error: Angular could not be found on the page http://localhost:1428/ : retries looking for angular exceeded

Poi, mi sono reso conto che la documentazione goniometro ha un avvertimento:

Protractor does not work out-of-the-box with apps that bootstrap manually using angular.bootstrap. You must use the ng-app directive.

Beh, c'è qualche soluzione per eseguire i test Goniometro con bootstrap manualmente applicazione angolare o dovrei iniziare a conoscere le suite di test alternative?

+0

I nostri test del goniometro funzionano bene con RequireJS e manualmente le app scaricate. Potresti condividere più codice per favore? :) – glepretre

risposta

13

andare a goniometro confiuration e aggiungere questo

onPrepare: function() { 
// implicit and page load timeouts 
    browser.manage().timeouts().pageLoadTimeout(40000); 
    browser.manage().timeouts().implicitlyWait(25000); 

    // for non-angular page 
    browser.ignoreSynchronization = true; 

    // sign in before all tests 

} 

Ha funzionato per me

mio file di configurazione completo si presenta così ...

// conf.js 
exports.config = { 
seleniumAddress: 'http://localhost:4444/wd/hub', 
specs: ['../**/*.e2e.js'], 
multiCapabilities: [{ 
browserName: 'firefox' 
}], 

onPrepare: function() { 
// implicit and page load timeouts 
browser.manage().timeouts().pageLoadTimeout(40000); 
browser.manage().timeouts().implicitlyWait(25000); 

// for non-angular page 
browser.ignoreSynchronization = true; 

// sign in before all tests 

} 
} 

Quello che accade è che si chiede dal goniometro per attendere una quantità di tempo e ignorare il documento.ready(), per darti il ​​tempo di eseguire il boot angolare manualmente.

+0

Quindi funziona solo per pagine non angolari? –

+0

Non proprio, questa soluzione alternativa potrebbe funzionare anche quando si esegue il boot asincrono asincrono (il mio caso era che stavo passando come dipendenze moduli RequireJS da un'altra app) –

+0

Questo non funziona per me, fa funzionare i test a intermittenza ma altre volte gli elementi non sono pronto e falliscono. (IE posso eseguire lo stesso identico test quattro volte di seguito e ottenere un errore.) –