Adding this to the protractor configuration works:
var webdriver = require.main.require('selenium-webdriver'); Promise = webdriver.promise.Promise; Object.assign(Promise, webdriver.promise); Promise.resolve = Promise.fulfilled; Promise.reject = Promise.rejected;
Although perhaps not all promises should be driven by promises?
It is worth noting that another solution requires wrapping each asynchronous function:
protractor.promise.controlFlow().execute( async () => { await asyncAction(); return asyncAction(); });
source share