Подтвердить что ты не робот

Как переопределить тайм-аут по умолчанию для протранграфа?

Как я могу переопределить тайм-аут по умолчанию (defaultTimeoutInterval) для методов it и describe в Protractor? По умолчанию он равен 2500ms.

4b9b3361

Ответ 1

Я сам нашел ответ.

В config.js:

jasmineNodeOpts: {
    defaultTimeoutInterval: 25000
},

Ответ 2

Вы можете переопределить время ожидания по умолчанию в конкретном тесте it, используя эти две функции, чтобы переопределить и восстановить значение по умолчанию: (Только тестирование в Chrome)

import { browser } from 'protractor';

export function DefaultTimeoutOverride(milliseconds: number) {
    browser.driver.manage().timeouts().setScriptTimeout(milliseconds);
}

export function DefaultTimeoutRestore() {
    browser.driver.manage().timeouts().setScriptTimeout(browser.allScriptsTimeout);
}

EDIT

Теперь я создал вспомогательную функцию ('itTO'), которая оборачивает оператор Jasmine 'it' и автоматически применяет время ожидания :)

import { browser } from 'protractor';

export function itTO(expectation: string, assertion: (done: DoneFn) => void, timeout: number): void {
    it(expectation, AssertionWithTimeout(assertion, timeout), timeout);
}

function AssertionWithTimeout<T extends Function>(fn: T, timeout: number): T {
    return <any>function(...args) {
        DefaultTimeoutOverride(timeout);
        const response = fn(...args);
        DefaultTimeoutRestore();
        return response;
    };
}

function DefaultTimeoutOverride(milliseconds: number) {
    browser.driver.manage().timeouts().setScriptTimeout(milliseconds);
}

function DefaultTimeoutRestore() {
    browser.driver.manage().timeouts().setScriptTimeout(browser.allScriptsTimeout);
}

используйте так:

itTO('should run longer than protractors default', async () => {
        await delay(14000);
}, 15000);

const delay = ms => new Promise(res => setTimeout(res, ms))