Goniometro - Debug
Ora che abbiamo visto tutti i concetti di Goniometro nei capitoli precedenti, comprendiamo in dettaglio i concetti di debug in questo capitolo.
introduzione
I test end-to-end (e2e) sono molto difficili da eseguire il debug perché dipendono dall'intero ecosistema di tale applicazione. Abbiamo visto che dipendono da varie azioni o in particolare possiamo dire che da azioni precedenti come il login e talvolta dipendono dall'autorizzazione. Un'altra difficoltà nel debug dei test e2e è la sua dipendenza da WebDriver perché agisce in modo diverso con diversi sistemi operativi e browser. Infine, il debug dei test e2e genera anche lunghi messaggi di errore e rende difficile separare i problemi relativi al browser e gli errori del processo di test.
Tipi di fallimento
Ci possono essere vari motivi per il fallimento delle suite di test e di seguito sono riportati alcuni tipi di errore ben noti:
Errore WebDriver
Quando un comando non può essere completato, WebDriver genera un errore. Ad esempio, un browser non può ottenere l'indirizzo definito o un elemento non viene trovato come previsto.
Errore imprevisto di WebDriver
Un browser imprevisto e un errore relativo al sistema operativo si verifica quando l'aggiornamento del gestore dei driver Web non riesce.
Rottura del goniometro per angolare
Il fallimento di Goniometro per Angular si verifica quando Goniometro non ha trovato Angular nella libreria come previsto.
Guasto angolare2 del goniometro
In questo tipo di errore, Protractor fallirà se il parametro useAllAngular2AppRoots non viene trovato nella configurazione. Succede perché, senza questo, il processo di test esaminerà un singolo elemento radice mentre si aspetta più di un elemento nel processo.
Guasto del goniometro per timeout
Questo tipo di errore si verifica quando la specifica del test raggiunge un ciclo o un pool lungo e non riesce a restituire i dati in tempo.
Fallimento delle aspettative
Uno degli errori di test più comuni che mostra l'aspetto di un normale errore di aspettativa.
Perché il debug è importante in Goniometro?
Supponiamo, se hai scritto casi di test e hanno fallito, allora è molto importante sapere come eseguire il debug di questi casi di test perché sarebbe molto difficile trovare il punto esatto in cui si è verificato l'errore. Mentre lavori con Goniometro, otterrai alcuni errori lunghi con caratteri di colore rosso nella riga di comando.
Pausa e debug del test
I modi per eseguire il debug in Protractor sono spiegati qui & miuns;
Metodo di pausa
L'uso del metodo pause per eseguire il debug dei casi di test in Goniometro è uno dei modi più semplici. Possiamo digitare il seguente comando nel punto in cui vogliamo mettere in pausa il nostro codice di prova & miuns;
browser.pause();
Quando i codici in esecuzione colpiscono il comando precedente, interromperà il programma in esecuzione a quel punto. Dopodiché possiamo dare i seguenti comandi in base alle nostre preferenze:
Digita C per andare avanti
Ogni volta che un comando è esaurito, dobbiamo digitare C per andare avanti. Se non digiti C, il test non eseguirà il codice completo e fallirà a causa dell'errore di timeout di Jasmine.
Digitare repl per accedere alla modalità interattiva
Il vantaggio della modalità interattiva è che possiamo inviare i comandi WebDriver al nostro browser. Se vogliamo entrare nella modalità interattiva, digitarepl.
Digita Ctrl-C per uscire e continuare i test
Per uscire dal test dallo stato di pausa e continuare il test dal punto in cui è stato interrotto, è necessario digitare Ctrl-C.
Esempio
In questo esempio, abbiamo il file delle specifiche di seguito denominato example_debug.js, goniometro cerca di identificare un elemento con locator by.binding('mmmm') ma l'URL (https://angularjs.org/ la pagina non ha elementi con l'indicatore di posizione specificato.
describe('Suite for protractor debugger',function(){
it('Failing spec',function(){
browser.get("http://angularjs.org");
element(by.model('yourName')).sendKeys('Vijay');
//Element doesn't exist
var welcomeText =
element(by.binding('mmmm')).getText();
expect('Hello '+welcomeText+'!').toEqual('Hello Ram!')
});
});
Ora, per eseguire il test sopra, dobbiamo aggiungere il codice browser.pause (), dove vuoi mettere in pausa il test, nel file delle specifiche sopra. Apparirà come segue:
describe('Suite for protractor debugger',function(){
it('Failing spec',function(){
browser.get("http://angularjs.org");
browser.pause();
element(by.model('yourName')).sendKeys('Vijay');
//Element doesn't exist
var welcomeText =
element(by.binding('mmmm')).getText();
expect('Hello '+welcomeText+'!').toEqual('Hello Ram!')
});
});
Ma prima di eseguire, è necessario apportare anche alcune modifiche al file di configurazione. Stiamo apportando le seguenti modifiche nel file di configurazione utilizzato in precedenza, denominatoexample_configuration.js nel capitolo precedente -
// An example configuration file.
exports.config = {
directConnect: true,
// Capabilities to be passed to the webdriver instance.
capabilities: {
'browserName': 'chrome'
},
// Framework to use. Jasmine is recommended.
framework: 'jasmine',
// Spec patterns are relative to the current working directory when
// protractor is called.
specs: ['example_debug.js'],
allScriptsTimeout: 999999,
jasmineNodeOpts: {
defaultTimeoutInterval: 999999
},
onPrepare: function () {
browser.manage().window().maximize();
browser.manage().timeouts().implicitlyWait(5000);
}
};
Ora, esegui il seguente comando:
protractor example_configuration.js
Il debugger verrà avviato dopo il comando precedente.
Metodo debugger
L'utilizzo del metodo pause per eseguire il debug dei casi di test in Goniometro è un modo leggermente avanzato. Possiamo digitare il seguente comando nel punto in cui vogliamo interrompere il nostro codice di prova:
browser.debugger();
Utilizza il debugger del nodo per eseguire il debug del codice di test. Per eseguire il comando sopra, dobbiamo digitare il seguente comando in un prompt dei comandi separato che è stato aperto dalla posizione del progetto di prova -
protractor debug protractor.conf.js
In questo metodo, dobbiamo anche digitare C nel terminale per continuare il codice di test. Ma a differenza del metodo pause, in questo metodo deve essere digitato solo una volta.
Esempio
In questo esempio, stiamo usando lo stesso file di specifiche denominato bexample_debug.js, usato sopra. L'unica differenza è che invece dibrowser.pause(), dobbiamo usare browser.debugger()dove vogliamo rompere il codice di test. Apparirà come segue:
describe('Suite for protractor debugger',function(){
it('Failing spec',function(){
browser.get("http://angularjs.org");
browser.debugger();
element(by.model('yourName')).sendKeys('Vijay');
//Element doesn't exist
var welcomeText = element(by.binding('mmmm')).getText();
expect('Hello '+welcomeText+'!').toEqual('Hello Ram!')
});
});
Stiamo usando lo stesso file di configurazione, example_configuration.js, utilizzato nell'esempio precedente.
Ora, esegui il test del goniometro con la seguente opzione della riga di comando di debug
protractor debug example_configuration.js
Il debugger verrà avviato dopo il comando precedente.