在angularjs 1.7应用上运行的赛普拉斯仅捕获第一个XHR请求

时间:2019-01-21 10:29:23

标签: angularjs xmlhttprequest cypress

我们刚刚开始尝试将Cypress作为E2E测试运行程序实施到我们的angularjs 1.7应用中,但是我们一直遇到Cypress捕获XHR请求的问题。

Cypress将捕获最初打开Cypress时发出的第一个XHR请求,或cy.reload()之后的第一个XHR。但是,尽管明显在Chrome开发工具中已关闭,但仍未捕获任何其他XHR请求,如屏幕截图所示。下方:

这显示了最初打开赛普拉斯并运行两个测试的结果。您可以看到第一个XHR被捕获,而第二个则没有:

https://ibb.co/5kjNDTm

这显示单击重新加载测试按钮后再次运行相同的测试,并且没有捕获与先前运行的相同测试的XHR:

https://ibb.co/VQCxYhv

下面是测试文件中运行的代码:

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事件的可能方法吗?

非常感谢您的帮助。

0 个答案:

没有答案