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

问题描述 投票:1回答:1

我正在使用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

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

selenium jasmine protractor
1个回答
3
投票

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()等。

© www.soinside.com 2019 - 2024. All rights reserved.