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 () => {
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.