2016-06-16 2 views
0

현재 CasperJS를 파고 들고 있으며 실제로 즐기고 있습니다. 그러나 어쩌면 그것은 설명서에서 놓친 뭔가, 나는 casper.capture() 문제가있는 것 같다. 나는 현재 테스트가 실패 할 때마다 캡처하고CasperJS 다중 캡쳐 스크린 샷 : 최근 스크린 샷은 이전의 모든 캡쳐를 덮어 씁니다.

function captureFailure(filename){ 
    casper.test.on("fail", function(failure){ 
     casper.viewport(1280, 1024); 
     casper.capture("failedScreenshots/Failure-"+filename+".jpg", { 
      top: 0, 
      left: 0, 
      width: 1280, 
      height: 1024 
     }); 
    }); 
} 

exports.captureFailure = captureFailure; 

아래와 같이 별도의 설치 모듈에 넣어 내 임시 변통으로 만들었다했습니다이 다음과 같이 내 테스트에 넣고 다음의 경우

. . . 
// setup 
setup.login(); 

// test 
casper.test.begin("Complete new social campaign flow with image as a  signed in user.", 16, function suite(test) { 
// setup captureFailure 
    setup.captureFailure("SocialFlowImage"); 

    casper.start(data.baseURL+'/campaigns/', function(){ 
     console.log("Campaign page loaded"); 
     this.click(campaignCreate); 
     casper.waitForSelector(socialCampaignCreateModal, function(){ 
      test.assertExists(socialCampaignCreateModal, 'Modal pops up'); 
      test.assertTextExists('Deal', 'Deal button exists'); 
      test.assertTextExists('Marketing Email', 'Marketing Email button exists'); 
      test.assertTextExists('Facebook', 'Facebook button exists'); 
     }); 
    }); 
. . . 

대부분이 작업은 독자적으로 진행되었지만 여러 개의 실패를 테스트하기 위해 모든 테스트를 한꺼번에 실행했을 때 화면 캡처는 덮어 쓰여졌습니다. 시간 순서에서는이 같은 모습 -> 테스트 1 실패 -> 캡처 스크린 샷 1 -> 테스트 2 -> 시험이 실패 -

시험 1> 캡처 화면 (2) 그 후 스크린 샷을 덮어 1

그리고 이것은 동일한 스크린 샷 중 2 개를 가져 왔지만 다른 명명 규칙을 따릅니다.

아이디어가 있으십니까?

답변

0

"실패"이벤트에 중첩 이벤트 처리기가있는 것으로 나타났습니다. 이 문제를 해결하려면, 설정 및 해체 기능 테스트 개체를 포함하는 내 casperjs 테스트 스타일을 변경 이벤트가 수행하여 처리 제거

조금 해키이지만, 내 사용자 지정 이벤트 핸들러는 filename 인수를 가지고 casper.test.removeListener("fail", casper.test.listeners("fail")[0]);

고유 한 스크린 샷 이름을 전달하고 어느 테스트가 무엇을 실행했는지 식별하고 디버깅하기가 쉬워졌습니다. 결과적으로 나는 setUp이 실제로 그것을 붙이는 익명의 기능을 가지고 있기 때문에 그것을 조작해야한다.