Требуется ли TestCafe вызов useRole в каждом тесте / beforeEach

Я оценивал TestCafe для приложения, требующего аутентификации пользователя. Документация не очень ясна, и у меня возникли проблемы с получением прямого ответа о том, как нам следует использовать useRole.

Наше приложение требует аутентификации пользователя, прямо сейчас мы тестируем только одного пользователя, поэтому нам не нужно переключать пользовательские сеансы.

Я определил Role, и он правильно аутентифицируется. Но я заметил следующее:

  1. Мне нужно сначала вызвать useRole в каждом тесте, чтобы использовать сеанс с аутентификацией.
  2. Каждый раз при вызове useRole (первым в каждом тесте) TestCafe возвращает в браузере исходный URL-адрес входа (или что-то еще, что preserveUrl сохраняет после входа)

Любое из этих утверждений неверно? Я не могу представить, как это работает в реальной среде, это безумное количество перенаправлений.

Пункт 2 кажется правильным, участник github devexpress ответил: «В настоящее время TestCafe не может использовать роль без перезагрузки или запуска навигации по страницам», поэтому, если мне придется вызывать useRole в каждом тесте, это буквально удваивает нагрузку навигации HTTP.


person helion3    schedule 28.02.2019    source источник


Ответы (1)


Цель useRole - аутентифицироваться в приложении только один раз (для каждого пользователя): это означает, что вы увидите страницу входа в первый тест, а все остальные тесты будут запускаться непосредственно на странице приложения, когда пользователь уже аутентифицирован.

Проблема в том, что каждый тест запускается в песочнице. Песочница предназначена для каждого теста, а не для устройства. Это означает, что когда тест начинает выполняться, он запускается в совершенно новой песочнице без файлов cookie и локального хранилища.

Единственный способ повторно применить файлы cookie и локальное хранилище - вызвать useRole. Вот почему useRole необходимо вызывать в начале каждого теста.

useRole - это огромная экономия времени. Когда я начал работать с TestCafe (более года назад) useRole не существовало, и каждый тест начинался с загрузки страницы входа.

useRole даже более полезен, когда вам нужно переключаться внутри теста между разными пользователями.

А затем, чтобы закончить, да, useRole перезагружает страницу приложения, потому что каждый тест запускается в песочнице без истории страниц.

То, что вы ищете, - это функция, которой не существует: не перезагружать страницу между тестами. Если вы не хотите перезагружать страницу каждый раз, выполните все тесты одним test методом.

person hdorgeval    schedule 28.02.2019
comment
Спасибо. Я копал глубже и тестировал на другом принадлежащем мне сайте. Я понял, что мне нужно вручную использовать navigateTo и после useRole, потому что мое приложение перенаправляет анонимных пользователей на логин. Таким образом, tc запускается заново, перенаправляется для входа в систему, затем обновляется с помощью useRole, но застревает там, где его не должно быть. - person helion3; 01.03.2019