Задать вопрос
StivinKing
@StivinKing

Как решить проблему перехода по страницам при e2e-тестировании?

Доброго времени суток,

Пишу e2e-тесты для проекта, появились проблемы связанные со входом в систему.
Вход:
auth
browser.get('/login');
element(by.css('input[formControlName=email]')).sendKeys('blablabla');
element(by.css('input[formControlName=password]')).sendKeys('blablabla');
element(by.id('login')).click();


Тест:
test
describe('Project Test', () => {
  let page: TestPage;
  let auth: Auth();

  beforeEach(() => {
    page = new TestPage();
    auth = new Auth();
  });

  if('should test', () => {
    auth.login();
    // далее идет переход на страницу и клик по элементу который видимо еще не существует и тест падает
  });
});



Как дождаться полного перехода?
  • Вопрос задан
  • 191 просмотр
Подписаться 1 Средний 10 комментариев
Решения вопроса 1
StivinKing
@StivinKing Автор вопроса
На данный момент реализовал всё следующим образом. В директории e2e есть директории:
- /+page1 - тесты на страницу 1
- /+page2 - тесты на страницу 2
- /+page3 - тесты на страницу 3
- /shared - для общих решений

В /shared находится auth.ts со следующим содержимом:
auth.ts
const DEFAULT_LINK: string = '/';
const EMAIL: string = 'blablabla';
const PASSWORD: string = 'blablabla';

export class Auth {
  constructor() {
    browser.driver.manage().window().maximize();
    browser.get(DEFAULT_LINK);
    this.login();
  }

  login() {
    browser.sleep(1000);

    const email = element(by.css('input[formControlName=email]'));
    const pass = element(by.css('input[formControlName=password]'));
    const button = element(by.id('login'));

    email.sendKeys(EMAIL);
    pass.sendKeys(PASSWORD);
    button.click();

    browser.ignoreSynchronization = true;
    browser.sleep(1000);
  }

  logout() {
    browser.sleep(1000);

    const buttonLogin = element(by.xpath('путь до кнопки выхода'));
    const buttonConfirm = element(by.xpath('путь до кнопки подтверждения выхода'));

    buttonLogout.click();
    buttonConfirm.click();

    browser.ignoreSynchronization = true;
    browser.sleep(1000);
  }
}


В /+page1 содержится 2 файла: page1.e2e-spec.ts и page1.po.ts (аналогично и в других "page" директориях)
page1.e2e-spec.ts
// imports

describe('Page test1', () => {
  let auth: Auth;
  let page: Page1;

  beforeEach(() => {
    auth = new Auth();
    page = new Page1();
  });

  afterEach(() => {
    auth.logout(); // Проверяем каждую страницу отдельно, поэтому после завершения теста страницы - разлогиниваемся
  });

  it('Test 1...', () => {
    // некие тесты
  });
});

Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы