2014-05-05 13 views
6

Chciałbym wiedzieć, jak odzyskać informacje o nieudanym teście w jenkins.CasperJs + jenkins: gdy test się nie powiedzie, jak odzyskać wszystkie informacje z tego testu

Oto wynik mojego folderu (fr) (wyświetla 22 min, ale równocześnie jest to 3min.):

jenkinsResult

Oto opis testu udało -jenkins-:

jenkins-casperJs test failed-

Oto opis testu udało -casper-:

casperjs test failed

Mój problem polega na tym, że jenkins wyświetla tylko komunikat testu, który nie powiódł się, i chciałbym mieć również przydatne informacje, takie jak linia i kod (w rzeczywistości jest to wyjście konsoli, ale nie jest to wygodne-> zmieniłem moja moja jest, zobacz, xUnit with Jenkins: how to display colors in the Build Console Output?, ale nadal chcę informacji w stosie "Pile d'exécution"/wykonanie).

Odpowiedz

8

znalazłem rozwiązanie, wystarczy zmienić wiadomość ...:

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

Stos error resume (z test.begin) jest również zmodyfikowany chociaż. Ale nie obchodzi mnie dżinsy, więc możemy użyć warunku takiego jak if casper.cli.get('xunit') { casper.test.on('fail'){...} ;}.

I tak:

Solution raczej proste faktycznie ... powinienem mieć lepsze wyszukiwanie.

Dla Artjom:

W rzeczywistości za błędy To dość gadatliwy, więc nie sądzę, są zmiany do zrobienia, patrz: error Casper

Ale nadal można dostosować go w ten sam sposób i może to być coś takiego:

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

nie jest wydarzeniem błąd, ale różne obiekty, właściwa więzi (w porównaniu do rodzaju błędu) w tym zdarzeniu awaryjnym. Możesz więc manipulować nimi tak, jak chcesz. Ale osobiście interesuje mnie wiadomość, kod i linia (domyślnie jenkins zarządza nimi z nieokreślonym błędem).

Teraz pracuję nad sposobem wyświetlania również ścieżkę zrzut ekranu, aby mieć coś takiego:

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/ 

dobrze, zrobiłem go:https://github.com/n1k0/casperjs/pull/920

Celem jest kliknięcie na łączu w jenkins i ekranie wyświetlacza bezpośrednio przy użyciu przeglądarki :)

+1

Czy to również działa na błędy (np. funkcja połączenia w niezdefiniowany)? Czy jest "on (" błąd ", funkcja ...'? –

+0

Tak, dobra uwaga, edytuję go, aby wziąć to pod uwagę. – Fanch