Tôi chỉ làm afterTest móc (phụ thuộc vào người chạy thử nghiệm của bạn), nơi tôi đặt tất cả mọi thứ trở về trạng thái bắt đầu của nó, vì vậy nếu tôi thậm chí quên để chuyển đổi trở lại trong thử nghiệm, hoặc thử nghiệm bị rơi vì một lý do nào đó trên bất kỳ điểm nào - các thử nghiệm tiếp theo sẽ không bị ảnh hưởng:
Mã của tôi cho hoa nhài. Cấu hình thước đo góc:
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.
})
Trong mã thực, tôi sẽ bọc nó vào hàm resetBrowser
hoặc một cái gì đó như thế này. Ngoài ra bạn có thể trả lại lời hứa từ nó, và sau đó trả lại lời hứa đó từ móc - vì vậy kiểm tra mới sẽ không bắt đầu cho đến khi lời hứa được giải quyết
Có thể viết hàm bao bọc, ví dụ: 'withoutSync (() => {...})' tắt nó lúc bắt đầu và trở lại vào cuối - điều này sau đó có thể quấn toàn bộ các callbacks mong đợi hoặc chỉ một phần của chúng. Sau đó, bạn chỉ đặt thuộc tính trực tiếp trong một hàm đó. – jonrsharpe
@jonrsharpe hm, giống như một "người quản lý ngữ cảnh", ý tưởng hay, tôi thích nó. Đôi khi, mặc dù chúng tôi cần phải có nó cho một số 'it()' s trong một hàng .. cảm ơn. – alecxe
Sử dụng webdriverio để thay thế. Sau đó, bạn không phải lo lắng về nó. Trong tất cả các mức độ nghiêm trọng, đây là lý do chính xác tôi chuyển từ thước đo sang wdio. Khi khung của bạn trở nên lớn, nó trở thành một cơn ác mộng để theo dõi thời điểm đồng bộ hóa được bật hay không. Theo kinh nghiệm của tôi, tôi thực sự kết thúc với ít mã hơn khi tôi di cư. – tehbeardedone