* 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>
* 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
* chore: refactor originPolicy to use superDomainOriginPolicy nomenclature and add sameSite/superDomainOrigin policy functions and make originMatch functions match fully same origin policy including sub domains
* chore: change doesAutMatchTopSuperOriginPolicy to doesAUTMatchTopSuperDomainOriginPolicy
* chore: rename originPolicy references to just be origin. Rename superDomainOriginPolicy to superDomainOrigin
* fix: remove duplicate origin keys and add check for remote.origin to return null
* chore: further rename variables to fit origin paradigm
* chore: remove latestActiveSuperDomainOrigin as it is no longer used
* fix: key order in consoleProps yielded test
* remove isAnticipatingCrossOriginResponse as it is no longer available
* chore: update documentation to urlMatchesSameSiteProps to show why the strictPortMatch is an option
* chore: refactor cors package to use a single parse function and update unit tests
* chore: refactor getOrigin to use url origin
* chore: update same-site documentation to now be dependent on cookies
* chore: update same-site policy to be schemeful-same-site policy as we consider protocol mismatches to be not same-site
* 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
Skips flaky test:
```
1) lib/client-certificates loads cert files detects invalid PEM key passphrase:
AssertionError: expected [Function: act] to throw error including 'Cannot decrypt PEM key with supplied passphrase (check the passphrase file content and that it doesn\'t have unexpected whitespace at the end)' but got 'Failed to load client certificates for clientCertificates[0]: Cannot parse PEM key: Only 8, 16, 24, or 32 bits supported: 352. For more debug details run Cypress with DEBUG=cypress:server:client-certificates*'
+ expected - actual
-Failed to load client certificates for clientCertificates[0]: Cannot parse PEM key: Only 8, 16, 24, or 32 bits supported: 352. For more debug details run Cypress with DEBUG=cypress:server:client-certificates*
+Cannot decrypt PEM key with supplied passphrase (check the passphrase file content and that it doesn't have unexpected whitespace at the end)
at Context.<anonymous> (test/unit/client_certificates_spec.ts:386:47)
at processImmediate (internal/timers.js:462:21)
```
https://app.circleci.com/pipelines/github/cypress-io/cypress/22260/workflows/043dddbc-1095-4a98-bd32-3606e59e65ce/jobs/816365
It seems to be a race condition, but I can't pin down where. Everything is synchronous...
cc @GCHQDeveloper911
* enable using yarn
* enable lerna and yarn workspaces
No longer can reliably access node_modules via thei node_modules directory; yarn may optimize it via hoisting it up. This meant updating JS tasks that were copying files directly from node_modules directories. In these cases, pulled in a new package to resolve these correctly.
SCSS files remain impacted, but cannot easily import via JS. These paths have been modified, but it feels dangerous and incorrect to reach into a node_module to grab files like this.
Many prebuild steps were removed. I **think** the purpose of `check-deps-pre` is no longer needed, but need to confirm this.
* enabling test-unit script
removal of pretest-unit due to check-deps-pre
* removal of all `check-deps` and `check-deps-pre`
I do not think these are needed anymore
* remove npm run all
Replaced by `lerna run` and `lerna run --scope`
* use yarn in circle CI
appveyor to soon follow
* yarn in appveyor
* remove need for bin-upplaces using bin-up have a dev dependency on some package; mostly mocha. This mocha package will be optimized by yarn workspaces by hoisting it into the root; which is effectively what bin-up usage was mimicing.
* replace npm run with yarn in package files
* replace explict paths to internal packages with yarn bin
* remove unecessary link packages script and references
* properly require package for mocha
* removing yarn test in this package as it was just a proxy for test-*
* yarn test in root now reflects what is run in circle ci
* relax yarn version requirement for circle ci
* @packages/cli is really just cypress
also run test in parallel via `yarn test`; it runs test in all 10 packages
* ensure postinstall is called before prebuild
yarn does not call postinstall when nothing has installed; such is the case when everything has been cached
* vscode config uses yarn
* cannot rely on which node_modules dir a package is in
find the right node_module dir via `resolve-pkg`
* further relax yarn version for OSX build in circle ci
* resolve failing test
Regarding direct access to node_modules
* node version in mac build not sufficient
ignoring check of node/yarn versions when installing
* preinstall script does not exist
I **think** the reason to not install packages' modules (the reason for `--ignore-scripts` may be irrelevant with yarn workspaces managing the packages)
* upgrade mocha that was using --file
`--file` was introduce in >=5
* scope test runs to correct packages
* explictly close connections; otherwise script hangs after tests run
* refactor so npm and npx commads can be created
npx is used to utlize lerna for running across all packages sans cli
* properly resolve socket.io-client node_module
We cannot reach directly into node_modules to grab the socket.io-client file. Furthermore, running it locally will require resolving from a different cwd, the repo root, as opposed to the package's dist directory.
The existence of the file deterimes whether we are building the binary or running locally.
* remove unnecessary arg in vscode debug config
enable debugging in @packages/server to troubleshoot failing test
* another npm command found to be changed to yarn
* properly print colors to terminal
`lerna run` does not appear to print colors to the terminal properly. Changed to leverage `lerna exec`
See https://github.com/lerna/lerna/issues/1168
* add missing test scripts to packages that have partially have them
'test', 'test-unit', 'test-watch', and 'test-debug'
This makes running them from the root easier and enables debugging via IDE on more packages
* properly patch package in yarn workspaces
* another package needing to postinstall
* use existing script over explicit lerna exec
* patches must be copied to dist
* return to building on postinstall
* do not hoist driver's packagesThere are too many places we need driver's packages to not be hoisted when testing. We have *.html files in test with script tags srcing node_modules.
* wait-on is used in circle-ci and needs to be a root dep
No longer hoisted by `@packages/driver`. This previously worked only because it was hoisted. Adding it to root properly.
* update documentation based on new ergonomics
* launcher has unit tests that should be runnable via top level task
* more concise way to run build within cypress scope
* fix for unit test that never seemed to work
`getPathToExample` is really `getPathToExamples`
* bust cache based on yarn.lock changing
* define intra-dependencies among packages
Due to the way we build the binary, all are considered dev dependencies.
* address `jquery.scrollto` mismatched jquery version
Tell yarn to explicitly resolve `jquery@3.1.1` for any dependencies and sub-dependencies. The root issue is that `jquery.scrollto` package specifies jquery as a dependency instead of a peer dependency (which is correct). Its jquery version is set to the `>=1.8` which then resolves to 3.4.1. In doing so, it will patch its jquery instead of ours; meaning that `$.scrollTo` is not defined.
* add/remove deps from renovate
- bin-up is gone in favor of yarn workspaces and lerna from root
- check-deps is gone in favor of `yarn check --integrity`
- lerna added
* few misc yarn lock updates
* hope that this may speed up build binary
installing several of the same dep in >1 package will likely be sped up using yarn due to its machine-wide caching.
* yarn pack prefix version with a `v`
* auto-run `yarn install` when deps become out of date
When switching to a branch with a different set of required deps, running any of the main top level tasks (as seen in the `./CONTRIBUTING.md` guide) will check for deps changes via `yarn check --integrity` and run `yarn` in root if deps are out of sync.
* add clean top level task, remove prebuild
install => build => prebuild => check => install === no good
* address code review to undo formatting changes
* favor default imports over deconstructing imports
* favor @package resolution; pr feedback
* include a specific revision
for some reason, it cannot resolve the original SHA `29dafed297142d3b8a9d8a01842cbdf249a98b72`
using the next closes SHA
* properly cache yarn packagesfollowed guide: https://circleci.com/docs/2.0/yarn/
* lower barrier for contributors to get started
relax node version to be 12.0.0 or higher; will use node version found in `.node-version` in CI
* updates required after merging latest development
was getting type errors when building. recreating the `yarn.lock` file seemed to resolve the issue.
* hidden dep on a specific type version in server
made dep explicit and now it can build.
* update request to patched version
non-breaking changes to request was updated in server, but not everywhere else. It appears that transitive deps were using the 2.88.0 request version instead of the updated one for the server package.
* missing commit from previous commit/merge
* do not force a higher version of yarn than the default on circleci
* exclude e2e.js helper from stop-only command
* trying to bust node_modules cache.https://github.com/yarnpkg/yarn/issues/6412#issuecomment-537787740
* incorrect quotation tick placement
* fix: properly postinstall parse-domain
Do not explicitly script the shell invocation of a dependency's postinstall (parse-domain). The dependency's node_modules may not be where the package thinks they are and are not properly resolved.
It appears that postinstall will automatically be called when installing with yarn.
* run all CI stages
* fix win-appveyor-build.js
* Update CONTRIBUTING.md
Co-Authored-By: Zach Bloomquist <github@chary.us>
* Update CONTRIBUTING.md
Co-Authored-By: Zach Bloomquist <github@chary.us>
* Update CONTRIBUTING.md
Co-Authored-By: Zach Bloomquist <github@chary.us>
* Server package watching a specific test works correctly.
* PR feedback
* Correctly use yarn to pack (to get package size)
* correct size calculation
`yarn pack` does not output the file name like `npm pack` does. Correct this by explictly setting the filename.
* PR feedback
* PR feedback
* update readmes and testing commands from them
* do not include this in default build
* yarn is now installed by default
https://github.com/appveyor/ci/issues/1852
* do not include server in `yarn` auto build
* a few more npm references changed to yarn
* Revert "run all CI stages"
This reverts commit 9256aed99f.
* Update circle.yml
Co-Authored-By: Zach Bloomquist <github@chary.us>
Co-authored-by: Zach Bloomquist <github@chary.us>
* 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>
* fix specs
* use debugger protocol for cookie handling in electron
* use latest gulp
* use rimraf instead of gulp-clean
* use electron 3.1.8 and node 10.2.1
* use gulp 4 in packages/static
* fix sendCommandAsync, log Schema.getDomains on CDP connect
* autofill e2e test name [skip ci]
* electron@5.0.7, see what new failures exist
* --no-sandbox for launching Electron
* update cookies logic for electron
* node 12
* update snapshot for new node
* update error message for new node
* stub sendCommandAsync
* only connect to socket if path has been replaced, fixes#4776
* update node-sass to support node 12
* skip wacky socket tests for now
* snapshot
* fix run_plugins_spec snapshot, don't include stack trace
* use --no-sandbox on linux to run as root
* allow sendCommandAsync to resolve
* use euid for root check
* log domains even if undefined
* don't worry about ending 1xx responses immediately anymore
* use --max-http-header-size, change max size from 8kb to 1mb, fix#76
* do not send 502 on failed websocket, just send back ECONNRESET
* update websocket spec port to not collide with other test
* update outdated expect
* Revert "only connect to socket if path has been replaced, fixes#4776"
This reverts commit f179eda5ca.
* update gulp in root
* update https-proxy unit tests
* update network spec to properly close server
* update reporter spec
* update https-proxy-agent to fix node 10.10.0 change
discussion: https://github.com/nodejs/node/issues/24474\#issuecomment-511963799
* only pass --max-http-header-size on node >=12
* use own server-destroy implementation that supports secureConnect events
* oops
* update socket_spec
* electron 6.0.0
* console.table introduced in node 10
* change browserify entry to init.js
* handle edge case when no response body
* console.table added in node 10
* do not exit app when all BrowserWindows are closed
* update e2e snapshots
* value may not be null
* update plugins spec
* correct cookie expiry, use browser.getversion for CDP version check
* fix snapshotting for require stacks
* reorder cookies in spec
* warn when depreated electron callback apis are used
* only report 1 plugin error per process
* cleanup
* node 12.4.0, cypress/browsers:node12.4.0-chrome76 docker image
* update shell.openExternal to promisified
* update dialog.showOpenDialog to promisified
* update webContents.session.setProxy to promisified
* updating native dependencies since we don't need ancient node ABI support anymore
* WIP: switch cookies to simpler, jar-less approach
* WIP: switch cookies to simpler, jar-less approach
* making tests pass
* improve cookie filtering logic
* Remove unneeded Promise.try
* filter what makes it to the extension
* properly re-set superdomain cookies on cross-origin cy.visit
* allow comma-separated list of e2e tests
* sort cookies in order of expiration date, ascending
* updating tests, cleanup
* update tests
* version electron as a devDependency, electron@6.0.1
* cleanup, remove old automation
* cleanup, remove old automation
* bump chokidar to fix win10 + node12 issue
was seeing this on windows:
https://github.com/nuxt/nuxt.js/issues/6035
fixed with version bump
* enable now-supported quit role, re-enable old tests
* don't need that arg there
* remove last deprecated callback electron invocations
* Delete cypress.json
* responding to PR feedback
* cleanup
* invoke
* use 'quit' role
* Use new appMenu role for Cypress menu on mac
* electron@6.0.2
* electron@6.0.3
* remove domain: cookie.domain and see what happens
* remove setErrorHandler
* Revert "remove domain: cookie.domain and see what happens"
This reverts commit 49e916896d.
* add unit tests for cookies
* ci
* fix project-content css
* electron@6.0.4
* fix specs_list test
* electron@6.0.7
* some cleanup
* electron@6.0.9
* Update 8_reporters_spec.coffee.js
* electron@5.0.10 - Chromium 73, Node 12
* cli: fix the STDIN pipe on Windows (#5045)
* cli: pipe stdin
* uggh, here is the actual change
* update cli unit tests
* add unit test
* more permissive check for json to include application/vnd.api+j… (#5166)
* more permissive check for json to include
* add json test for content-type application/vnd.api+json
* cruder solution passes e2e tests locally, so let's go with that
* Remove 'charset' from content-type before checking if JSON
* fix eslint for fixture specs (#5176)
* update eslint to lint files within 'fixtures' in support files
- ignore some edge cases like jquery, jsx and obvious js files we wrote
with broken code
* Fixes from eslint to 'fixtures' files
* Catch env variable with reserved name CYPRESS_ENV 1621 (#1626)
* server: check CYPRESS_ENV variable when merging configs
* catch invalid CYPRESS_ENV value in CLI, close#1621
* linting
* sanitize platform in test snapshot
* linting
* update error message text
* add missing comma
* fix finally merge in JS code
* pass CLI linter
* fix log reference, should be debug
* use correct sinon reference
* update message, show first part in red
* update error message text
* Addresses #2953 (#5174)
* Addresses #2953
* Added proper test for new error message
* Didn't realize it ran this test as well, whoops
* Implementing changes as suggested by @jennifer-shehane
* Fixing tests and error output. Moved the checks to the start of the get command to ensure we always catch improper options
* Removing issue test since the querying spec covers it
* Using coffescript isArray check
* depromisify things that were promisified b/t electron 5 <=> 6
Revert "update shell.openExternal to promisified"
This reverts commit 8b6460d015.
Revert "update dialog.showOpenDialog to promisified"
This reverts commit 5f178b075b.
Revert "update webContents.session.setProxy to promisified"
This reverts commit 727df3a4e5.
* node12.4.0-chrome76 => node12.0.0-chrome75
* fix tests for electron downgrade
* node12.0.0-chrome75 => node12.0.0-chrome73
Co-authored-by: Zach Bloomquist <github@chary.us>
Co-authored-by: Brian Mann <brian.mann86@gmail.com>
* use own server-destroy implementation that supports secureConnect events
* stand up HTTPS server for requests over ssl to IPs
* don't need to resolve with
* fix tests
* stand up a server on 127.0.0.1 for test
* tighten up / cleanup code, consolidate + refactor
- lazily fs.outputfile’s
- move sslIpServers to be global
- add remove all CA utility
* Improve proxy_spec test
* Don't crash on server error events
* feedback
* derp
Co-authored-by: Brian Mann <brian.mann86@gmail.com>
* add tests for getAddress on localhost
* add test for visit resolving quickly
* add debug logs to network
* network: override addRequest in HttpAgent, not createSocket
* don't need to add connection: keep-alive to all responses
https://github.com/cypress-io/cypress/pull/4385#issuecomment-499103484
* test that visit finishes quickly
* do not forward connection header
* add tests to help reproduce
* cleanup
* still send keep-alive
* update tests
* remove timers
* add snapshots to e2e test
* remove tests for debugging
* try making console writes async
* Revert "remove timers"
This reverts commit b9d65a4e5c.
* allow DEBUG_COLORS to be passed in an e2e test
* try: using system node for the timers, setting up our own IPC
* Revert "try: using system node for the timers, setting up our own IPC"
This reverts commit c51b3957e2.
* put the interesting test first
* use electron-mocha to run tests in electron
* Revert "use electron-mocha to run tests in electron"
This reverts commit 8b82f0eeb3.
* support legacy addRequest invocation
* Revert "Revert "remove timers""
This reverts commit 93f15fcb17.
* update snapshot
* Revert "try making console writes async"
This reverts commit 9c8337e433.
* complete in 150ms, not 1000ms
* use a parser that supports circular json
* update tests to work with new socketio version
* add error message when users supply circular body to visit/request
* show the path of the circular reference detected
* Revert "use a parser that supports circular json"
This reverts commit c052f44ec8.
* add failing driver and server tests for circular objs over websocket
* use a parser that supports circular json
* add has-binary2 patch that enables circular objects to be inspected
* update socket spec
* rejectUnauthorized: false
* use @packages/socket instead of copying client source
* prevent false positive
* use commit hash for socket.io-circular-parser
* cleanup bundling of socket.io for node + browser
- keep the interfaces identical
- browser simply has less properties than the node variant
* properly import client + circularParser from socket package
* @cypress/what-is-circular
* dont require the extension, it causes gulp to hang
* fix runner tests hanging
Co-authored-by: Brian Mann <brian.mann86@gmail.com>
* retry requests, basic e2e test
* basic e2e test for chrome behavior
* don't use timeouts to test
* some minor cleanup
* validate google chrome's retry behavior w/ a proxy
* get retries on network errors workin
* cleanup
* final changes before switching approach
* Reverting previous approach in request.coffee, server.coffee
* add retryOnNetworkFailure
* now works with retryOnStatusCodeFailure
* retry 4 times in addition to the 1 initial attempt
* add tests for subresources
* much improved error handling
* have the e2e test really work
* e2e baseurl check
* retry baseurl check
* remove special handling for node 8.2.1 bug
* WIP: continue making progress building out request retry
- swap out passthrough’s for pumpify / duplexify / pump
- clean up error handling / messaging / retry logic
* pipe clientrequest events
* buffer req body to disk, restore error handling/retrying
* don't bubble up errors from failed attempts
* actually pipe reqstream, oops
* add some e2e tests for request body
* revert lib/request.coffee to 7be1051
* add almost-working lazy-stream
* manually fire the 'pipe' event on the reqStream to copy headers to the outgoing message
- restore the ‘error’ propagation so that all tests pass for now
* cleanup leaking 'undefined' into stdout, causing failing e2e tests
- do not set onWarning as a property of project, just pass as an
argument
* add new options to request_spec, deduplicate default opts
* use stream buffer in request.coffee
* revert request.coffee
* last stream_buffer changes before removing fs stuff
* remove fs stuff from stream_buffer, add stream piping tests
* it works! :tada::tada:🎉 using duplexify to separate delayStream and reqBodyBuffer
* retry for .5s max on ECONNREFUSED
* add error codes
* don't timeout proxied requests
* restore baseurl check
* update new e2e tests
* make delay work with rp
* propagate clientresponse events
* removing tests that don't do anything now that we don't ESOCKETTIMEOUT on proxied requests
* add new visit, req options to index.d.ts
* don't fail on server-performance-test
* make retries with status code work again
* account for different stack trace in ci
* fix test
* retry https requests
* add tests for https passthru retries working
* clean up error handling for https-proxy
* fix failing https-proxy tests, tweak agent error handling to prevent multiple callbacks
* make expectedExitCode actual vs. expected in the correct order
* bump up e2e test timeout so it can retry and still work
* update tests
* retry up to 500ms on proxied requests
* add tests for incompatible options errors
* remove .only
* maybe this will help it act more consistently
* help e2e test work in ci
* don't reconnect on already made connections
* clarify naming
* wip: testing https proxy
* better debug calls
* WIP: getting proxy passthrough retry tests going
* handle retrying upstream proxy errors
- add tests for successfully retrying proxy errors and for unsuccessful
retries
- fix onClose errors when proxy connection is closed before enough data
is received
- fix not returning setTimeout correctly
* group related code accordingly
* do not build typescript by default, drop extension from main
* more TODO notes
* don't set a default NO_PROXY if NO_PROXY = ''
* debugging-proxy@2.0.0
* null out reqBodyBuffer when req finishes
* wip: retry in agent, not https-proxy [skip-ci]
* update https-proxy to use @packages/network retries
* retry after connection but before proxy tunnel established
* appease my linty overlords
* update https-proxy tests
* update agent specs, decided to still use tls.connect
it's easier to test and has less complexity
* test retrying HTTPS passthru
* debugging-proxy@2.0.1
* increase defaultCommandTimeout 100 -> 200 to prevent flake in CI
* auto formatting
* fix test to be dynamic and not rely on magic constants
* copy types field when linking proxy images, update packages/network types field
* linting
* add network index.js file
* linting
* improve error messaging experience when verifying base url
* only insert 1 new line
* fix failing test not binding to localhost
* removed test that's covered by e2e specs
* remove dash in 're-try'
* some cleanup for readability
* use allocUnsafe per perf
* unset NO_PROXY with an empty string
* move retry ensuring the baseUrl into url, cleanup some imperative code
* if the head is already present during connect, make connection, else wait for first head bytes
* minor formatting, clarity around conditions, naming
* rename retryInterval -> retryIntervals
* set defaults for requests during creation for clarity
* rename send -> sendPromise to pair better with sendStream
* use retryIntervals instead of juggling MAX_REQUEST_RETRIES
- ensure debug messages are consistent between request streams +
promises
- set static constants
* DRY up status check + network failure + retry logic
- keeps the debug logic identical between promises + streams
- ensures all logic paths are also consistent
- consolidates the pop’ing of intervals in a single place
* find / replace fail
* derp
* make the logic actually correct, set intervals as cloned defaults for recursive lookup
* pass arg correctly
* reduce debugging noise, formatting
* rename intervals -> delaysRemaining for clarity
* added unit tests around getDelayForRetry
* set retryIntervals as default options correctly, add unit tests
Co-authored-by: Brian Mann <brian.mann86@gmail.com>
Co-authored-by: Jennifer Shehane <jennifer@cypress.io>
Co-authored-by: Gleb Bahmutov <gleb.bahmutov@gmail.com>
* debugging-proxy -> @cypress/debugging-proxy
* server: move perf urls to cypress.io, also test http perf
* update low water mark for CI
* server: run perf tests on vanilla chrome proxy first to establish baseline for real tests
* fix tests
* enable esModuleInterop and fix typescript errors
* set typescript as root dep, use bin-up for tsc
* fix network package deps, add typescript build process
* add packages/server build process for typescript
* fix launcher exports
* formatting
* build the binary in this branch
* server: import in a stubbable way
* launcher: import stuff so it can be stubbed
* network: make stuff stubbable
* clean up imports
* network: let evil dns override dns.lookup
Co-authored-by: Zach Bloomquist <github@chary.us>
* https-proxy: unused file
* server: wrap all https requests that use a proxy
* server: use request lib in ensureUrl if proxy is in use. this makes runs tab work behind a proxy
* electron: pass --proxy-server to app itself, so the embedded github login page works
* cli: first attempt at env vars from windows registry
* cli: api cleanup
* cli: lint
* cli: fix crash on no proxy, add tests
* add desktop-gui watch to terminals.json
* cli: pass along --proxy-source
* electron: pass --proxy-bypass-list too
* server: whitelist proxy* args
* cli: better wording
* desktop-gui: display proxy settings
* extension: force proxy [wip]
* extension: finally, i am victorious over coffeescript
* extension: add -loopback to bypasslist
* extension: revert changes
Revert "extension: force proxy [wip]"
This reverts commit 3ab6ba42a763f25ee65f12eb8b79eb597efc9b11.
* desktop-gui: skip proxysettings if there aren't any
* https-proxy, server: proxy directConnections using https-proxy-agent
* https-agent: pool httpsAgents
* https-proxy: work when they're not on a proxy
* https-proxy: ci - use agent 1.0
* https-proxy: tests
* desktop-gui: hide proxy settings when not using proxy
* https-proxy: pass req through to https-proxy-agent callback
* cli: use get-windows-proxy
* desktop-gui: always show proxy settings
* server: use get-windows-proxy
* electron, server: supply electron proxy config when window launched
* server: fix
* https-proxy: cleanup
* server: clean up ensureUrl
* https-proxy: cleanup
* cli: fix
* cli: fix destructuring
* server: enable ForeverAgent to pool HTTPS/HTTP connections
#3192
* server: updating snapshot
* https-proxy: don't crash, do error if proxy unreachable
* https-proxy:
* get-windows-proxy@1.0.0
* https-proxy: use proxy-from-env to decide on a proxy for a url
* server: fallback to HTTP_PROXY globally if HTTPS_PROXY not set
* server: proxy args test
* cli: add proxy tests
* cli: add test that loadSystemProxySettings is called during download
* cli, server: account for the fact that CI has some proxy vars set
* https-proxy: ""
* cli, https-proxy, server: ""
* desktop-gui: update settings gui
* desktop-gui: cypress tests for proxy settings
* server: strict undefined check
* cli, server: move get-windows-proxy to scope, optionalDeps
* server, cli: use new and improved get-windows-proxy
* cli, server: 1.5.0
* server: re-check for proxy since cli may have failed to load the lib
* server, cli: 1.5.1
* server: NO_PROXY=localhost by default, clean up
* https-proxy: disable Nagle's on proxy sockets
\#3192
* https-proxy: use setNoDelay on upstream, cache https agent
* https-proxy: test basic auth
* https-proxy: add todo: remove this
* server: add custom HTTP(s) Agent implementation w keepalive, tunneling
* server: typescript for agent
* add ts to zunder
* server: more ts
* ts: add missing Agent type declaration
* server: create CombinedAgent
* server: use agent in more places
* ts: more declarations
* server: make script work even if debug port not supplied
* server: begin some testing
* server, ts: agent, tests
* server: test
* server: agent works with websockets now
* server: update snapshot
* server: work out some more bugs with websockets
* server: more websockets
* server: add net_profiler
* https-proxy: fix dangling socket on direct connection
* server: fix potential 'headers have already been sent'
* https-proxy: nab another dangler
* server: update test to expect agent
* https-proxy: fix failing test
* desktop-gui: change on-link
* server: add tests for empty response case
* server: tests
* server: send keep-alive with requests
* server: make net profiler hook on socket.connect
* server: only hook profiler once
* server: update tests, add keep-alive test
* server: only regen headers if needed
* server: move http_overrides into CombinedAgent, make it proxy-proof
for #112
* server: update snapshot
* server: undo
* server: avoid circular dependency
* https-proxy, server: use our Agent instead of https-proxy-agent
* server: add dependency back
* cli: actually use proxy for download
* server, launcher, ts: typescript
* Revert "server, launcher, ts: typescript"
This reverts commit d3f8b8bbb6.
* Revert "Revert "server, launcher, ts: typescript""
This reverts commit 818dfdfd00.
* ts, server: respond to PR
* server, ts: types
* ts: really fix types
* https-proxy, server: export CA from https-proxy
* agent, server, https-proxy: move agent to own package
* agent => networking, move connect into networking
* fix tests
* fix test
* networking: respond to PR changes, add more unit tests
* rename ctx
* networking, ts: add more tests
* server: add ensureUrl tests
* https-proxy: remove https-proxy-agent
* server: use CombinedAgent for API
* server: updates
* add proxy performance tests
* add perf tests to workflow
* circle
* run perf tests with --no-sandbox
* networking, ts: ch-ch-ch-ch-changes
* server, networking: pr changes
* run networking tests in circle
* server: fix performance test
* https-proxy: test that sockets are being closed
* https-proxy: write, not emit
* networking: fix test
* networking: bubble err in connect
* networking: style
* networking: clean p connect error handling
* networking => network
* server: make perf tests really work
* server: really report
* server: use args from browser
* server: use AI to determine max run time
* server: load electron only when needed
Co-authored-by: Brian Mann <brian@cypress.io>