Подтвердить что ты не робот

Транзакторы e2e Тесты Вход в систему

В настоящее время есть частичный сквозной тест, который вводит имя пользователя/пароль и нажимает "Зарегистрироваться".

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

Новый для этого проекта, но мы используем OAuth.

Основной вопрос: звучит ли это как потребность в http mocking?

Дополнительная информация:

spec.js

describe('login page', function() {
    browser.driver.get('http://url.path/login');
    it('should render login page', function() {

      // Checking the current url
      var currentUrl = browser.driver.getCurrentUrl();
      expect(currentUrl).toMatch('/login');
    });
    it('should sign in', function() {

      // Find page elements
      var userNameField = browser.driver.findElement(By.id('username'));
      var userPassField = browser.driver.findElement(By.id('password'));
      var userLoginBtn  = browser.driver.findElement(By.id('loginbtn'));

      // Fill input fields
      userNameField.sendKeys('[email protected]');
      userPassField.sendKeys('1234');

      // Ensure fields contain what we've entered
      expect(userNameField.getAttribute('value')).toEqual('[email protected]');
      expect(userPassField.getAttribute('value')).toEqual('1234');

      // Click to sign in - waiting for Angular as it is manually bootstrapped.
      userLoginBtn.click().then(function() {
        browser.waitForAngular();
        expect(browser.driver.getCurrentUrl()).toMatch('/success');
      }, 10000);
    });
});

Если я быстро нажму на окно тестирования, я увижу, что он успешно дошел до страницы успеха, но он не перенаправляется на панель управления (она перенаправляется при входе в систему через браузер). Как я могу продолжить этот тест, чтобы он оставался подписанным и доступ к панели мониторинга, как пользователь?

//Новое в проекте, angular и и транспортир.

РЕДАКТИРОВАТЬ - немного подытожив это:

  • Я хотел бы, чтобы транспортир начал тесты на странице /login
  • Транспортир должен найти и заполнить поля имени пользователя и пароля, затем нажмите "Вход"
  • Транспортир успешно войдет в систему, чтобы увидеть страницу /thankyou, а затем сразу же перенаправляется на страницу пользователя/приборной панели.
  • Возможно, мне не хватает шага, нужно ли нам вручную перенаправлять тесты Protractor?

(Когда пользователь вручную регистрируется в браузере, они не видят страницу /thankyou - это быстрая переадресация на/приборную панель. Транспортир не достигает страницы панели мониторинга.

4b9b3361

Ответ 1

В вашем сообщении отсутствует информация, но я постараюсь сделать предположение:

Я подозреваю, что ваша страница "спасибо, что вы вошли в систему" ​​делает перенаправление javascript после таймаута.

Итак, после того, как вы нажмете "Войти", браузер загрузит страницу "Спасибо, что вы вошли в систему", а поскольку второй параметр .then() ничего не делает, browser.waitForAngular() выходит из строя, потому что на этой странице нет angular.

Вы должны попытаться использовать что-то вроде browser.driver.wait() с разумным таймаутом, чтобы обнаружить изменение URL-адреса (описано здесь: https://github.com/angular/protractor/issues/610) и триггер browser.waitForAngular() после того, как браузер перейдет на страницу /success.

Ответ 2

Вы пытались использовать явное ожидание?

    return browser.driver.wait(function() {
        return browser.driver.getCurrentUrl().then(function(url) {
            return /success/.test(url);
        });
    }, 10000);

Ваш код будет таким:

  // Click to sign in - waiting for Angular as it is manually bootstrapped.
  userLoginBtn.click();
  return browser.driver.wait(function() {
        return browser.driver.getCurrentUrl().then(function(url) {
            return /success/.test(url);
        });
  }, 10000);