codeceptjs / codeceptjs/CodeceptJS

Event listener event.dispatcher.on(event.test.failed) doesn't work with Before and Background sections

Đang mở
#2,962 0 bình luận 3 reaction 0 người được giao Xem trên GitHub
bug
Ngôn ngữ chính
JavaScript
Star
4.2k
Fork
757
Merge trung bình
2 ngày 9 giờ
Pull request đã merge (30 ngày)
16

Mô tả

#### What are you trying to achieve?
The goal - to create custom hook with event listener to perform retry of scenarios in case of getting failed tests due to certain network issues.

Custom hook has the following code:

`const event = require('codeceptjs').event;

module.exports = function () {

event.dispatcher.on(event.test.failed, function (test, err) {

switch (true) {
case err.message.includes(`browserContext.addCookies: Browser has been closed`):
case err.message.includes(`Cannot read property 'addCookies' of undefined`):
case err.message.includes(`Cannot read property 'waitForSelector' of null`):
case err.message.includes(`Cannot read property 'waitForSelector' of undefined`):
case err.message.includes(`Cannot read property 'goto' of undefined`):
case err.message.includes(`Cannot read property 'goto' of null`):
case err.message.includes(`page.goto: net::ERR_NETWORK_CHANGED`):
case err.message.includes(`page.goto: net::ERR_NAME_NOT_RESOLVED`):
case err.message.includes(`page.goto: net::ERR_TIMED_OUT`):
test._retries = 5;
break;
default:
return;
}

});

}`

#### What do you get instead?
It works when the scenarios are written without Before or Background section (for BDD tests), but since our test failure occurs in Before and Background sections (above issues usually happen exactly there), custom hook/event listener won't work.

Obviously, that in this case we have to duplicate a lot of steps in our project

### Details

* CodeceptJS version: 3.0.7
* NodeJS Version: 14.15.1
* Operating System: Mac OS, Linux
* playwright: 1.12.0

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.