Commit Graph

41 Commits

Author SHA1 Message Date
Zach Bloomquist c37896089b feat(net-stubbing): experimental full network mocking support (#4176) 2020-08-31 09:41:47 -04:00
Brian Mann c5012c0c2d fix ts-node buffer warning 2020-07-13 13:48:08 -04:00
Brian Mann c72538d189 Fix lodash dupe dep (#7954)
* blow away yarn.lock

* bump lodash to 4.17.19

* reduce binary size again

* bump @types/node to correct version, fix types

* fix react + react-dom types

* add clean command for .ts conversion to .js files

* fix flaky test
2020-07-11 16:34:23 -04:00
Zach Bloomquist 0e632635cd chore: rm non-test-related coffeescript references 2020-06-10 10:49:31 -04:00
Jennifer Shehane 2ba53f6837 Better handle reserved key CYPRESS_ENV being set by users to va… (#6437)
* Add warning when setting CYPRESS_ENV to non-production value

* Add warning and update error when setting CYPRESS_ENV in config to non-production value

* Update config test/to throw

* we want warning, not throw

* Rename env var to CYPRESS_INTERNAL_ENV + fix warning to actually warn when staging

* update cli snapshot to include new 'info' command

* yarn.lock

* removed the warning from config, is overboard on our own tests 😓

* cleanup from review

Co-authored-by: Gleb Bahmutov <gleb.bahmutov@gmail.com>
2020-03-06 16:53:48 +06:30
Andrew Smith 0a6a2abcec Replace npm with yarn (#5555)
* 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>
2020-02-11 12:40:07 +06:30
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
Ben Kucera 653f52dc3c upgrade eslint-plugin-dev to 5.0.0 (#5382)
* upgrade eslint-plugin-dev to 5.0.0

* more [lint fixes]
2019-10-17 11:40:53 -04:00
Zach Bloomquist e7ecfcf518 Fix gzipped utf-8 .js files getting corrupted (#4984)
* add failing test for utf8 word boundary corruption

* use UTF-8 aware stream replacer

* cleanup

* cleanup test server

* add link to issue

* add replace_stream tests

* add license

* perf improvements - tsificiation

* emit the maximum chars possible

* add better types

* move license, update test
2019-09-28 22:26:25 -04:00
renovate[bot] a2266a6f62 chore(deps): update dependency ts-node to version .x 🌟 (major) (#4361)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2019-07-24 15:01:23 +06:30
renovate[bot] 5ab23f022f chore(deps): update dependency @cypress/eslint-plugin-dev to version 3.3.0 🌟 (#4723)
* chore(deps): update @cypress/eslint-plugin-dev to 3.3.0 🌟

* sort json package.json files + add note to skipped tests
2019-07-16 14:21:08 +06:30
Ben Kucera fbd523615e [internal] Lint typescript, json, new eslint rules (#4449)
* temp 07/01/19 [skip ci] main lint files

* use lint-staged scripts

* fix all auto-fixable eslint errors

* manually fix lint issues in files

* temp 07/01/19 [skip ci]

* bump eslint plugin versions, update circle.yml

* [lint fix] remaining js files

* update vscode/settings.json

* add back stop-only

* use stop-only for linting .onlys

* fix verify_spec, build_spec

* update json plugin

* relint & apply corrections

* fix appveyor.yml not cleansing env vars (very bad)

* dont echo commit message in appveyor script

* retry build &

* re-add & upgrade lint-staged

* update contributing docs

* only let stop-only catch staged changes
2019-07-12 13:59:44 -04:00
renovate[bot] b8c3b3d42f chore(deps): update dependency ts-node to version .x 🌟 (major) (#4197)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2019-05-16 10:29:13 +06:30
renovate[bot] 57eda8cacf fix(deps): update dependency debug to version .x 🌟 (#3793)
* fix(deps): update debug to 4.1.1 🌟

* bump cli 'debug' down to 3.2.6 - last version that still supports Node 4


Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Jennifer Shehane <jennifer@cypress.io>
2019-05-01 13:12:07 +06:30
Brian Mann 575c2962bd fix bug in node 8.2.1 where socket._handle is null (#3872) 2019-04-03 09:10:52 -04:00
Zach Bloomquist 16b939e9dd Handle lowercase environment variable names in proxy (#3866)
* cli, server: check for lowercase environment variable too

* server: clean up proxy.ts to not use this

* rename to JS to prevent needing build process for tests to pass

* enable implicit any

* some cleanup, added tests around additional lowercased env vars


Co-authored-by: Brian Mann <brian.mann86@gmail.com>
2019-04-03 08:23:07 -04:00
Brian Mann a998b98058 Fix typescript binary building (#3858)
* 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>
2019-04-01 20:08:19 -04:00
Zach Bloomquist c1a345dce2 Improved proxy support (#3531)
* 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>
2019-03-31 23:39:10 -04:00
renovate[bot] 157819587e chore(deps): update typescript to 2.9.2 🌟 (#3307)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2019-02-04 16:09:00 +06:30
Zach Bloomquist 99c3be964e Fix broken browser detection on Linux when 2 browsers have same version # (#3209)
* Uniqify by name and version

* add mocha to types to enable TS checking in tests

* Make detect() accept mocked browser list

* Adding tests for duplicate browser detection fix

* sinon -> sinon 2.4.1 to add stub.resolves()

* addressing Gleb's suggestions
2019-01-23 17:53:05 -05:00
Gleb Bahmutov 13178b01cb Pin prod dependencies 3025 (#3026)
* pin packages/electron prod dependencies

* pin packages/example

* pin packages/extension

* pin packages/https-proxy

* pin packages/launcher

* pin packages/server

* pin packages/ts
2019-01-02 13:58:20 -05:00
Brian Mann 23eca07c3c fixes more tsc fun 2018-11-01 16:10:27 -04:00
Brian Mann b318eafdfc fix linting and typescript errors in launcher 2018-11-01 15:56:43 -04:00
Brian Mann 2333d04a54 secure cookie error crash (#2685)
- fixes #1264 
- fixes #1321 
- fixes #1799  
- fixes #2689
- fixes #2688
- fixes #2687 	
- fixes #2686
2018-11-01 12:34:37 -04:00
Gleb Bahmutov 6f657d0740 Send list of specs with record build 861 (#862)
* server: log some basic info when creating build through api

* send list of specs to API, close #861

* update a few unit tests

* set exact version of typescript and ts-node

* test integeration test

* use bluebird instead of ramba for tap-tap-tapping

* server: find and filter specs by specPattern, return name relative to integration folder, add better integration specs
2017-11-01 21:00:03 -04:00
Gleb Bahmutov 24991f4922 build: commit to test projects using commit-message-install format (#864)
* build: commit to test projects using commit-message-install format

* use exact versions of typescript
2017-11-01 00:57:50 -04:00
Gleb Bahmutov 7d13cf59ec Add ability to point built binary at staging, close #813 (#814)
* allow setting CYPRESS_ENV when running binary, close #813

* test on CircleCI against staging API

* clone test project using HTTPS

* pass record key via environment variable

* use xvfb-maybe

* locally install xvfb-maybe

* remove debug

* add testing built binary against staging api

* do not try to guess if missing ts-node is ok

* install built npm cypress.tgz

* do not need xvfb for cypress run
2017-10-26 16:33:10 -04:00
Gleb Bahmutov a2fecfc338 launcher: detect chrome on windows (#504)
close #504 

* launcher: detect chrome on windows

checks if file exists, then determines version using `wmic`

close #503

* launcher: detect canary and chromium

plus update types to latest

* add launcher as a CI job

* run launcher on Windows CI

* forgot to restore monorepo

* go back on Win CI
2017-09-26 12:55:06 -04:00
Gleb Bahmutov 1638260656 Build Linux Cypress in Docker for #217 (#220)
* deploy: working on linux build via Docker for #217

* reworking deploy links

* include register files from coffee and ts

* smoke test passes in docker container
2017-06-26 16:15:01 -04:00
Gleb Bahmutov 7ee72419a4 Issue 203 (#206)
* deploy: convert launcher TS to JS during deploy, close #203

* refactor duplicate functions

* good message when deleting TS files

* uncomment platform and version
2017-06-23 14:32:30 -04:00
Gleb Bahmutov 91ec7a0dd8 Move deploy scripts (#205)
* root: move deploy scripts from server to top level scripts

* remove postinstall download stop variable

* deploy: list all dev dependencies

* working on deploy run

* WIP comment out obsolete run-sequence

* add cypress-io/cypress-example-recipes

* root: enable run all to skip package or packages by name

* deploy: move coffee lint to root

* deploy: make bump async

* deploy: WIP update deploy + build processes for monorepo

* Add cypress-io/cypress-example-module-api project build to bump

* remove commas

* Add project cypress-io/cypress-test-ci-environments to list of projects to test

* deploy: WIP refactor classes -> functional

* deploy: don't copy node_modules or prune -> just npm install

* cli: consolidate important fields into monorepo root, pull out and build

* all: cleanup package.json, remove versions, license, repo information

-move some deps to devDeps

* all: convert es5 -> es6 + fix linting

* deploy: specify files to include when copying packages for dist

* deploy: convert coffee script in place + remove coffee files
2017-06-23 10:41:37 -04:00
Chris Breiding 0f154af1fd scripts: normalize path for —run-project and handle —project=../foo 2017-06-20 09:51:03 -04:00
Gleb Bahmutov f3595761d0 all: set private true in each internal package.json 2017-06-07 16:27:00 -04:00
Brian Mann 817758e4b6 all: symlink all cypress packages in root node_modules for easy access 2017-05-31 12:51:35 -04:00
Gleb Bahmutov 5fd652ed1f Improve ts-node speed (#85)
* ts: move tsconfig file to ts subproject to speed up TypeScript hook

* remove typescript build command
2017-05-23 12:41:00 -04:00
Gleb Bahmutov 3a52caf183 ts: use debug cypress:ts to see TypeScript registration message 2017-05-22 12:08:18 -04:00
Gleb Bahmutov d21ef620bd ts: transpile TypeScript without checking types by default for speed 2017-05-19 17:45:54 -04:00
Gleb Bahmutov 241e31df5a all: move tsconfig.json to the packages/ folder, close #47 2017-05-17 14:03:39 -04:00
Gleb Bahmutov 23af5c282a Move ambient types (#45)
* move ambient types from launcher to TS package, fixes #41

* path to types file in ts package
2017-05-17 12:16:23 -04:00
Gleb Bahmutov 279507be4c fix(ts): register typescript hook with explicit tsconfig.json path, close #33 2017-05-17 10:24:27 -04:00
Gleb Bahmutov df3f3fcd42 On the fly TypeScript transpile using ts-node (#26)
Using require hook
2017-05-16 17:53:17 -04:00