Похоже, вам все еще нужно ждать appPage.checkIfUserLoggedIn()
.Чтобы это работало, вам нужно установить SELENIUM_PROMISE_MANAGER: false
в вашем файле конфигурации Protractor (как показано ниже).В дополнение к этому вы должны быть как минимум на узле 8.
it('User should be logged in successfully', async () => {
expect(await appPage.checkIfUserLoggedIn()).toBe(true);
});
Почему вам нужно ждать ...
Итак, в вашем методе checkIfUserLoggedIn
:
element(by.css('[data-e2e="profile-dd"]')).isPresent()
возвращает webdriver.promise.Promise<boolean>
.Ожидание этого разрешает это обещание, и вы получаете логическое значение. - Поскольку checkIfUserLoggedIn является асинхронной функцией, теперь она становится встроенной в Promise.Таким образом, ваш возвращаемый тип является собственным
Promise<boolean>
. - В вашем блоке
it
вам нужно изменить его на async
и await
возвращаемые Promise<boolean>
в ожидаемом.
Обновление: добавление информации для конфигурации Protractor и tsconfig.
Конфигурация транспортира
Вам потребуется отключить поток управления из файла конфигурации Protractor:
exports.config = {
SELENIUM_PROMIMSE_MANAGER: false, // turns off the control flow
// Other parts of your config including capabilities, etc.
// Below is an example of the rest of the configuration file:
capabilities: { browserName: 'chrome' },
specs: [ 'e2e/**/*.e2e-spec.ts' ],
seleniumAddress: 'http://127.0.0.1:4444/wd/hub'
}
tsconfig.json
Просматривая комментарии и другие части этого вопроса StackOverflow, похоже, что вы используете полифилы для обещаний.Если вы обновитесь до узла 8, вы сможете использовать нативные обещания.Ваш tsconfig может быть просто:
{
"compilerOptions": {
"module": "commonjs",
"target": "es2017",
"types: ["jasmine", "jasminewd2", "node"]
// Other parts of your tsconfig
}
}
Примечание: в Protractor 6 поток управления удален, поэтому переход к async / await - хорошая идея для подготовки к следующей версии.Поскольку поток управления удаляется, jasminewd2 также будет удален.Это означает, что типы tsconfig будут просто ["jasmine", "node"]
.