Перехват кипариса

#javascript #automation #cypress #intercept

Вопрос:

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

1 — посещение: https://opensource-demo.orangehrmlive.com 2 — введите учетные данные для входа 3 — по нажатию кнопки l0gin «Я должен подтвердить введенное имя пользователя» с помощью метода перехвата. Ниже приведен мой код

 describe("cypressAssignment", ()=>{
it('Login a user and validate his name via intercept', ()=>{

    cy.intercept('POST', '/auth/login', (req) => {
        expect(req.body).to.include('Admin')
    }).as('username')
      
    cy.visit('https://opensource-demo.orangehrmlive.com')

    
    cy.get('form').within(($form)=>{
        cy.get('#divUsername').type('Admin')
        cy.get('#divPassword').type('admin123')

        cy.get('#btnLogin').click()

    })
  cy.wait('@username').its('response.body').should('to.have.property', 'name').and('include', 'Admin')

   

    cy.url().should('include','dashboard')
   

})
 

Ответ №1:

Я бы пошел на что-нибудь подобное. )Обновлено на основе дополнительной информации в разделе комментариев.)

 it('SO Answer', () => {
    cy
      .visit('/');

    cy
      .intercept('POST', '**/auth/validateCredentials')
      .as('loginRoute');

    cy
      .get('#txtUsername')
      .type('Admin');

    cy
      .get('#txtPassword')
      .type('admin123');

    cy
      .get('#btnLogin')
      .click();

    cy
      .wait('@loginRoute')
      .its('request.body')
      .should('include', 'txtUsername=Admin');
});
 

Чтобы просмотреть весь тестовый случай в программе выполнения тестов:

введите описание изображения здесь

Приложение отображает HTML на стороне сервера, поэтому ответом на действие входа в систему является перенаправление на 302 /index.php/dashboard и полный HTML, отправленный в ответе, поэтому в этом случае вы не можете проверить имя пользователя в ответе.

Комментарии:

1. Спасибо вам за ваш любезный ответ. На самом деле я должен сделать простую вещь. 1 — посетите этот URL-адрес : opensource-demo.orangehrmlive.com 2 — Введите учетные данные для входа 3 — По нажатию кнопки входа в систему «для подтверждения имени пользователя» с помощью перехвата.

2. @Hassan Я обновил свой ответ. Это работает, если вы просто скопируете и вставите его, хотя я не советую этого делать. Попробуйте понять, как работает приложение и как работает Cypress.

3. Вы чемпион, сэр 🙂 Огромное спасибо Спасибо вам за ваш добрый совет.

Ответ №2:

Это то, что я сделал после вашего ответа @pavelsaman. Теперь у меня появляются идеи, как играть с перехватом:

 describe("cypressAssignment", ()=>{
it('Login a user and validate his name via intercept', ()=>{

    cy.intercept('POST','**/auth/validateCredentials', (request) => { expect(request.body).to.include('txtUsername=Admin')
    })

    cy.visit('/')
    
    cy.get('form').within(($form)=>{
        cy.get('#txtUsername').type('Admin')
        cy.get('#txtPassword').type('admin123')
        cy.get('#btnLogin').click()

    })
})