Как я могу переопределить тайм-аут по умолчанию (defaultTimeoutInterval
) для методов it
и describe
в Protractor? По умолчанию он равен 2500ms
.
Как переопределить тайм-аут по умолчанию для протранграфа?
Ответ 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))