Тестирование ReactJS + Cypress E2E - PullRequest
0 голосов
/ 01 апреля 2019

быстрый вопрос для всех, кто имеет опыт работы с React + Cypress - я пишу свой первый набор тестов E2E и вот что меня беспокоит:

cy.visit('http://movinito.docker.localhost:3000/company/subcontractors');

работает, но

cy.visit('/company/subcontractors');

не работает должным образом (перенаправляет меня на панель мониторинга после входа в систему и остается там, когда я пытаюсь указать путь, включающий «субподрядчиков»).

мой baseUrl в cypress.json равен

{"baseUrl": "http://react_frontend.movinito.docker.localhost:3000"}

и это обычно работает (в случае, если вы об этом подозревали).

Я бы хотел использовать более короткую и приятную версию cy.visit('/company/subcontractors'); вместо длинного сложного повторного типа baseUrl ...

Может быть важно добавить, что до .visit я использую

cy.request('POST', 'http://movinito.docker.localhost/user/login?_format=json', {name,pass});

чтобы [успешно] войти в систему ... Как я уже сказал, все работает, но я не могу использовать baseUrl и вынужден использовать команду .visit с полным URL-адресом на основе окружения ...

Вот [полный] полный тестовый код

   describe('Subcontractors section', ()=> {
        it('renders properly', ()=> {
            const { name, pass } = {name: 'info@batcave.com', pass: '123#456'}

            cy.request('POST', 'http://movinito.docker.localhost/user/login?_format=json', {
                name,
                pass
            });

            cy.visit('http://movinito.docker.localhost:3000/company/subcontractors');
//    
// I want to replace the above line with cy.visit('/company/subcontractors')
//
            cy.location('pathname').should('include', '/company/subcontractors');
            cy.get('[data-cy=page-title]').should('have.text', 'Subcontractors');
        })
    });

1 Ответ

1 голос
/ 01 апреля 2019

хм, я прочитал документацию о visit () и request (), это должно работать до:

describe('Subcontractors section', ()=> {
  it('renders properly', ()=> {
    cy.visit({
      url: 'http://movinito.docker.localhost/user/login?_format=json',
      method: 'POST',
      body {
        name,
        pass
      }
    })

    cy.visit('/company/subcontractors')
    cy.location('pathname').should('include', '/company/subcontractors')
  })
});

// cypress.json
{
  "baseUrl": "http://react_frontend.movinito.docker.localhost:3000"
}
...