2014-05-05 11 views
6

Bene, mi piacerebbe sapere come recuperare le informazioni di un test fallito in jenkins.CasperJs + jenkins: quando un test fallisce, come recuperare tutte le informazioni su questo test

Ecco il risultato della mia cartella (fr) (visualizza 22 min, ma in parallelo è 3min.):

jenkinsResult

Ecco la descrizione del test fallito -jenkins-:

jenkins-casperJs test failed-

Ecco la descrizione del test fallito -casper-:

casperjs test failed

Quindi il mio problema è jenkins visualizza solo il messaggio del test fallito, e mi piacerebbe avere anche informazioni utili come linea e codice (in effetti c'è l'uscita della console ma non è conveniente-> ho cambiato la mia miniera è, vedi xUnit with Jenkins: how to display colors in the Build Console Output?, ma voglio ancora le informazioni nella "pila di esecuzioni"/stack di esecuzione).

risposta

8

ho trovato una soluzione, basta cambiare il messaggio ...:

casper.test.on("fail", function(failure) { 
    failure.message = "Message : " + failure.message + "\nLine : "+ failure.line + "\nCode : " + failure.lineContents; 
}); 

La stack errori di ripresa (con test.begin) viene modificato anche però. Ma a Jenkins non mi interessa, quindi possiamo usare una condizione come if casper.cli.get('xunit') { casper.test.on('fail'){...} ;}.

E così:

Solution Piuttosto semplice in realtà ... Dovrei avere una migliore ricerca.

Per Artjom:

In realtà per gli errori è abbastanza dettagliata in modo da non penso che ci sono cambiamenti da fare, vedere: error Casper

ma è ancora possibile personalizzare allo stesso modo e potrebbe essere qualcosa di simile:

casper.test.on("fail", function(failure) { 
    //if error type undefined function 
    if(failure.message.message){//or failure.message.stack.TypeError 
     failure.message.message = "Message : " + failure.message.message + "\nLine : "+ failure.message.line;//in jenkins -> title 
    } 
    //else assert error 
    else{failure.message = "Message : " + failure.message + "\nLine : "+ failure.line + "\nCode : " + failure.lineContents;} 

    //console.log(JSON.stringify(failure,4,'\t')); //see parameters you can modify in the failure object 
}); 

non c'è un evento errore, ma diversi oggetti-corretta legami- (rispetto al tipo di errore) in questo evento di errore. Quindi puoi manipolarli nel modo desiderato. Ma personalmente sono interessato al messaggio, al codice e alla linea (e per impostazione predefinita jenkins li gestisce con errore non definito).

Ora sto lavorando ad un modo per visualizzare anche il percorso screenshot, per avere qualcosa di simile:

Message : No notice on the page 
Line : 83 
Code : this.test.assertTextDoesntExists('Notice', 'No notice on the page'); 
Screenshot : http://-jenkins-/job/-myJob-//lastFailedBuild/artifact/screenshots/fail0.png/ 

Beh, l'ho fatto:https://github.com/n1k0/casperjs/pull/920

L'obiettivo è quello di fare clic sul collegamento in jenkins e sullo schermo direttamente utilizzando il browser :)

+1

Funziona anche per gli errori (ad esempio la funzione di chiamata su undefined)? C'è un 'on (" errore ", funzione ...'? –

+0

Sì, buon punto, lo modifico per tenerne conto. – Fanch