Commit Graph

45 Commits

Author SHA1 Message Date
Matt Schile c672581a71 perf: fix proxy correlation timeout issues (#28751) 2024-01-22 15:35:49 -07:00
Chris Breiding 650d5cb7da fix: Ensure basic auth headers are set on extra target requests (#28387) 2023-11-27 16:28:35 -05:00
Chris Breiding a0cfed5044 fix: "bypass" proxying network requests from extra browser tabs/windows (#28188)
Co-authored-by: Ryan Manuel <ryanm@cypress.io>
Co-authored-by: Matt Schile <mschile@cypress.io>
2023-11-02 13:55:13 -04:00
Ryan Manuel d9606868c5 fix: fix failures and correlation in proxy (#28094) 2023-10-23 16:08:05 -05:00
Ryan Manuel ff89ffa2b2 fix: proxy issues with service workers and clean up at end of specs (#28060) 2023-10-17 19:53:49 -05:00
Ryan Manuel ca6d30d7bf fix: force gzip when no accept encoding header is sent and use identity if gzip is not sent (#28026)
Co-authored-by: Chris Breiding <chrisbreiding@users.noreply.github.com>
2023-10-17 13:52:37 -05:00
Bill Glesias 2e092add12 perf: no longer pause every single request through CDP and only pause requests needed for AUT document [run ci] (#26623) 2023-07-21 13:38:35 -04:00
Matt Henkes dc80641d02 chore: telemetry pr cleanup (#26776) 2023-05-17 10:51:02 -05:00
Matt Henkes 50ffd5ee1d chore: add telemetry to the proxy (#26695)
* chore: set up instrumentation and instrument middleware

* chore: set up console exporter

* chore: add parent span option to telemetry package

* chore: set up telemetry verbose mode

* chore: instrument the network proxy - part 1

* chore: make sure to terminate spans when request is aborted

* fix telemetry, create/end the request middle prior to sending the outbound request

* avoid telemetry ts build step, create entrypoint into packages/telemetry using TS conventions

* allow env vars to be "true" or "1"

* when creating child span, inherit their attributes directly from the parent

* create custom honeycomb exporter and span processor to log traces

* remove duplicate code that's already called in this.setRootContext

* cleanup

* more clean up

* update honeycomb network:proxy attributes, update console.log message

* yarn lock

* chore: remove performance API in middleware

* chore: end response on correct event

* recursively gather parent attributes on close

* added key and some clean up

* github action detector, move verbose into index, verbose log commands

* some tests

* clean up honeycomb exporter

* some renaming

* testing console trace link exporter

* Don't lose the top span when running in verbose.

* link to the right place for prod/dev

* changes to verbose to make sure it is read in the browser

* Apply suggestions from code review

* pass parent attributes between telemetry instances

* default to false

* 'fix' build issues

* src not dist

* add back on start span

* once more with feeling

* Fix some tests

* try this i guess

* revert auto build

* Apply suggestions from code review

Co-authored-by: Bill Glesias <bglesias@gmail.com>

* support failed commands

* Address PR comments

* Address PR Comments

* error handling

* handle all the errors

---------

Co-authored-by: Bill Glesias <bglesias@gmail.com>
Co-authored-by: Brian Mann <brian.mann86@gmail.com>
2023-05-17 08:32:10 -05:00
Zach Bloomquist 039ebad220 feat(intercept): add { log: false } to StaticResponse (#25547)
* begin setting log with the backend

* revert backend changes

* update interface now that we are only doing static log

* change existing logging logic to run in proxy layer instead

* add tests, fix small bugs

run ci

* fix tests

* add changelog

* run ci

* run ci

* fix cl

run ci

* Update cli/CHANGELOG.md

---------

Co-authored-by: Matt Henkes <mjhenkes@gmail.com>
2023-03-14 08:54:46 -05:00
Bill Glesias d470f59ea2 feat: experimental skip domain injection (#25307)
* feat: set up experimentalUseDefaultDocumentDomain to disallow document.domain overwritting

* use default domain around experimentalUseDefaultDocumentDomain in main iframe and spec bridge iframes. Also adapt CORS policy to use same-origin if experimental flag is set

* run ci

* fix: add insertion of experimental flag where is was needed/missing

* chore: add system test to exercise experimental flag for expected behavior

* fix: fix issues with template updates to conform to squirrelly v7

* fix: update config tests to include new experimental flag

* run ci

* fix: trailing whitespace [run ci]

* chore: update snapshot

* run ci

* fix: update proxy unit tests to account for experimentalUseDefaultDocumentDomain

* run ci

* fix: Allow component tests with special characters in filepath (#25299)

feat: cut over experimental flag to take list of known problematic domains via string/glob pattern

run ci

chore: update system test and fix broken config

* fix: fix server unit and integration tests. integration tests should no longer use google to test against injection as we do not inject document.domain on google domains

* run ci

* run ci

* fix: server integration tests where google documents are expected to receive document.domain injection. Kept test same by changing URL

* run ci

* fix: update server test with mssing unupdated assertions

* run ci

* fix: turn off experimental flag by default while recommending sane defaults to users to configure

* run ci

* chore: fix typings [run ci]

* run ci

* chore: make experiment an e2e option only

* run ci

* chore: address comments in code review

* chore: rename experimentalUseDefaultDocumentDomain to experimentalSkipDomainInjection

* fix regression in shouldInjectionDocumentDomain utility function and add unit tests

* run ci

* chore: rename documentSuperDomainIfExists to superDomain [run ci]

* chore: address comments from code review

* chore: just pass opts through to policyForDomain

* run ci

Co-authored-by: Mike Plummer <mike-plummer@users.noreply.github.com>
2023-01-09 10:00:05 -05:00
Zach Bloomquist e02f6bf905 feat: add resourceType support to cy.intercept() on req/routeMatcher (#25075)
Co-authored-by: Bill Glesias <bglesias@gmail.com>
2022-12-14 17:40:53 +00:00
Chris Breiding e4be9697bd Merge branch 'develop' into merge-develop-v12-2022-11-14-take-2 2022-11-14 13:57:38 -05:00
Matt Henkes 23299acc88 fix: Disallow same-superdomain-origin cy.origin blocks (#24569)
* fix: throw error if the cy.origin origin is in the same superDomainOrigin as top.

* testing test tweaks

* 'fix' cypress in cypress tests

* Inject cross origin in google subdomains when not same-origin

* style tweaks

* Ensure strict same-origin check works for google.

* test fixes

* we don't need the location object when we just want the href.

* what is in a name?

* Address PR Comments
2022-11-09 08:29:27 -06:00
Matt Schile 69873ae988 chore: remove experimentalSessionAndOrigin flag (#24340)
BREAKING CHANGE: removed experimentalSessionAndOrigin flag. testIsolation defaults to strict
2022-10-24 08:49:13 -06:00
Bill Glesias 695dd275bc feat: same origin spec bridges (#23885)
* chore: enforce strict origin spec bridges

chore: refactor spec bridges to strictly enforce same origin

fix: wrap fullCrossOrigin injection around feature flag inside buffered response

* fix: do NOT set the initial cypress cookie inside the spec bridge as it is sending unecessary cookies

* chore: simplify the finding cypress in the injection code

* chore: change order in which callback fn is declared

* chore: add spec bridge performance issue to validation tests
2022-10-04 18:26:04 -04:00
Bill Glesias a41b104880 chore: simulated cookie fixes 1 (#24060)
* chore: add documentation to CDP,electron, and web extension for selected resource types

* chore: change nomenclature of X-Cypress-Request to X-Cypress-Is-XHR-Or-Fetch

* chore: remove no longer applicable comment for socket code

* chore: add comments to the resourceType/credential manager
2022-10-03 10:05:34 -04:00
Bill Glesias 11ed9a622b fix: misc review comments (#23971)
* chore: refactor credential manager into its own utility class and add basic unit tests

* chore: add firefox comments into the cookie jar
2022-09-27 17:11:30 -04:00
Bill Glesias 01ea821926 feat: implement simulated top req res middleware (#23888)
* test: add correct cookie_behavior assertions before work on server
(currently failing)

* chore: add types needed in the socket and middlewares

* feat: add socket code to server-base (no tests here) to be used in request/response middleware

* feat: fill out the ExtractCypressMetadataHeaders implementation

* feat: add attach cookie logic to requests based on xhr/fetch requests

* feat: add attaching cookies to response logic w/ tests

* Update packages/proxy/lib/http/request-middleware.ts

Co-authored-by: Matt Henkes <mjhenkes@gmail.com>

Co-authored-by: Matt Henkes <mjhenkes@gmail.com>
2022-09-23 10:04:45 -04:00
Bill Glesias 252ae5ae67 Merge branch 'develop' of github.com:cypress-io/cypress into feature/simulated-top-cookie-handling 2022-09-21 18:29:21 -04:00
Bill Glesias cd2fde9047 fix: misc cy origin cleanup (#23914)
* chore: remove cannot_visit_previous_origin error message as it is no longer used

* fix: wrap MaybeEndRequestWithBufferedResponse fullCrossOrigin check around feature flag
2022-09-21 16:14:19 -04:00
Bill Glesias 0c265638ce feat: add resource type header to CDP, extension, and electron (#23821)
* feat: add X-Cypress-Request header in extension

* feat: add X-Cypress-Request header in CDP

* feat: add X-Cypress-Request header in electron

* feat: add ExtractRequestedWithAndCredentialsIfApplicable middleware stub to remove the newly added x-cypress-request header

* chore: change defaultHeaders variable name to requestModifications to more accurately reflect usage

* chore: condense ExtractIsAUTFrameHeader and ExtractRequestedWithAndCredentialsIfApplicable into ExtractCypressMetadataHeaders middleware

* test: add anti assertion for x-cypress-request and remove setting request verbage (as it does nothing yet)
2022-09-18 22:28:32 -04:00
Bill Glesias b28bbcf56f feat: add MaybeSimulateSecHeaders code to prevent 403 issues with google (#23720) 2022-09-09 16:38:02 -04:00
Bill Glesias 9cdb33b4c6 fix: same site cookie context and duplicate cookies (#23438)
* test: refactor and add tests in the cors package

* fix: add areUrlsSameSite method to cookies package and fix
sameSiteContext calculation method and add tests

* fix: always use Set-Cookie optimistically whether or not we keep track of the cookie or not in the server side cookie jar

* chore: add failing unit tests for postpending cookies

* chore: add tough cookie integration tests to verify we append cookies appropriately to request header Cookie

* fix: do not duplicate cookies in request if existing in the cookie jar. Add additional tests to verify expected behavior

* test: add cookie behavior tests that document current expected behavior vs what spec behavior should/will be

* test: add misc tests that check for cookie order

* chore: update debug logs in request to discern cookies

* test: fix assertions in firefox as same-site cookies are actually set correctly

* fix test incorrect assertions. cookies currently exist in primary that are same-site regardless of browser

* skip SameSite=none test in firefox as we currently low insecure samesite none cookies in firefox

* chore: apply suggestions from code review

* chore: change expects to expect

* chore: add documentation for why we need an additional HTTPS port

* remove X-Set-Cookie fixmes
2022-09-07 23:19:52 -04:00
Chris Breiding a21c942ee4 fix: Improve cross-origin cookie handling (#22320) 2022-06-23 11:00:52 -04:00
Zach Bloomquist 86b277799d chore(proxy): improve debug log experience (#21489) 2022-05-16 21:35:31 +00:00
Bill Glesias bbd9e7f1b2 Merge branch 'develop' into md-10.0-merge 2022-04-29 10:39:54 -04:00
Matt Henkes 25af92134a chore: [Multi-domain] Rename isMultiDomain for the driver and the server (#20947)
* chore: [Multi-domain] Rename isMultiDomain for the driver and the server

* A couple more changes

* Update packages/driver/src/cy/commands/navigation.ts

Co-authored-by: Matt Schile <mschile@gmail.com>

Co-authored-by: Matt Schile <mschile@gmail.com>
2022-04-07 09:22:49 -05:00
Matt Schile fedb65c97c chore: (multi-domain) support multiple remote states (#20752) 2022-03-28 15:26:51 -06:00
Matt Schile 74dea8921e feat: (multi-domain) adding support for cy.visit in multi-domain (#20467) 2022-03-08 13:50:39 -07:00
Tim Griesser bfc032a2d4 fix: open browser at correct time during lifecycle (#19572) 2022-01-12 13:41:25 -05:00
Chris Breiding 2ee98938cd chore: Remove hardcoded domain for multi-domain (#19323)
Co-authored-by: Chris Breiding <chrisbreiding@gmail.com>
Co-authored-by: Bill Glesias <bglesias@gmail.com>
2022-01-12 07:23:34 -05:00
Zach Bloomquist 65cf6e899d fix: disable automatic request retries (#19161) 2021-12-08 22:27:19 +00:00
renovate[bot] 3095d733e9 feat(deps): update dependency electron to v15 🌟 (#18317)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Zach Bloomquist <git@chary.us>
Co-authored-by: David Munechika <davidam1203@gmail.com>
2021-11-09 20:52:17 +00:00
Lachlan Miller 5955544fc0 chore(server): share common routes (#18055) 2021-09-13 09:09:56 -04:00
Lachlan Miller ab401ecd35 chore: use import type syntax (#17864)
* chore: use import type across repo

* chore: use import type across repo

* chore: use import type across repo

* chore: use import type across repo

* update exports

* update test

* update import type

* update types

* use import type in driver

* correctly export function

* revert test

* remove unrelated code

* revert code

* improve type imports

* override for reporter
2021-08-25 09:11:56 +10:00
Zach Bloomquist 2454c19afb feat: proxy logging (#16730)
Co-authored-by: Chris Breiding <chrisbreiding@users.noreply.github.com>
2021-08-02 21:10:19 +00:00
Zach Bloomquist 66303f6331 chore: correlate proxied HTTP requests with browser pre-request data (#16835) 2021-06-09 18:39:51 +00:00
Zach Bloomquist cd22300cb5 feat(net-stubbing): add followRedirect to request interception (#8282) (#8524) 2020-09-08 13:11:35 -04:00
Zach Bloomquist c37896089b feat(net-stubbing): experimental full network mocking support (#4176) 2020-08-31 09:41:47 -04:00
Laís Tomaz 27e8c817d3 Rename configuration option blacklistHosts (#7622)
Co-authored-by: Jennifer Shehane <jennifer@cypress.io>
Co-authored-by: Brian Mann <brian.mann86@gmail.com>
2020-07-13 15:16:19 +06:30
Zach Bloomquist f7917a4c5b fix(proxy): don't use responseTimeout as timeout for all requests (#7787) 2020-07-06 10:41:41 -04:00
Zach Bloomquist 15c3e95429 Improve error experience when visiting outside of Cypress-launched browser (#6435)
* force websockets transport

* wip: ensure ws connections take place thru a known socket

* clean up yesterday's work

* remove dead code (request is undefined)

* update websocket tests

* add websocket tests

* update socket + server specs

* add token auth for file_server

* Fix cy.visit file_server

* restrict non-proxied URLs, serve error on runner URL non-proxied

* add e2e test for server splash page

* fix types

* use clientRoute, fix tests

* only run 6_non_proxied in electron

* use browser.path

* improve empty options type

* add ws assertions in e2e tests

* fix server_spec

* refactor socket whitelisting logic

* update server_spec

* respond to PR feedback

- added tests for non-clientRoute redirecting to clientRoute when not behind proxy
- cleaned up comments
- cleaned up logic in server.coffee
- moved error html to own file
- added unit test for socket whitelist + fixed removal bug
2020-02-14 16:21:36 -05:00
Chris Breiding d76123b3d9 Add Firefox support (#1359)
Co-authored-by: Ben Kucera <14625260+Bkucera@users.noreply.github.com>
Co-authored-by: Gleb Bahmutov <gleb.bahmutov@gmail.com>
Co-authored-by: Brian Mann <brian.mann86@gmail.com>
Co-authored-by: Zach Bloomquist <github@chary.us>
Co-authored-by: Jennifer Shehane <shehane.jennifer@gmail.com>
2020-02-06 10:52:13 -05:00
Zach Bloomquist b0378dc04e Refactor proxy into own package, implement middleware pattern (#5136)
* renames

* Refactor proxy into own package, implement middleware pattern

don't need these mocha opts anymore

fix test

no more zunder

READMEs

fix test

* pass request by reference

* fix cors path

* Move replace_stream to proxy, concat-stream util in network

* Pin dependency versions

* Revert addDefaultPort behavior

* Add READMEs for proxy, network

* Update README.md

* eslint --fix

* set to null not undefined

* use delete and bump node types

* import cors from package now

* parse-domain@2.3.4

* proxy package needs common-tags

* move pumpify dep

* load through where it's needed, remove unused passthru_stream

* remove unneeded getbuffer call


Co-authored-by: Gleb Bahmutov <gleb.bahmutov@gmail.com>
2019-11-27 19:16:15 -05:00