Protractor and Cucumber: function timed out using async/await
Asked Answered
N

3

16

I'm doing e2e and bdd tests using Angular 5, Protractor and Cucumber. When I run on terminal ng e2e I get the following error:

When I open the page # e2e\steps\home.steps.ts:15

Error: function timed out, ensure the promise resolves within 5000 milliseconds

In the line 15, I have:

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

Specifically, it is the line:

 When(/^I open the page$/, async () => {
Nawrocki answered 16/4, 2018 at 16:27 Comment(0)
N
41

The answer is very simple. By default, Cucumber takes 5000 ms for asynchronous hooks, but we can configure it by doing this:

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

It is even possible to configure it globally.

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

More information: Timeouts

Another thing: I configured the port badly. As you can see, I configured it on port 49156, because I had read that it was the default port, but it seems that has already changed and is now port 49152.

Nawrocki answered 16/4, 2018 at 16:50 Comment(1)
not working for me.. I want to run specific feature file in cucumber with angular 6 set up.I am using " protractor ./protractor.conf.js --specs='e2e/features/app.feature' " but it gives me error - Error: function timed out, ensure the promise resolves within 5000 millisecondsCaffeine
M
0

Adding to Luis's answer.

When(/^I open the page$/, {timeout: 2 * 5000}, async () => {
    await new Promise((resolve) => setTimeout(resolve, 5000)); // wait for 5000 ms
})
Multinuclear answered 16/5, 2022 at 23:8 Comment(1)
There isn't anyone with the user name "Ricky" here. What does it refer to? Luis' answer?Quagmire
D
0

Cucumber takes by default 5000 ms for asynchronous calls. We can modify this in the below-mentioned manner. This should go under the support directory in your framework for better practice.

Try using this:

const { setDefaultTimeout } = require('@cucumber/cucumber');
setDefaultTimeout(parseInt(process.env.DEFAULT_TIMEOUT) || 60000);
Dioscuri answered 28/4, 2023 at 5:16 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.