Как правильно выйти из системы при использовании ролей
При использовании ролей в TestCafe я не могу получить роли для правильного выхода из системы. Или, что более важно, я не могу получить два последовательных теста для выполнения с использованием одной и той же роли.
Немного предыстории:
Я тестирую корпоративный веб-сайт (извините, не могу поделиться), для которого требуется логин. Когда используешь t.useRole(account)
логин работает отлично. Моя проблема возникает, когда у меня есть два последовательных теста, которые входят в систему с той же учетной записью. Первый вход будет успешным, а второй - неудачным. Когда это произошло, я добавил консольные журналы, чтобы сообщить, когда вызывается блок входа в систему, и я не получаю от второго теста. При чтении документации по пользовательским ролям показано, что при инициализации роли создается файл cookie, и последующие вызовы useRole перезагружают страницу для данной учетной записи. По какой-то причине это не работает в моей среде, так как тестируемая страница перенаправляется на страницу входа.
На этом этапе мое решение состояло в том, чтобы выпустить метод выхода, но это не помогло. Я также попытался переключиться на анонимного пользователя как часть моего выхода из системы, снова безуспешно.
Пример кода выхода из системы (с использованием модели страницы):
async function logout (t) {
await t
.expect(accountDropdown.exists).ok()
.click(accountDropdown)
.expect(accountLogout.exists).ok()
.click(accountLogout)
.useRole(Role.anonymous());
};
Пример кода роли:
const normalUser = Role(`${url}`, async t=>{
console.log(' - Logging in as Normal User')
await t
.expect(await loginEmail.exists).ok()
.click(loginEmail)
.typeText(loginEmail, env.Email)
.click(loginPassword)
.typeText(loginPassword, env.Password)
.click(loginSubmit)
if( manageAccount.exists ) {
await t.click(manageAccount)
}
}, { preserveUrl: true });
На данный момент я в тупике. Любая помощь или предложения с благодарностью.
1 ответ
Проблема вызвана одновременным использованием функций preserveUrl и pageUrl. Мы собираемся исследовать эту проблему далее в контексте следующего вопроса:
Функции preserveUrl и pageUrl не работают вместе
На данный момент я предлагаю вам удалить pageUrl, так как в этом нет необходимости при использовании preserveUrl:
const normalUser = Role(`${url}`, async t=>{
console.log(' - Logging in as Normal User')
// ...
}, { preserveUrl: true });
fixture `LiveManager`
//.page`URL`
.beforeEach( async t => {
await t.setTestSpeed(0.85);
})