Как пройти форму входа в систему с помощью CYPRESS?

#javascript #cypress

Вопрос:

Мне удается запускать CYPRESS без каких-либо проблем на сайте без аутентификации.

Но в интранете я не могу идентифицировать себя. Я должен войти в систему раньше.

Вот мой код:

 describe('home', () => {
  it('home accessible', () => {
    cy.visit('/') 
  })

  //We fill the login FORM
  it('User Field', () => {
    cy.get('input#user') 
      .type('login') 
    })    
  it('User pass', () => {
    cy.get('input#pass')  
      .type('mot de passe') 
    })    
      it('check consent', () => {
     cy.get('input#permalogin') 
      .click({ force: true }) 
     })  
     it('submit', () => {
    cy.get('input.btn.btn-primary')     
      .click()               
  })

  //the form is submit, we can visit a page
    it('autre page!!', () => {
    cy.visit('/luniversite/page-2',{ timeout: 30000 })    
  })
  //We check the title of the page, we should be on the page 2
  it('titre  page 2', () => {
    cy.title().should('eq', 'page 2: INTRANET)       
  })
 

КИПАРИС и видео с КИПАРИСОМ показывают мне, что я заблокирован на странице аутентификации.
Тест на заголовке страницы неверен, я не получаю доступ к странице 2. Я остаюсь на первой странице для входа в систему.

Ответ №1:

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

 describe("home", () => {
  it("home accessible", () => {
    cy.visit("/");
    //We fill the login FORM
    cy.get("input#user").type("login");
    cy.get("input#pass").type("mot de passe");
    cy.get("input#permalogin").click({ force: true });    
    cy.get("input.btn.btn-primary").click();
    cy.visit("/luniversite/page-2", { timeout: 30000 });
    cy.title().should("eq", "page 2: INTRANET");
  });
});
 

С учетом этого трудно понять, что делает ваше приложение, без более подробной информации:

1/ При выполнении вручную выполняется ли правильная аутентификация вашего приложения с использованием предоставленных учетных данных? У вас есть ошибки консоли? Определили ли вы, что используемые вами локаторы элементов на самом деле взаимодействуют с элементами так, как вы ожидаете?

2/ Пытается ли ваш тест перейти к /luniversite/page-2 до завершения аутентификации? Если это так, вы можете использовать функцию перехвата вызова для проверки подлинности и дождаться его завершения:

 // get your authentication POST request from network tab of devtools and use that in the cy.intercept call    
cy.intercept('POST', '/yourAuthenticationCallUrl').as("@authenticationCall")
// YOUR LOGIN STEPS HERE
cy.wait("@authenticationCall") //waits for the authentication call to complete before moving to the next step
cy.visit("/luniversite/page-2", { timeout: 30000 });