Protractor использует WebdriverJS для взаимодействия с браузером, и все действия в webdriverJS являются асинхронными. Protractor использует функцию webdriverJS, называемую диспетчером обещаний, которая обрабатывает все эти асинхронные обещания, так что они выполняются в том порядке, в котором они написаны, и тесты становятся более читаемыми для создателя теста.
WebdriverJS осуждает эту функцию, однако с появлением async / await управлять обещаниями стало проще. По этой причине рекомендуется отказаться от того, чтобы ваши тесты полагались на менеджер обещаний, поскольку в конечном итоге он будет недоступен в следующей версии webdriverJS, которую использует Protractor.
Я упомянул все это, потому что, судя по всему, после использования async / await у вас уже установлено значение SELENIUM_PROMISE_MANAGER, равное false в вашей конфигурации. Это означает, что эти обещания больше не выполняются транспортиром и должны обрабатываться вручную в вашем тесте.
Ваше ожидание не выполняется, потому что это обещание не ожидается в вашей асинхронной функции.
Given(/^I access the Catalogue page$/, async () => {
await expect(browser.getTitle()).to.eventually.equal("Sign in to your account");
});
Then(/^I should see the product$/, async () => {
await browser.sleep(5000);
//expect(cataloguePage.allProducts.getText()).to.be("Fixed Product");
});
Надеюсь, это поможет.