-
Notifications
You must be signed in to change notification settings - Fork 3.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
cy.intercept
StaticResponse headers cannot contain content-encoding
other than compress
#16420
Comments
Reproducible exampleit('✅ works with a static response without "content-encoding"', () => {
cy.intercept('/users', {
body: 'response body content',
headers: {}
}).as('getUrl')
cy.visit('https://example.com')
cy.window().then((win) => {
const xhr = new win.XMLHttpRequest()
xhr.open('GET', '/users')
xhr.send()
})
cy.wait('@getUrl').its('response.body').should('equal', 'response body content')
})
it('✅ works with a static response with "content-encoding" set to "compress"', () => {
cy.intercept('/users', {
body: 'response body content',
headers: {
'content-encoding': 'compress',
}
}).as('getUrl')
cy.visit('https://example.com')
cy.window().then((win) => {
const xhr = new win.XMLHttpRequest()
xhr.open('GET', '/users')
xhr.send()
})
cy.wait('@getUrl').its('response.body').should('equal', 'response body content')
})
it('❗️fails with a static response with "content-encoding" set to another value than "compress"', () => {
cy.intercept('/users', {
body: 'response body content',
headers: {
'content-encoding': 'gzip', // content-encoding causes this to fail
}
}).as('getUrl')
cy.visit('https://example.com')
cy.window().then((win) => {
const xhr = new win.XMLHttpRequest()
xhr.open('GET', '/users')
xhr.send()
})
cy.wait('@getUrl').its('response.body').should('equal', 'response body content')
}) |
This was planned anyway to keep fixtures stable. But also turned out to be required due to a bug: cypress-io/cypress#16420
…ixtures (#176) * fix(network-shim): ensure in-test fixtures are used instead of shim fixtures The core issue was fixed by upgrading cypress to v7, which includes the correct overriding behaviour for `cy.intercept`. Due to the major version bump, capturing and stubbing requests stopped working, and this was fixed by passing regexes to cy.intercept instead of strings. A new test was introduced to the network-shim example-app to assert the in-test fixtures take presidence over the networkshim fixtures. BREAKING CHANGE: bumps cypress 1 major version, to v7 * fix(network-shim): filter request and response headers properties This was planned anyway to keep fixtures stable. But also turned out to be required due to a bug: cypress-io/cypress#16420 * fix(network-shim): disable auto-login during stub run * fix(network-shim): add 'system/info' resource to static resources list * feat(network-shim): run tests suite on CI * docs(network-shim): add info about the network-shim test suite * chore(network-shim): add command to locally run full e2e suite * docs(network-shim): add info reg troubleshooting and local full test run * chore(cy local): run build command before cypress commands Co-authored-by: Jan-Gerke Salomon <jgs.salomon@gmail.com>
# [8.0.0-alpha.1](v7.0.1...v8.0.0-alpha.1) (2021-05-18) ### Bug Fixes * **network-shim:** ensure in-test fixtures are used instead of shim fixtures ([#176](#176)) ([84a1907](84a1907)) ### BREAKING CHANGES * **network-shim:** bumps cypress 1 major version, to v7 * fix(network-shim): filter request and response headers properties This was planned anyway to keep fixtures stable. But also turned out to be required due to a bug: cypress-io/cypress#16420 * fix(network-shim): disable auto-login during stub run * fix(network-shim): add 'system/info' resource to static resources list * feat(network-shim): run tests suite on CI * docs(network-shim): add info about the network-shim test suite * chore(network-shim): add command to locally run full e2e suite * docs(network-shim): add info reg troubleshooting and local full test run * chore(cy local): run build command before cypress commands Co-authored-by: Jan-Gerke Salomon <jgs.salomon@gmail.com>
# [8.0.0](v7.0.1...v8.0.0) (2021-06-10) ### Bug Fixes * **network-shim:** ensure DHIS2_BASE_URL is available in localStorage ([#214](#214)) ([741ab4b](741ab4b)) * **network-shim:** ensure in-test fixtures are used instead of shim fixtures ([#176](#176)) ([84a1907](84a1907)) * **network-shim:** fix before hook bug ([#201](#201)) ([0e1cd4c](0e1cd4c)) * **network-shim:** only incrementally update missing request stub state ([#209](#209)) ([e2ccea8](e2ccea8)) * **network-shim:** report missing stubs if at least one is found ([#208](#208)) ([45b3331](45b3331)) * **network-shim:** use electron instead of chrome for runs ([#213](#213)) ([ae73686](ae73686)) ### chore * remove node 10 support ([6245ef2](6245ef2)) ### Code Refactoring * **install command:** combine network shim command & plugin options ([4bc9a4e](4bc9a4e)) * drop the app-start flag ([9674d87](9674d87)) * simplify cypress-plugin and cli-utils-cypress ([dc58462](dc58462)) * wait for baseUrl to become available ([745194f](745194f)) ### Features * **enable auto login:** add option to install command ([e9dde4e](e9dde4e)) * **install cmd:** warn about potentially missing peer depds (temporarily) ([c3046aa](c3046aa)) ### BREAKING CHANGES * **install command:** The two options are merged into one, which is now called "enableNetworkShim". * New minimum version for NodeJS is 12.x. * Drop run and open commands We want to be consistent with how Cypress runs locally and in CI and since we cannot use d2-utils-cypress in CI, we shouldn't run it through d2-utils-cypress locally either. * Change configuration keys to camelCase. - dhis2_username => dhis2Username - dhis2_password => dhis2Password - dhis2_base_url => dhis2BaseUrl - dhis2_datatest_prefix => dhis2DataTestPrefix - dhis2_api_version => dhis2ApiVersion * dhis2_api_stub_mode renamed to networkMode Instead of describing the mode of the plugin, it is a bit easier to understand if we speak in terms of the network: - do we want to capture the network traffic (networkMode=capture), - do we want to stub it (networkMode=stub), - or do we want to run it against a live backend (networkMode=live)? * 'DISABLED' renamed to 'LIVE' To better describe the state of the network when running tests instead of describing the state of the plugin, DISABLED is now LIVE. * isDisabledMode renamed to isLiveMode. Similar to the above, to better describe the state of the network vs. the state of the plugin, replace usages of isDisabledMode with isLiveMode. * 'CAPTURE'|'STUB'|'LIVE' are now lowercase when passed to the environment. Replace networkMode=LIVE with networkMode=live. * Drop the --waitOn flag As of now we wait on the baseUrl that is defined in cypress.json, as that is the URL that the tests are going to run against. * Drop support for the --appStart flag. As a consumer, you are expected to either use something like concurrently to run the app server and the cypress server in a single process, or run then manually in two separate processes. This is no longer done automatically. * **network-shim:** bumps cypress 1 major version, to v7 * fix(network-shim): filter request and response headers properties This was planned anyway to keep fixtures stable. But also turned out to be required due to a bug: cypress-io/cypress#16420 * fix(network-shim): disable auto-login during stub run * fix(network-shim): add 'system/info' resource to static resources list * feat(network-shim): run tests suite on CI * docs(network-shim): add info about the network-shim test suite * chore(network-shim): add command to locally run full e2e suite * docs(network-shim): add info reg troubleshooting and local full test run * chore(cy local): run build command before cypress commands Co-authored-by: Jan-Gerke Salomon <jgs.salomon@gmail.com>
This error still persists in v10 which unfortunately makes it impossible for me at the moment to mock network network requests for mapbox-gl |
This issue has not had any activity in 180 days. Cypress evolves quickly and the reported behavior should be tested on the latest version of Cypress to verify the behavior is still occurring. It will be closed in 14 days if no updates are provided. |
This issue has been closed due to inactivity. |
Current behavior
A network error is produced and stubbing fails when setting the
content-encoding
header of the static-response-object to a value other thancompress
.Desired behavior
I ran into this issue when building a tool that captures and stubs network request. I was simply storing the responses I was intercepting as fixtures. I was hoping that I could simply return these fixtures later on but that turned out not to be the case, because the intercepted response headers contained a
content-encoding
field with valuegzip
and this caused the issue above.I suspect the root of the problem could be that the proxy server cypress uses to intercept network requests uses
compress
ascontent-encoding
.Ideally the desired behaviour would be that we can specify whatever
content-encoding
we want.At the very minimal, I would expect a very clear note in the docs, here.
Test code to reproduce
I have produced a minimal reproduction case here. The problem is illustrated in the last test, specifically see lines 32-34 in
cypress/integration/spec.js
:Versions
7.0.2
The text was updated successfully, but these errors were encountered: