如何不忘记将量角器转到角度同步



我们有一个相当巨大的测试代码库(约10000行JavaScript代码),在某些情况下,我们需要关闭杂物到角度同步:

browser.ignoreSynchronization = true;

但是,问题是,我们忘记再次打开同步 ,使所有随后的测试失败了,这不清楚,需要时间和精力来调试。

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

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

我只是做回试挂钩(取决于您的测试跑者),在这里我将所有内容都设置回了起始状态,因此,如果我什至忘了在测试中切换或测试崩溃,则任何时刻的原因 - 接下来的测试不会受到影响:

我的茉莉代码。量突配置:

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或类似的功能中。另外,您可以从中返回承诺,然后从Hook中返回该承诺 - 因此,新的测试将无法开始,直到应许解决

在某一时刻,当我在相同的情况下挣扎时,我创建了一个辅助功能,并在导航到新页面之前将其称为。您仍然必须"记住"才能调用该功能,但至少这只会为您处理所处理的代码中的一个位置。

isAngularSite(flag) {
    browser.ignoreSynchronization = !flag;
}

,在我的代码中,我称其为 utils.isAngularSite(false);

最新更新