난 그냥 afterTest 훅을 (테스트 러너에 따라 다릅니다)처럼 호출 테스트를 다시 시작하거나 어떤 이유로 든 추락 한 테스트는 영향을받지 않습니다.
쟈스민에 대한 코드입니다. 각도기의 설정 :
onPrepare() {
...
afterEach(function() {
// Setting ignoreSychronization back to true, in case it was changed in tests
browser.waitForAngularEnabled(true);
// Setting back to default frame. In case test was working in iframe
browser.switchTo().defaultContent();
// This depends on your architecture. We do clean run for each test.
browser.manage().deleteAllCookies();
browser.executeScript('window.sessionStorage.clear(); window.localStorage.clear();').then(
undefined,
function (err) {
// Errors will be thrown when browser is on default data URL.
// Session and Local storage is disabled for data URLs
// This callback is needed to not crash test, and just ignore error.
});
browser.manage().timeouts().implicitlyWait(5000); // I even rewrite implicit wait back to default value, in case i touched it in tests
// Also you might want to clear indexdb storage after tests.
})
실제 코드에서 내가 문제는이 같은 resetBrowser
또는 뭔가를 호출 된 함수로 포장합니다. 또한 약속을 되돌릴 수 있고 그 약속을 후크에서 반환 할 수 있습니다. 그래서 새로운 시험은 약속이 해결 될 때까지 시작하지 않을 것입니다.
아마도 래퍼 함수를 작성하십시오. 'beginSync (() => {...})'는 시작과 끝에서 그것을 끈다. 이것은 전체 콜백이나 그 일부만을 감쌀 수있다. 그런 다음 해당 기능에서 속성 만 직접 설정합니다. – jonrsharpe
@jonrsharpe hm, "컨텍스트 관리자"와 같은 멋진 아이디어, 나는 그것을 좋아한다. 때로는 여러개의 it()'s에 대해 그것을 줄 필요가 있지만 때때로. – alecxe
대신 webdriverio를 사용하십시오. 그렇다면 걱정할 필요가 없습니다. 모든 진지하게, 이것은 필자가 각도기에서 wdio로 전환 한 정확한 이유입니다. 프레임 워크가 커지면 동기화가 켜지는 시점을 추적하는 것이 악몽이됩니다. 내 경험에 비추어 볼 때 마이그레이션 할 때 코드가 적어졌습니다. – tehbeardedone