gpt4 book ai didi

angular - 如何不忘记再次打开 Protractor 到 Angular 同步?

转载 作者:太空狗 更新时间:2023-10-29 17:09:26 25 4
gpt4 key购买 nike

我们有一个相当庞大的测试代码库(大约 10000 行 javascript 代码),在某些情况下,我们需要关闭 Protractor-to-Angular 同步:

browser.ignoreSynchronization = true;

但是,问题是,有时我们忘记再次打开同步,导致所有后续测试都因不明原因而失败,需要花费时间和精力进行调试。

有没有办法确保在测试中重新打开同步?

我们确实有基于 ESLint 的静态代码分析并执行代码审查。

最佳答案

我只是做 afterTest 钩子(Hook)(取决于你的测试运行器),我把所有东西都设置回它的开始状态,所以如果我什至忘记在测试中切换回来,或者测试在任何时候由于某种原因崩溃 - 下一个测试不会受到影响:

我的 Jasmine 代码。 Protractor 配置:

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 或类似名称的函数中。你也可以从它返回 promise ,然后从钩子(Hook)返回那个 promise - 所以新的测试不会开始,直到 promise 解决

关于angular - 如何不忘记再次打开 Protractor 到 Angular 同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47818747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com