Каким будет окончательный золотой стандарт для написания функции login () - PullRequest
0 голосов
/ 12 апреля 2020

Я искал в интернете окончательный «шаблон входа в систему», который включает в себя проверку того, что вход в систему действительно успешен. Проблема - мы не разрешаем использовать ожидайте (иначе утверждения) в Pagemodels согласно DRY и соглашению о кодировании, которое мы выбираем для нашей команды. Это текущий метод входа в систему, и иногда он все еще не работает. Я хочу спросить вас, уважаемые Automators, как вы проектировали логин, включая проверку?

/**
 * Actual login function
 */
async performLogin(): Promise<void> {
   console.log(`perform login`);
   await t
   .typeText(this.Email, username, {
      replace: true,
      paste: true
   })
   .typeText(this.Password, password, {
      replace: true,
      paste: true
   })
   .click(this.buttonSignIn)
}

/**
 * Login validation
 */
async login(): Promise<void> {
   await t.wait(7000)
   const getURL: any = ClientFunction(() => window.location.href)
   let currentURL: string = await getURL()

   while (currentURL === basePM.urlLogin) {
      this.performLogin()
      await t.eval(() => location.reload(true))
      currentURL = await getURL()
   }
}

1 Ответ

5 голосов
/ 13 апреля 2020

Трудно сказать что-либо точное без рабочего примера.

wait(7000) выглядит немного излишним. Если вы хотите быть уверены, что находитесь на правильной странице, вы можете проверить, существует ли элемент в селекторе. TestCafe имеет встроенный механизм ожидания, который позволяет вам избегать использования метода wait: https://devexpress.github.io/testcafe/documentation/test-api/built-in-waiting-mechanisms.html.

Вы пропустили ключевое слово await перед вызовом this.performLogin() , Причина ненадежных тестов может быть здесь.

Оператор while также выглядит избыточным, поскольку вы можете использовать интеллектуальное утверждение с клиентскими функциями. Тем не менее, похоже, что некоторые особенности вашего сайта заставляют вас перезагрузить страницу. В общем случае вам не нужно перезагружать страницу после входа в систему.

...