Разделите тестовый код в Cypress на блоки кода - PullRequest
0 голосов
/ 03 февраля 2020

Мы написали кипарис-тесты, которые теперь хотим разделить на блоки кода. Перед запуском делите код, все тесты выполнялись соответствующим образом и прошли. Но с тех пор, как мы перешли на блоки, мы начали получать ошибки об аутентификации 401.

Это правильный синтаксис для блоков кода в Cypress?

/* eslint-disable no-undef */

describe('Log in', () => {

    it('Successfully loads', function () {
        cy.visit('/')


            .get('input[type="email"]')
            .type('XXXX')
            .get('input[type="password"]')
            .type('XXXX')
            .get('[style="text-align: center;"] > .ui').click()
    })


    describe('The Assignments Page', () => {
        it('Add Assignment', function () {
            cy.get('[href="/assignments"]').click()
            cy.get('.grey').click()
            cy.get('.ui > .search').type('Astra Zeneca')
            cy.get(':nth-child(2) > .ui > input').type('System Development')
            cy.get('textarea').type('This is a short text')
            cy.get(':nth-child(4) > .ui').click()
            cy.get('a.ui').click()
        })
    })

1 Ответ

1 голос
/ 03 февраля 2020

Это имеет смысл :) Во втором тестовом блоке «Страница назначений» вы не вошли в систему. Вы должны войти, используя beforeEach ловушку в каждом тестовом блоке. В Cypress каждый тест выполняется на чистом холсте, чтобы гарантировать отсутствие ошибок предыдущих тестов при следующем тесте. Означает, что вы ДОЛЖНЫ войти в систему перед каждым тестом. Вот почему вам нужен beforeEach hook.

Также здесь рекомендуется входить программно, т.е. вместо того, чтобы нажимать поле ввода и вводить (cy.type) отправьте запрос на вход в систему с помощью cy.request и проверьте, успешно ли выполнен ответ.

Пример кода входа в систему в beforeEach:

beforeEach(() => {
   cy.request({
          method: "POST",
          url: '<YOUR LOGIN ENDPOINT>',
          body: {
              email: <VALUE>,
              pass: <VALUE>
          },
          form: true
        }).then(response => {
          expect(response.status).to.eq(200);
          expect(response.body.success).to.be.true;
       });
   };
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...