3

신속한 피드백이 필요하기 때문에 오랜 시간 동안 실패한 테스트를 실행하지 말고 계속적인 통합을 위해 시간을 낭비하고 싶습니다.시나리오가 실패 할 때 오이를 멈추십시오. 각도기와 오이

나는 각도기를 사용하여 오이, cucumberJs의 자바 스크립트 구현을 사용하고 있습니다. 여기

내가 가진 무엇 있지만 작동하지 않습니다 : 내 protractor.conf.js이 같은hook.js을 포함

hooks.js

this.registerHandler('AfterScenario', function (scenario, callback) { 
    console.log('\n After each scenario...'); 
    if (scenario.isFailed() ===true) { 
     console.log('\n Scenario failed \n\n\n\n\n\n\n...'); 
     callback.fail(new Error("\n\n\n\nThis scenario definitely failed!!")); 
    } 
    }); 

:

cucumberOpts: { 
    require: [ 
     conf.paths.e2e + '/utilities/hooks.js', 
    ], 
    } 

나는 후크가 e 오류 출력; 그러나, 오류를 수정하는 이유 또는 방법을 알아낼 수 없습니다 :

e #01-1] Specs failed ? : C:\someFeature.feature 
[chrome #01-1] Scenario failed! Creating snapshot at: C:\someFeature.png 
[chrome #01-1] 
[chrome #01-1] 
[chrome #01-1] After each scenario... 
[chrome #01-1] TypeError: e2e\utilities\hooks.js:34 scenario.isFailed is not a function 
[chrome #01-1]  at C:\Hooks.js:36:18 
[chrome #01-1]  at nextTickCallbackWith0Args (node.js:420:9) 
[chrome #01-1]  at process._tickCallback (node.js:349:13) 

답변

2

을 내가 올바른 생각하면 첫 번째가 실패 할 경우 시나리오를 실패 오이의 fail-fast 옵션이 있습니다. 시도해보기 -

cucumberOpts: { 
    require: [ 
    conf.paths.e2e + '/utilities/hooks.js', 
    ], 
    format: 'pretty', 
    'fail-fast': true 
    }, 

따옴표가 필요하다고 생각합니다!

+0

이 작업은 Ram입니다. 그러나 더 이상 실행할 수없는 테스트 세트를 중단시킵니다. 제가 생각한 바는 다음과 같습니다. a) 모든 테스트를 대량으로 실행 (테스트 슈트)하지만 테스트 중 하나가 실패하면 fail-fast, 즉 실패한 테스트를 중지하고 대량/스위트의 다음 테스트로 넘어갑니다. b) 다시 한 번 스위트의 세 번째 테스트가 실패하면 더 이상 실행을 중단하고 시간을 절약하고 다음 테스트로 넘어갑니다. 지금 당장 당신의 솔루션은 실패한 테스트가 더 이상 실행되지 못하도록 막았습니다. 그러나 이는 스위트의 다른 테스트를 실행하지 않습니다. 어떤 생각? – pelican

0

솔리드 질문 - cucumber-js 1.3.1 및 그 이전 버전처럼 보이지만이 registerHandler 후크 중에 발생하는 오류는 치명적인 것으로 간주되어 실패시 테스트 실행을 중단합니다. 2.0.0을 설정하는 것이 사용자의 stepdefs를 정의 할 때 약간의 구조 조정을 필요로하지만 2.0.0-rc.6에서 AfterHandler 오류가 AfterScenario와 같은 이벤트에서 콜백까지 전달 된 것처럼 보입니다.

1.3.1의 사용 사례에서이 문제를 해결하기 위해 원하는 AfterScenario 코드를 단계적으로 끌어 와서 시나리오의 끝 부분에 명시 적으로 추가했습니다.