From 14d0b93679c7d143858ea5447c4fb108bda04d06 Mon Sep 17 00:00:00 2001 From: Byeongung Ahn Date: Wed, 23 Feb 2022 07:58:06 -0800 Subject: [PATCH 1/5] fix: poor outgoing network performance on Mac (#20062) --- packages/network/lib/connect.ts | 2 +- packages/network/test/unit/connect_spec.ts | 27 ++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 packages/network/test/unit/connect_spec.ts diff --git a/packages/network/lib/connect.ts b/packages/network/lib/connect.ts index 92204b185c..891319e564 100644 --- a/packages/network/lib/connect.ts +++ b/packages/network/lib/connect.ts @@ -11,7 +11,7 @@ export function byPortAndAddress (port: number, address: net.Address) { // https://nodejs.org/api/net.html#net_net_connect_port_host_connectlistener return new Bluebird((resolve, reject) => { const onConnect = () => { - client.end() + client.destroy() resolve(address) } diff --git a/packages/network/test/unit/connect_spec.ts b/packages/network/test/unit/connect_spec.ts new file mode 100644 index 0000000000..9bad6d35b3 --- /dev/null +++ b/packages/network/test/unit/connect_spec.ts @@ -0,0 +1,27 @@ +import { connect } from '../..' +import { expect } from 'chai' +import sinon from 'sinon' +import net from 'net' + +describe('lib/connect', () => { + context('.byPortAndAddress', () => { + it('destroy connection immediately onConnect', () => { + const socket = new net.Socket() + const destroy = sinon.spy(socket, 'destroy') + + sinon.stub(net, 'connect').callsFake((port, address, onConnect) => { + process.nextTick(() => { + onConnect() + }) + + return socket + }) + + return connect.byPortAndAddress(1234, { address: '127.0.0.1' }) + .then((address) => { + expect(address).to.deep.eq({ address: '127.0.0.1' }) + expect(destroy).to.be.called + }) + }) + }) +}) From 8e365bc509eccda28cc0065725c4e09f4523e32d Mon Sep 17 00:00:00 2001 From: Snyk bot Date: Wed, 23 Feb 2022 18:38:07 +0200 Subject: [PATCH 2/5] chore(deps): Security upgrade plist from 3.0.1 to 3.0.4 (#20267) Co-authored-by: Emily Rohrbough Co-authored-by: Emily Rohrbough --- package.json | 2 +- packages/launcher/package.json | 2 +- yarn.lock | 18 ++++++------------ 3 files changed, 8 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index f6dcda6499..9dfb4ed2b5 100644 --- a/package.json +++ b/package.json @@ -166,7 +166,7 @@ "mock-fs": "5.1.1", "parse-github-repo-url": "1.4.1", "patch-package": "6.4.7", - "plist": "3.0.1", + "plist": "3.0.4", "pluralize": "8.0.0", "postinstall-postinstall": "2.0.0", "prefixed-list": "1.0.1", diff --git a/packages/launcher/package.json b/packages/launcher/package.json index 313daf60aa..658f4fc47d 100644 --- a/packages/launcher/package.json +++ b/packages/launcher/package.json @@ -17,7 +17,7 @@ "execa": "4.0.0", "fs-extra": "9.1.0", "lodash": "^4.17.21", - "plist": "3.0.1", + "plist": "3.0.4", "semver": "7.3.5" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index 47234a495f..6a293925f7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12343,7 +12343,7 @@ base64-arraybuffer@0.1.4: resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz#9818c79e059b1355f97e0428a017c838e90ba812" integrity sha1-mBjHngWbE1X5fgQooBfIOOkLqBI= -base64-js@^1.0.2, base64-js@^1.2.3, base64-js@^1.3.1: +base64-js@^1.0.2, base64-js@^1.3.1, base64-js@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== @@ -30670,14 +30670,13 @@ please-upgrade-node@^3.2.0: dependencies: semver-compare "^1.0.0" -plist@3.0.1, plist@^3.0.0, plist@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.1.tgz#a9b931d17c304e8912ef0ba3bdd6182baf2e1f8c" - integrity sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ== +plist@3.0.4, plist@^3.0.0, plist@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.4.tgz#a62df837e3aed2bb3b735899d510c4f186019cbe" + integrity sha512-ksrr8y9+nXOxQB2osVNqrgvX/XQPOXaU4BQMKjYq8PvaY1U18mo+fKgBSwzK+luSyinOuPae956lSVcBwxlAMg== dependencies: - base64-js "^1.2.3" + base64-js "^1.5.1" xmlbuilder "^9.0.7" - xmldom "0.1.x" plugin-error@^0.1.2: version "0.1.2" @@ -41763,11 +41762,6 @@ xmlchars@^2.1.1: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -xmldom@0.1.x: - version "0.1.31" - resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.31.tgz#b76c9a1bd9f0a9737e5a72dc37231cf38375e2ff" - integrity sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ== - xmlhttprequest-ssl@~1.5.4: version "1.5.5" resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" From 05f9ad163ec4ab13dc296b6ec184d28b5cea6670 Mon Sep 17 00:00:00 2001 From: Ryan Manuel Date: Wed, 23 Feb 2022 10:46:09 -0600 Subject: [PATCH 3/5] chore: fix net stubbing flake (#20297) Co-authored-by: Emily Rohrbough --- .../integration/commands/net_stubbing_spec.ts | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/packages/driver/cypress/integration/commands/net_stubbing_spec.ts b/packages/driver/cypress/integration/commands/net_stubbing_spec.ts index 33dea9320c..544eec4efd 100644 --- a/packages/driver/cypress/integration/commands/net_stubbing_spec.ts +++ b/packages/driver/cypress/integration/commands/net_stubbing_spec.ts @@ -1649,7 +1649,7 @@ describe('network stubbing', function () { }) }).then(() => { return $.get('/timeout').then((responseText) => { - expect(Date.now() - this.start).to.be.closeTo(250 + 100, 100) + expect(Date.now() - this.start).to.be.closeTo(delayMs + 100, 100) done() }) @@ -1664,7 +1664,7 @@ describe('network stubbing', function () { const start = Date.now() return $.get('/timeout').then((responseText) => { - expect(Date.now() - start).to.be.closeTo(delay, 50) + expect(Date.now() - start).to.be.closeTo(delay + 100, 100) expect(responseText).to.eq('foo') }) } @@ -2583,16 +2583,18 @@ describe('network stubbing', function () { }) it('can delay a proxy response using res.setDelay', function (done) { + const delay = 1000 + cy.intercept('/timeout*', (req) => { req.reply((res) => { this.start = Date.now() - res.setDelay(1000).send('delay worked') + res.setDelay(delay).send('delay worked') }) }).then(() => { $.get('/timeout') .done((responseText) => { - expect(Date.now() - this.start).to.be.closeTo(1100, 100) + expect(Date.now() - this.start).to.be.closeTo(delay + 100, 100) expect(responseText).to.include('delay worked') done() @@ -2601,18 +2603,20 @@ describe('network stubbing', function () { }) it('can \'delay\' a proxy response using Promise.delay', function (done) { + const delay = 1000 + cy.intercept('/timeout*', (req) => { req.reply((res) => { this.start = Date.now() - return Promise.delay(1000) + return Promise.delay(delay) .then(() => { res.send('Promise.delay worked') }) }) }).then(() => { $.get('/timeout').then((responseText) => { - expect(Date.now() - this.start).to.be.closeTo(1000, 100) + expect(Date.now() - this.start).to.be.closeTo(delay + 100, 100) expect(responseText).to.eq('Promise.delay worked') done() From 3f84b7ed4239cb11b5c230482702151904e63aef Mon Sep 17 00:00:00 2001 From: Zach Bloomquist Date: Wed, 23 Feb 2022 15:42:28 -0500 Subject: [PATCH 4/5] fix: revert "fix: treat form-data bodies as binary" (#20343) --- packages/net-stubbing/lib/server/util.ts | 4 ---- packages/net-stubbing/test/unit/util-spec.ts | 14 -------------- 2 files changed, 18 deletions(-) diff --git a/packages/net-stubbing/lib/server/util.ts b/packages/net-stubbing/lib/server/util.ts index 68d31bc26f..c33d4be146 100644 --- a/packages/net-stubbing/lib/server/util.ts +++ b/packages/net-stubbing/lib/server/util.ts @@ -251,10 +251,6 @@ export function getBodyEncoding (req: CyHttpMessages.IncomingRequest): BodyEncod if (contentType.includes('charset=utf-8') || contentType.includes('charset="utf-8"')) { return 'utf8' } - - if (contentType.includes('multipart/form-data')) { - return 'binary' - } } // with fallback to inspecting the buffer using diff --git a/packages/net-stubbing/test/unit/util-spec.ts b/packages/net-stubbing/test/unit/util-spec.ts index f2e1db3909..3775f48ffa 100644 --- a/packages/net-stubbing/test/unit/util-spec.ts +++ b/packages/net-stubbing/test/unit/util-spec.ts @@ -69,19 +69,5 @@ describe('net-stubbing util', () => { expect(getBodyEncoding(req), 'image').to.equal('binary') }) - - it('returns binary for form-data bodies', () => { - const formDataRequest = { - body: Buffer.from('hello world'), - headers: { - 'content-type': 'multipart/form-data', - }, - method: 'POST', - url: 'somewhere', - httpVersion: '1.1', - } - - expect(getBodyEncoding(formDataRequest)).to.equal('binary') - }) }) }) From 6ea3a8cb063c6370cc6e001a77d540cd5b603899 Mon Sep 17 00:00:00 2001 From: Jess Date: Wed, 23 Feb 2022 18:36:59 -0500 Subject: [PATCH 5/5] chore: fixing m1 installation issues for m1 macs (#20345) --- cli/lib/tasks/install.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cli/lib/tasks/install.js b/cli/lib/tasks/install.js index 02a678aad2..10d3426451 100644 --- a/cli/lib/tasks/install.js +++ b/cli/lib/tasks/install.js @@ -1,4 +1,5 @@ const _ = require('lodash') +const arch = require('arch') const os = require('os') const url = require('url') const path = require('path') @@ -105,7 +106,7 @@ const getBinaryUrlFromPrereleaseNpmUrl = (npmUrl) => { const { version, artifactSlug } = matches.groups - parsed.pathname = `/beta/binary/${version}/${os.platform()}-${os.arch()}/${artifactSlug}/cypress.zip` + parsed.pathname = `/beta/binary/${version}/${os.platform()}-${arch()}/${artifactSlug}/cypress.zip` return parsed.format() }