Protractor 和 Cucumber:使用 async/await 函数超时

问题描述 投票:0回答:3

我正在使用 Angular 5、Protractor 和 Cucumber 进行 e2e 和 bdd 测试。当我在终端上运行时

ng e2e
我收到以下错误:

当我打开页面# e2e\steps\home.steps.ts:15

错误:函数超时,确保承诺在 5000 内解决 毫秒

在第 15 行,我有:

 When(/^I open the page$/, async () => {
    await browser.get('http://localhost:49156');
 });

具体来说就是这行:

 When(/^I open the page$/, async () => {
angular protractor cucumber
3个回答
41
投票

答案很简单。默认情况下,Cucumber 的异步钩子需要 5000 毫秒,但我们可以通过这样做来配置它:

When(/^I open the page$/, {timeout: 2 * 5000}, async () => {

甚至可以进行全局配置。

var {setDefaultTimeout} = require('cucumber');
setDefaultTimeout(60 * 1000);

更多信息:超时

另一件事:我配置了错误的端口。正如你所看到的,我在端口 49156 上配置了它,因为我读到它是默认端口,但似乎已经更改,现在是端口 49152。


0
投票

添加到 Ricky 的答案中。

When(/^I open the page$/, {timeout: 2 * 5000}, async () => {
    await new Promise((resolve) => setTimeout(resolve, 5000)); // wait for 5000 ms
})

0
投票

黄瓜默认需要 5000 毫秒进行异步调用。我们可以通过下面提到的方式修改它。这应该位于框架中的支持目录下,以便更好地实践。 尝试使用这个:

const { setDefaultTimeout } = require('@cucumber/cucumber');
setDefaultTimeout(parseInt(process.env.DEFAULT_TIMEOUT) || 60000);
© www.soinside.com 2019 - 2024. All rights reserved.