我们刚刚开始尝试将Cypress作为E2E测试运行程序实施到我们的angularjs 1.7应用中,但是我们一直遇到Cypress捕获XHR请求的问题。
Cypress将捕获最初打开Cypress时发出的第一个XHR请求,或cy.reload()之后的第一个XHR。但是,尽管明显在Chrome开发工具中已关闭,但仍未捕获任何其他XHR请求,如屏幕截图所示。下方:
这显示了最初打开赛普拉斯并运行两个测试的结果。您可以看到第一个XHR被捕获,而第二个则没有:
这显示单击重新加载测试按钮后再次运行相同的测试,并且没有捕获与先前运行的相同测试的XHR:
下面是测试文件中运行的代码:
describe('Login page', function(){
beforeEach(function(){
cy.server();
cy.route('**/self_configure?subdomain=syn**', 'fx:self_config_init.json').as('self_config_init');
cy.route('**/team?username=synthetixtest**', 'fx:team_login.json').as('team_login');
cy.visit('login');
cy.wait('@self_config_init');
})
describe('Feedback link', function() {
it('Checks the feedback link', function() {
// Tests link opens in a new tab
cy.get(".log_feedback_link a")
.should('have.attr', 'target', '_blank')
.should('have.attr', 'href', 'https://projectshiva.typeform.com/to/yZBMQo');
// Tests popup closes
cy.get(".log_feedback_close").click().wait(50);
cy.get('.log_feedback_box').should('not.be.visible');
})
})
describe('Logging in', function() {
it('Initial log in of day', function() {
cy.get('#syn_login_username').type('synthetixtest');
cy.get('.log_username_section > .form_frame > .syn_cp_link_button').click().wait(50);
cy.get('#syn_login_username').should('not.be.visible');
cy.wait('@team_login').then((team) => {
cy.get('.user_log_image > img').should('have.attr', 'src', team['response']['body']['teammates'][0]['avatar']);
})
})
})
})
无论我们是否有服务器/路由/存根,赛普拉斯似乎都没有捕获XHR事件。这些事件都不是获取请求。
有人能暗示这里可能发生什么,以及使赛普拉斯捕获这些XHR事件的可能方法吗?
非常感谢您的帮助。