ReactJS +赛普拉斯E2E测试

问题描述 投票:0回答:1

对于任何有React + Cypress经验的人来说,这是一个快速的问题 - 编写我的第一组E2E测试,这里有什么问题困扰我:

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

有效,但是

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

不能按预期工作(登录后将我重定向到仪表板,当我尝试断言路径名包括'分包商'时,我会停留在那里)。

我在cypress.json中的baseUrl是

{"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命令和基于environement的完整url ...

这是[工作]完整的测试代码

   describe('Subcontractors section', ()=> {
        it('renders properly', ()=> {
            const { name, pass } = {name: '[email protected]', 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');
        })
    });
reactjs e2e-testing cypress
1个回答
1
投票

嗯,我阅读了有关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"
}
© www.soinside.com 2019 - 2024. All rights reserved.