对于任何有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');
})
});
嗯,我阅读了有关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"
}