Cypress - "Route" не работает после "Page Reload" - PullRequest
0 голосов
/ 09 января 2020

Cypress newb ie здесь!

В настоящее время я использую маршруты для большего количества кода, например:

cy.server()
cy.route('POST', '/**/updateUserProfileData').as('myrequest')

// perform tests here

cy.reload()
// revert changes from previous tests here     <<<FAILS HERE>>>

Есть идеи, почему это происходит?

1 Ответ

0 голосов
/ 09 января 2020

Я узнал, что случилось, и выкладываю это здесь, так как не нашел ответа где-либо еще.

Приложение, которое я тестирую, использует "Fetch" ... а не "XHR". Вначале я выполнил эту команду:

cy.visit(url, {
        // TODO remove this hacky workaround once Cypress supports intercepting "Fetch" (2019-December currently just supports "XHR")
        // Force polyfill to use XHR instead of Fetch
        onBeforeLoad: win => win.fetch = null
    })

При выполнении: "cy.reload ()" эта конфигурация исчезает, поэтому запросы / ответы возвращаются к "Fetch" вместо "XHR", как показано в «Консоли разработчика -> вкладка« Сеть »

enter image description here

=====================

Чтобы обойти это, я просто создал собственную команду в Cypress (в файле "command. js")

Cypress.Commands.add('refreshPage', () => {
    cy.location('href', { log: false }).then(url => {
        cy.visit(url, {
            onBeforeLoad: win => win.fetch = null
        })
    })
})

, которая при вызове просто вызывает "cy". Команда visit () "вместо перезагрузки, установив опцию« Извлечь в XHR », чтобы убедиться, что мы будем использовать« XHR ».

Вы можете вызывать свои пользовательские команды, например, так:

cy.refreshPage()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...