量角器中的“defaultTimeoutInterval”何时重置?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了量角器中的“defaultTimeoutInterval”何时重置?相关的知识,希望对你有一定的参考价值。

我正在使用ProtractorJasmineAngular2应用程序编写e2e测试用例。

我有两个问题:

1.关于DefaultTimeoutInterval

我知道每当一个承诺开始时倒计时开始,如果承诺没有在defaultTimeoutInterval中指定的protractor.conf.js内完成,量角器将导致控制台出错。但如果承诺在defaultTimeoutInterval内完成,那么倒计时将被重置并在下一个承诺开始时开始。

如果上述情况属实,我想澄清一下,如果我有一系列承诺,那么倒计时什么时候重置?在链中的所有承诺完成之后还是在每个承诺完成之后?

如果在链中的所有承诺完成后倒计时重置,那么正确的做法是将承诺作为it()/fit() blocks的直接子女吗?

我在下面有一个示例代码来解释我想要问的更多内容。

it("when does protractor's default timeout interval gets reset?", () => {

expect("a single promise here").toBe('something');      // I believe, after the promise inside the expect block finishes, the defaultTimeoutInterval should Reset.

// what happens if I have a chain of promises, like below?
// whether the defaultTimeoutInterval resets after every single promise inside the method `validateSuccessAlert()` and then the chained promises are finsihed?
// or will it reset on completion of every single promise?
PO.validateSuccessAlert('a method which has chained promises inside itself, returns a promise').then(() => {
    browser.waitForAngularEnabled(false).then(() => {
        PO.getEmailActivationLink('xxxxxx').then((activationCode) => {
            PO.openNewTab(activationCode).then(() => {
                PO.switchToTab(1).then(() => {
                    expect(PO.isVisible(element(by.css('.activateMailBox h3 small')))).toBeTruthy();
                    expect(element(by.css('.activateMailBox h3 small')).getText()).toBe('Congratulations!!');
                    expect(PO.isNotVisible(PO.getButtonByText('Proceed')));
                    PO.switchToTab(0);
                    browser.waitForAngularEnabled(true);                        // Re-enable the angular wait
                })
            })
        });
    });
})

})

2.关于allScriptsTimeout

我真的不明白这一点,这是重要的:每个文件中有一个规格?如果你能解释一下这一点,那就太好了。

答案

1)defaultTimeoutInterval是每个it的jasmine超时,不会让测试运行永久或很长 - http://www.protractortest.org/#/timeouts#timeouts-from-jasmine

将其设置为您认为it不应超过的默认值。如果您的测试使用以下语法运行的次数远远少于或超过默认超时,则覆盖:

describe('Some feature', function () {

   it('can be really slow', function () {

   }, 5 * 60 * 1000) // 5 minutes

   it('can be really fast', function () {

   }, 5000) //5 seconds
}) 

2)allScriptsTimeout是量角器中EACH异步命令的超时,不执行太长时间。

http://www.protractortest.org/#/timeouts#timeouts-from-webdriver

我通常不会设置超过10秒,不要使每个命令(如.sendKeys(),。click()等)花费很多时间。有时需要在网格中运行时增加,或者制作一些长命令,如巨大的.executeScript()等。

以上是关于量角器中的“defaultTimeoutInterval”何时重置?的主要内容,如果未能解决你的问题,请参考以下文章

如何解决量角器中的承诺

将文本与量角器中的换行符进行比较

单击模态窗口中的按钮 - 量角器

如何单击量角器中的隐藏元素?

量角器 - 天蓝色 devops 管道中的 Chromedriver 错误

量角器中的“defaultTimeoutInterval”何时重置?