Как правильно выйти из системы при использовании ролей

При использовании ролей в 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);
 })
Другие вопросы по тегам