2014-05-05 16 views
6

Vâng, tôi muốn biết cách lấy lại thông tin của một bài kiểm tra thất bại trong jenkins.CasperJs + jenkins: khi một bài kiểm tra thất bại, cách lấy tất cả thông tin về bài kiểm tra này

Dưới đây là kết quả của thư mục của tôi (fr) (nó sẽ hiển thị 22 phút nhưng song song đó là 3min.):

jenkinsResult

Dưới đây mô tả của thử nghiệm thất bại -jenkins-:

jenkins-casperJs test failed-

Dưới đây mô tả của thử nghiệm thất bại -casper-:

Vì vậy, vấn đề của tôi là jenkins chỉ hiển thị thông báo của bài kiểm tra thất bại, và tôi cũng muốn có thông tin hữu ích như dòng và mã (trên thực tế có đầu ra bàn điều khiển nhưng nó không thuận tiện-> Tôi đã thay đổi của tôi, đó là, xem xUnit with Jenkins: how to display colors in the Build Console Output?, nhưng tôi vẫn muốn thông tin trong ngăn xếp thực thi 'Pile d'exécution').

Trả lời

8

Tôi tìm thấy một giải pháp, chỉ cần thay đổi thông điệp ...:

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

Lỗi resume stack (với test.begin) cũng được sửa đổi mặc dù. Nhưng tôi không quan tâm đến jenkins, vì vậy chúng tôi có thể sử dụng một điều kiện như if casper.cli.get('xunit') { casper.test.on('fail'){...} ;}.

Và như vậy:

Solution Thay đơn giản thực sự ... Tôi cần phải tìm kiếm tốt hơn.

Đối Artjom:

Trong thực tế cho các lỗi nó khá dài dòng vì vậy tôi không nghĩ rằng có sự thay đổi để làm, xem: error Casper

Nhưng bạn vẫn có thể tùy chỉnh nó theo cùng một cách và nó có thể là một cái gì đó như thế:

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

có không phải là một sự kiện lỗi, nhưng khác nhau đối tượng thích hợp- mối quan hệ- (so với loại lỗi) trong sự kiện không thành công này. Vì vậy, bạn có thể thao tác chúng theo cách bạn muốn. Nhưng cá nhân tôi quan tâm bởi tin nhắn, mã và dòng (và theo mặc định jenkins quản lý chúng với lỗi không xác định).

Bây giờ tôi đang làm việc trên một cách để hiển thị cũng là con đường chụp màn hình, để có một cái gì đó như thế:

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/ 

Vâng, tôi đã làm điều đó:https://github.com/n1k0/casperjs/pull/920

Mục đích là để nhấn trên liên kết trong jenkins và màn hình hiển thị trực tiếp bằng cách sử dụng trình duyệt :)

+1

Điều này cũng làm việc cho các lỗi (tức là chức năng gọi trên không xác định)? Có một 'on (" lỗi ", hàm ...'? –

+0

Có, điểm tốt, tôi chỉnh sửa nó để tính đến điều đó. – Fanch

Các vấn đề liên quan