From 9fda261dde44e0e9410490f130c5fab07b328ac5 Mon Sep 17 00:00:00 2001 From: Ryan Manuel Date: Tue, 29 Oct 2024 14:55:26 -0500 Subject: [PATCH] chore: upgrade electron to 32.2.0 (#30394) * chore: upgrade electron to 32.2.0 -- run ci * fix node versions * fix build * fix evil-dns * various fixes * fix srcdoc * various fixes * update package.json * update yarn.lock * various fixes * fix integrity check * fix binary verification * various fixes * update yarn.lock * fix typo * fix lock file * fix tests * fix tests * various fixes * various fixes * various fixes * fix stuff * fix things * try to fix errors * fix * updates * add yarn berry * upgrade electron * attempt with gcc * blank * update arm64 executor * try to fix the arm64 issue * fix arm64 * bump cache * attempt to fix arm64 again * attempt to fix arm64 again * fix darwin problems * merge release/14.0.0 * update yarn.lock * blank -- run ci * blank * blank * blank * try something * try something * clean up * blank * try to fix sessions issue * fixes * get more info * get more info * try something * fix * try something * try something * try something * tweak * one more thing * let us see if this works * blank * chore: updating v8 snapshot cache * chore: updating v8 snapshot cache * chore: updating v8 snapshot cache * Apply suggestions from code review * Apply suggestions from code review * Update cli/CHANGELOG.md Co-authored-by: Jennifer Shehane * Update cli/CHANGELOG.md Co-authored-by: Jennifer Shehane * Update CHANGELOG.md * Update cache-version.txt * fix nx (maybe) * Update package.json * try something * Update packages/app/src/runner/aut-iframe.ts * bump version * try to bust cache * try to invalidate cache * Update cli/CHANGELOG.md * suppress benign warnings * Apply suggestions from code review * PR comments * PR comment * Apply suggestions from code review * chore: updating v8 snapshot cache * chore: updating v8 snapshot cache * chore: updating v8 snapshot cache * Update cli/CHANGELOG.md Co-authored-by: Matt Schile * update debug scenario 4 regex * Update scripts/binary/trigger-publish-binary-pipeline.js --------- Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com> Co-authored-by: Jennifer Shehane Co-authored-by: Matt Schile --- .circleci/cache-version.txt | 2 +- .circleci/workflows.yml | 42 +++-- .github/ISSUE_TEMPLATE/1-bug-report.yml | 2 +- .github/ISSUE_TEMPLATE/2-memory-issue.yml | 2 +- .github/ISSUE_TEMPLATE/3-install-issue.yml | 2 +- .github/workflows/snyk_sca_scan.yaml | 4 +- .../workflows/snyk_static_analysis_scan.yaml | 2 +- .github/workflows/update-browser-versions.yml | 2 +- .../workflows/update_v8_snapshot_cache.yml | 2 +- .node-version | 2 +- cli/CHANGELOG.md | 11 ++ cli/lib/exec/spawn.js | 16 +- cli/package.json | 2 +- cli/test/lib/exec/spawn_spec.js | 4 +- docker-compose.yml | 2 +- npm/cypress-schematic/package.json | 2 +- npm/puppeteer/package.json | 2 +- npm/webpack-dev-server/package.json | 2 +- package.json | 12 +- .../errorWarningChange-subscription.cy.ts | 2 +- packages/app/src/runner/index.ts | 4 +- packages/app/src/runner/useEventManager.ts | 2 +- packages/data-context/src/DataContext.ts | 2 +- .../cypress/e2e/commands/net_stubbing.cy.ts | 3 + .../driver/cypress/e2e/commands/waiting.cy.js | 20 ++ packages/driver/src/cypress.ts | 4 +- packages/electron/README.md | 3 - packages/electron/lib/electron.js | 1 + packages/electron/package.json | 1 + packages/errors/package.json | 2 +- packages/launcher/package.json | 2 +- packages/network/test/unit/agent_spec.ts | 8 +- .../packherd-require/src/sourcemap-support.ts | 2 +- packages/server/lib/browsers/memory/index.ts | 1 - packages/server/lib/cloud/protocol.ts | 1 - packages/server/lib/gui/windows.ts | 2 +- .../plugins/child/run_require_async_child.js | 6 +- packages/server/lib/socket-base.ts | 14 +- packages/server/package.json | 10 +- .../test/unit/browsers/memory/memory_spec.ts | 4 + .../server/test/unit/cloud/protocol_spec.ts | 4 +- packages/server/test/unit/fixture_spec.js | 2 +- packages/types/package.json | 2 +- packages/types/src/protocol.ts | 3 +- patches/evil-dns+0.2.0.patch | 23 +++ patches/ts-node+10.9.2.patch | 30 +++ .../binary/binary-integrity-check-source.js | 17 +- scripts/gulp/tasks/gulpRegistry.ts | 36 ++-- system-tests/lib/dep-installer/yarn.ts | 5 - system-tests/projects/angular-13/package.json | 2 +- system-tests/projects/angular-13/yarn.lock | 15 +- .../issue-25951-next-app/package.json | 2 +- .../projects/issue-25951-next-app/yarn.lock | 15 +- .../projects/no-specs-vue-2/package.json | 9 +- .../projects/no-specs-vue-2/yarn.lock | 8 +- .../projects/vuecli4-vue2/package.json | 2 +- system-tests/projects/vuecli4-vue2/yarn.lock | 8 +- .../projects/vuecli4-vue3/package.json | 2 +- system-tests/projects/vuecli4-vue3/yarn.lock | 8 +- .../vuecli5-vue3-type-module/package.json | 2 +- .../vuecli5-vue3-type-module/yarn.lock | 8 +- .../projects/vuecli5-vue3/package.json | 2 +- system-tests/projects/vuecli5-vue3/yarn.lock | 8 +- .../vuecli5vue3-unconfigured/package.json | 2 +- .../vuecli5vue3-unconfigured/yarn.lock | 8 +- .../vueclivue2-configured/package.json | 2 +- .../projects/vueclivue2-configured/yarn.lock | 8 +- .../vueclivue2-unconfigured/package.json | 2 +- .../vueclivue2-unconfigured/yarn.lock | 8 +- .../vueclivue3-unconfigured/package.json | 2 +- .../vueclivue3-unconfigured/yarn.lock | 8 +- system-tests/test-binary/module_api_spec.ts | 2 +- .../test-binary/node_versions_spec.ts | 2 + tooling/electron-mksnapshot/package.json | 2 +- .../cache/darwin/snapshot-meta.json | 2 +- .../cache/linux/snapshot-meta.json | 2 +- .../cache/win32/snapshot-meta.json | 2 +- .../src/generator/snapshot-generator.ts | 4 +- yarn.lock | 177 +++++++++--------- 79 files changed, 403 insertions(+), 252 deletions(-) create mode 100644 patches/evil-dns+0.2.0.patch create mode 100644 patches/ts-node+10.9.2.patch diff --git a/.circleci/cache-version.txt b/.circleci/cache-version.txt index ab70be68e6..628a144cb3 100644 --- a/.circleci/cache-version.txt +++ b/.circleci/cache-version.txt @@ -1,3 +1,3 @@ # Bump this version to force CI to re-create the cache from scratch. -10-23-24 +10-28-24 diff --git a/.circleci/workflows.yml b/.circleci/workflows.yml index b590c8683f..f9bb513693 100644 --- a/.circleci/workflows.yml +++ b/.circleci/workflows.yml @@ -30,7 +30,7 @@ mainBuildFilters: &mainBuildFilters - /^release\/\d+\.\d+\.\d+$/ # use the following branch as well to ensure that v8 snapshot cache updates are fully tested - 'update-v8-snapshot-cache-on-develop' - - 'ryanm/chore/fix-windows-tests' + - 'ryanm/chore/electron-upgrade' - 'publish-binary' # usually we don't build Mac app - it takes a long time @@ -42,7 +42,7 @@ macWorkflowFilters: &darwin-workflow-filters - equal: [ develop, << pipeline.git.branch >> ] # use the following branch as well to ensure that v8 snapshot cache updates are fully tested - equal: [ 'update-v8-snapshot-cache-on-develop', << pipeline.git.branch >> ] - - equal: [ 'ryanm/chore/fix-windows-tests', << pipeline.git.branch >> ] + - equal: [ 'ryanm/chore/electron-upgrade', << pipeline.git.branch >> ] - matches: pattern: /^release\/\d+\.\d+\.\d+$/ value: << pipeline.git.branch >> @@ -53,7 +53,7 @@ linuxArm64WorkflowFilters: &linux-arm64-workflow-filters - equal: [ develop, << pipeline.git.branch >> ] # use the following branch as well to ensure that v8 snapshot cache updates are fully tested - equal: [ 'update-v8-snapshot-cache-on-develop', << pipeline.git.branch >> ] - - equal: [ 'ryanm/chore/fix-windows-tests', << pipeline.git.branch >> ] + - equal: [ 'ryanm/chore/electron-upgrade', << pipeline.git.branch >> ] - matches: pattern: /^release\/\d+\.\d+\.\d+$/ value: << pipeline.git.branch >> @@ -76,7 +76,7 @@ windowsWorkflowFilters: &windows-workflow-filters - equal: [ develop, << pipeline.git.branch >> ] # use the following branch as well to ensure that v8 snapshot cache updates are fully tested - equal: [ 'update-v8-snapshot-cache-on-develop', << pipeline.git.branch >> ] - - equal: [ 'ryanm/chore/fix-windows-tests', << pipeline.git.branch >> ] + - equal: [ 'ryanm/chore/electron-upgrade', << pipeline.git.branch >> ] - matches: pattern: /^release\/\d+\.\d+\.\d+$/ value: << pipeline.git.branch >> @@ -85,7 +85,7 @@ executors: # the Docker image with Cypress dependencies and Chrome browser cy-doc: docker: - - image: cypress/browsers-internal:node18.17.1-chrome128-ff131 + - image: cypress/browsers-internal:node20.18.0-bullseye-chrome129-ff131 # by default, we use "medium" to balance performance + CI costs. bump or reduce on a per-job basis if needed. resource_class: medium environment: @@ -94,7 +94,7 @@ executors: kitchensink-executor: docker: - - image: cypress/browsers-internal:node20.15.0-chrome126-ff131 + - image: cypress/browsers-internal:node20.18.0-bullseye-chrome129-ff131 # by default, we use "medium" to balance performance + CI costs. bump or reduce on a per-job basis if needed. resource_class: medium environment: @@ -104,7 +104,7 @@ executors: # Docker image with non-root "node" user non-root-docker-user: docker: - - image: cypress/browsers-internal:node18.17.1-chrome128-ff131 + - image: cypress/browsers-internal:node20.18.0-bullseye-chrome129-ff131 user: node environment: PLATFORM: linux @@ -136,7 +136,7 @@ executors: linux-arm64: &linux-arm64-executor machine: - image: ubuntu-2004:2023.07.1 + image: ubuntu-2004:2024.05.1 resource_class: arm.medium environment: PLATFORM: linux @@ -152,7 +152,7 @@ commands: name: Set environment variable to determine whether or not to persist artifacts command: | echo "Setting SHOULD_PERSIST_ARTIFACTS variable" - echo 'if ! [[ "$CIRCLE_BRANCH" != "develop" && "$CIRCLE_BRANCH" != "release/"* && "$CIRCLE_BRANCH" != "ryanm/chore/fix-windows-tests" ]]; then + echo 'if ! [[ "$CIRCLE_BRANCH" != "develop" && "$CIRCLE_BRANCH" != "release/"* && "$CIRCLE_BRANCH" != "ryanm/chore/electron-upgrade" ]]; then export SHOULD_PERSIST_ARTIFACTS=true fi' >> "$BASH_ENV" # You must run `setup_should_persist_artifacts` command and be using bash before running this command @@ -383,6 +383,24 @@ commands: - run: name: Install Node Modules command: | + if [[ `node ./scripts/get-platform-key.js` == 'linux-arm64' ]]; then + # Building better-sqlite3 on arm64 requires gcc-10 + # on Arm, CI runs as non-root so we need to use sudo + sudo apt install gcc-10 g++-10 + + # Update default to gcc-10 and g++-10 + sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 30 + sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 30 + sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30 + sudo update-alternatives --set cc /usr/bin/gcc + sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30 + sudo update-alternatives --set c++ /usr/bin/g++ + sudo update-alternatives --config gcc + sudo update-alternatives --config g++ + + # If we are on arm64 we need to install setuptools as it no longer comes standard with the latest version of python + pip install setuptools + fi source ./scripts/ensure-node.sh # avoid installing Percy's Chromium every time we use @percy/cli # https://docs.percy.io/docs/caching-asset-discovery-browser-in-ci @@ -528,9 +546,9 @@ commands: if [[ ! -f better_sqlite3.node ]]; then set -x apt update && apt install -y docker.io - docker run -d --name better-sqlite3-builder cypress/base-internal:20.15.0-buster /bin/bash -c "sleep 1000000000" + docker run -d --name better-sqlite3-builder cypress/base-internal:20.15.0-buster-python3.8-gcc-10.5 /bin/bash -c "sleep 1000000000" docker cp ~/cypress/node_modules/better-sqlite3 better-sqlite3-builder:/better-sqlite3 - docker exec -it better-sqlite3-builder /bin/bash -c "cd /better-sqlite3 && source /root/.bashrc && chown -R root:root . && npm install --ignore-scripts && npx --no-install prebuild -r electron -t 27.1.3 --include-regex 'better_sqlite3.node$'" + docker exec -it better-sqlite3-builder /bin/bash -c "cd /better-sqlite3 && source /root/.bashrc && chown -R root:root . && npm install --ignore-scripts && npx --no-install prebuild -r electron -t 32.2.0 --include-regex 'better_sqlite3.node$'" docker cp better-sqlite3-builder:/better-sqlite3/build/Release/better_sqlite3.node ~/cypress/node_modules/better-sqlite3/build/Release/better_sqlite3.node docker rm -f better-sqlite3-builder cp ~/cypress/node_modules/better-sqlite3/build/Release/better_sqlite3.node ~/cypress/better_sqlite3.node @@ -1782,7 +1800,7 @@ jobs: working_directory: ~/cypress docker: # we need an image with yarn 4 berry installed on it to run this test - - image: cypress/base-internal:18.17.1-yarn-berry + - image: cypress/base-internal:20.18.0-yarn-berry environment: # needed to inform the bootstrap-docker-container.sh script to link the binary in the system-test project directory REPO_DIR: /root/cypress diff --git a/.github/ISSUE_TEMPLATE/1-bug-report.yml b/.github/ISSUE_TEMPLATE/1-bug-report.yml index 2f269318a1..50b3b350d5 100644 --- a/.github/ISSUE_TEMPLATE/1-bug-report.yml +++ b/.github/ISSUE_TEMPLATE/1-bug-report.yml @@ -43,7 +43,7 @@ body: attributes: label: Node version description: What version of node.js are you using to run Cypress? - placeholder: ex. v18.17.0 + placeholder: ex. v20.18.0 validations: required: true - type: input diff --git a/.github/ISSUE_TEMPLATE/2-memory-issue.yml b/.github/ISSUE_TEMPLATE/2-memory-issue.yml index 28e5bbabb1..9af01f8312 100644 --- a/.github/ISSUE_TEMPLATE/2-memory-issue.yml +++ b/.github/ISSUE_TEMPLATE/2-memory-issue.yml @@ -51,7 +51,7 @@ body: attributes: label: Node version description: What version of node.js are you using to run Cypress? - placeholder: ex. v18.17.0 + placeholder: ex. v20.18.0 validations: required: true - type: input diff --git a/.github/ISSUE_TEMPLATE/3-install-issue.yml b/.github/ISSUE_TEMPLATE/3-install-issue.yml index 6e513901e5..5298df42b2 100644 --- a/.github/ISSUE_TEMPLATE/3-install-issue.yml +++ b/.github/ISSUE_TEMPLATE/3-install-issue.yml @@ -38,7 +38,7 @@ body: attributes: label: Node version description: What version of node.js are you using to run Cypress? - placeholder: ex. v18.17.0 + placeholder: ex. v20.18.0 validations: required: true - type: dropdown diff --git a/.github/workflows/snyk_sca_scan.yaml b/.github/workflows/snyk_sca_scan.yaml index 45f504bf3a..608be5ec7a 100644 --- a/.github/workflows/snyk_sca_scan.yaml +++ b/.github/workflows/snyk_sca_scan.yaml @@ -18,7 +18,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node-version: [18.x] + node-version: [20.x] steps: - name: Checkout uses: actions/checkout@v4 @@ -28,7 +28,7 @@ jobs: - name: Set up Node.js uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20 cache: 'yarn' - name: Run yarn run: yarn diff --git a/.github/workflows/snyk_static_analysis_scan.yaml b/.github/workflows/snyk_static_analysis_scan.yaml index 58596a407c..b0e0087f1d 100644 --- a/.github/workflows/snyk_static_analysis_scan.yaml +++ b/.github/workflows/snyk_static_analysis_scan.yaml @@ -21,7 +21,7 @@ jobs: - name: Set up Node.js uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20 cache: 'yarn' - name: Run yarn run: yarn diff --git a/.github/workflows/update-browser-versions.yml b/.github/workflows/update-browser-versions.yml index 330464273f..935ffc247c 100644 --- a/.github/workflows/update-browser-versions.yml +++ b/.github/workflows/update-browser-versions.yml @@ -30,7 +30,7 @@ jobs: - name: Set up Node.js uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20 - name: Check for new Chrome versions id: get-versions uses: actions/github-script@v7 diff --git a/.github/workflows/update_v8_snapshot_cache.yml b/.github/workflows/update_v8_snapshot_cache.yml index fc36072a26..2e0dd9df69 100644 --- a/.github/workflows/update_v8_snapshot_cache.yml +++ b/.github/workflows/update_v8_snapshot_cache.yml @@ -82,7 +82,7 @@ jobs: - name: Set up Node.js uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20 cache: 'yarn' - name: Run yarn run: yarn diff --git a/.node-version b/.node-version index 4a1f488b6c..2a393af592 100644 --- a/.node-version +++ b/.node-version @@ -1 +1 @@ -18.17.1 +20.18.0 diff --git a/cli/CHANGELOG.md b/cli/CHANGELOG.md index 77cf6c7789..873a74f312 100644 --- a/cli/CHANGELOG.md +++ b/cli/CHANGELOG.md @@ -11,6 +11,17 @@ _Released 12/3/2024 (PENDING)_ - We removed yielding the second argument of `before:browser:launch` as an array of browser arguments. This behavior has been deprecated since Cypress 4.0.0. Addressed in [#30460](https://github.com/cypress-io/cypress/pull/30460). - The `cypress open-ct` and `cypress run-ct` CLI commands were removed. Please use `cypress open --component` or `cypress run --component` respectively instead. Addressed in [#30456](https://github.com/cypress-io/cypress/pull/30456) - The undocumented methods `Cypress.backend('firefox:force:gc')` and `Cypress.backend('log:memory:pressure')` were removed. Addresses [#30222](https://github.com/cypress-io/cypress/issues/30222). +- Upgraded bundled Node.js version from `18.17.0` to `20.18.0`. Addresses [#29547](https://github.com/cypress-io/cypress/issues/29547). +- It is no longer possible to make a `fetch` or `XMLHttpRequest` request from the `about:blank` page in Electron (i.e. `cy.window().then((win) => win.fetch('')`). You must use `cy.request` instead or perform some form of initial navigation via `cy.visit()`. Addressed in [#29547](https://github.com/cypress-io/cypress/pull/30394). + +**Bugfixes:** + +- The CSS pseudo-class `:dir()` is now supported when testing in Electron. Addresses [#29766](https://github.com/cypress-io/cypress/issues/29766). + +**Dependency Updates:** + +- Upgraded `electron` from `27.3.10` to `32.2.0`. Addresses [#29547](https://github.com/cypress-io/cypress/issues/29547). +- Upgraded bundled Chromium version from `118.0.5993.159` to `128.0.6613.178`. Addresses [#29547](https://github.com/cypress-io/cypress/issues/29547). ## 13.15.1 diff --git a/cli/lib/exec/spawn.js b/cli/lib/exec/spawn.js index da25f03b82..469090f751 100644 --- a/cli/lib/exec/spawn.js +++ b/cli/lib/exec/spawn.js @@ -39,12 +39,6 @@ const isDbusWarning = /Failed to connect to the bus:/ // ERROR: No matching issuer found const isCertVerifyProcBuiltin = /(^\[.*ERROR:cert_verify_proc_builtin\.cc|^----- Certificate i=0 \(OU=Cypress Proxy|^ERROR: No matching issuer found$)/ -// Electron logs a benign warning about WebSwapCGLLayer on MacOS v12 and Electron v18 due to a naming collision in shared libraries. -// Once this is fixed upstream this regex can be removed: https://github.com/electron/electron/issues/33685 -// Sample: -// objc[60540]: Class WebSwapCGLLayer is implemented in both /System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks/WebCore.framework/Versions/A/Frameworks/libANGLE-shared.dylib (0x7ffa5a006318) and /{path/to/app}/node_modules/electron/dist/Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libGLESv2.dylib (0x10f8a89c8). One of the two will be used. Which one is undefined. -const isMacOSElectronWebSwapCGLLayerWarning = /^objc\[\d+\]: Class WebSwapCGLLayer is implemented in both.*Which one is undefined\./ - /** * Electron logs benign warnings about Vulkan when run on hosts that do not have a GPU. This is coming from the primary Electron process, * and not the browser being used for tests. @@ -74,7 +68,15 @@ const isContainerVulkanDriverWarning = /^Warning: vkCreateInstance/ const isContainerVulkanStack = /^\s*at (CheckVkSuccessImpl|CreateVkInstance|Initialize|Create|operator).+(VulkanError|BackendVk).cpp/ -const GARBAGE_WARNINGS = [isXlibOrLibudevRe, isHighSierraWarningRe, isRenderWorkerRe, isDbusWarning, isCertVerifyProcBuiltin, isMacOSElectronWebSwapCGLLayerWarning, isHostVulkanDriverWarning, isContainerVulkanDriverWarning, isContainerVulkanStack] +/** + * In Electron 32.0.0 a new debug scenario log message started appearing when iframes navigate to about:blank. This is a benign message. + * https://github.com/electron/electron/issues/44368 + * Sample: + * [78887:1023/114920.074882:ERROR:debug_utils.cc(14)] Hit debug scenario: 4 + */ +const isDebugScenario4 = /^\[[^\]]+debug_utils\.cc[^\]]+\] Hit debug scenario: 4/ + +const GARBAGE_WARNINGS = [isXlibOrLibudevRe, isHighSierraWarningRe, isRenderWorkerRe, isDbusWarning, isCertVerifyProcBuiltin, isHostVulkanDriverWarning, isContainerVulkanDriverWarning, isContainerVulkanStack, isDebugScenario4] const isGarbageLineWarning = (str) => { return _.some(GARBAGE_WARNINGS, (re) => { diff --git a/cli/package.json b/cli/package.json index 4b0b45a62c..fe1ecef6c2 100644 --- a/cli/package.json +++ b/cli/package.json @@ -96,7 +96,7 @@ "execa-wrap": "1.4.0", "hasha": "5.2.2", "mocha": "6.2.2", - "mock-fs": "5.2.0", + "mock-fs": "5.4.0", "mocked-env": "1.3.2", "nock": "13.2.9", "proxyquire": "2.1.3", diff --git a/cli/test/lib/exec/spawn_spec.js b/cli/test/lib/exec/spawn_spec.js index 76a0f7799c..00738df406 100644 --- a/cli/test/lib/exec/spawn_spec.js +++ b/cli/test/lib/exec/spawn_spec.js @@ -83,8 +83,6 @@ describe('lib/exec/spawn', function () { ----- Certificate i=0 (OU=Cypress Proxy Server Certificate,O=Cypress Proxy CA,L=Internet,ST=Internet,C=Internet,CN=www.googletagmanager.com) ----- ERROR: No matching issuer found - objc[60540]: Class WebSwapCGLLayer is implemented in both /System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks/WebCore.framework/Versions/A/Frameworks/libANGLE-shared.dylib (0x7ffa5a006318) and /{path/to/app}/node_modules/electron/dist/Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libGLESv2.dylib (0x10f8a89c8). One of the two will be used. Which one is undefined. - Warning: loader_scanned_icd_add: Driver /usr/lib/x86_64-linux-gnu/libvulkan_intel.so supports Vulkan 1.2, but only supports loader interface version 4. Interface version 5 or newer required to support this version of Vulkan (Policy #LDP_DRIVER_7) Warning: loader_scanned_icd_add: Driver /usr/lib/x86_64-linux-gnu/libvulkan_lvp.so supports Vulkan 1.1, but only supports loader interface version 4. Interface version 5 or newer required to support this version of Vulkan (Policy #LDP_DRIVER_7) Warning: loader_scanned_icd_add: Driver /usr/lib/x86_64-linux-gnu/libvulkan_radeon.so supports Vulkan 1.2, but only supports loader interface version 4. Interface version 5 or newer required to support this verison of Vulkan (Policy #LDP_DRIVER_7) @@ -97,6 +95,8 @@ describe('lib/exec/spawn', function () { at Initialize (../../third_party/dawn/src/dawn/native/vulkan/BackendVk.cpp:344) at Create (../../third_party/dawn/src/dawn/native/vulkan/BackendVk.cpp:266) at operator() (../../third_party/dawn/src/dawn/native/vulkan/BackendVk.cpp:521) + + [78887:1023/114920.074882:ERROR:debug_utils.cc(14)] Hit debug scenario: 4 ` const lines = _ diff --git a/docker-compose.yml b/docker-compose.yml index 3f3c200c36..93a193a5cb 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -31,7 +31,7 @@ services: - .:/opt/cypress ci: # This should mirror the image used in workflows.yml - image: cypress/browsers-internal:node18.17.1-chrome118-ff115 + image: cypress/browsers-internal:node20.18.0-bullseye-chrome129-ff131 ports: - 5566:5566 - 5567:5567 diff --git a/npm/cypress-schematic/package.json b/npm/cypress-schematic/package.json index 43214a662e..c96995fdde 100644 --- a/npm/cypress-schematic/package.json +++ b/npm/cypress-schematic/package.json @@ -22,7 +22,7 @@ "@schematics/angular": "^14.2.1", "@types/chai-enzyme": "0.6.7", "@types/mocha": "8.0.3", - "@types/node": "^18.17.5", + "@types/node": "^20.16.0", "chai": "4.2.0", "mocha": "3.5.3", "typescript": "~5.4.5" diff --git a/npm/puppeteer/package.json b/npm/puppeteer/package.json index 84d5dafd18..2c98160358 100644 --- a/npm/puppeteer/package.json +++ b/npm/puppeteer/package.json @@ -21,7 +21,7 @@ "puppeteer-core": "^21.2.1" }, "devDependencies": { - "@types/node": "^18.17.5", + "@types/node": "^20.16.0", "chai-as-promised": "^7.1.1", "chokidar": "^3.5.3", "express": "4.19.2", diff --git a/npm/webpack-dev-server/package.json b/npm/webpack-dev-server/package.json index 58104344a9..17829d8450 100644 --- a/npm/webpack-dev-server/package.json +++ b/npm/webpack-dev-server/package.json @@ -29,7 +29,7 @@ "webpack-merge": "^5.4.0" }, "devDependencies": { - "@types/node": "18.17.5", + "@types/node": "20.16.0", "@types/proxyquire": "^1.3.28", "@types/speed-measure-webpack-plugin": "^1.3.4", "@types/webpack-dev-server-3": "npm:@types/webpack-dev-server@^3", diff --git a/package.json b/package.json index a033228246..096ed80534 100644 --- a/package.json +++ b/package.json @@ -76,8 +76,8 @@ "@babel/eslint-parser": "7.25.1", "@cypress/request": "^3.0.4", "@cypress/request-promise": "^5.0.0", - "@electron/fuses": "1.6.1", - "@electron/notarize": "^2.1.0", + "@electron/fuses": "1.8.0", + "@electron/notarize": "^2.5.0", "@fellow/eslint-plugin-coffee": "0.4.13", "@graphql-codegen/add": "3.1.0", "@graphql-codegen/cli": "2.2.0", @@ -110,7 +110,7 @@ "@types/lodash": "^4.14.168", "@types/markdown-it": "12.2.3", "@types/mocha": "8.0.3", - "@types/node": "18.17.5", + "@types/node": "20.16.0", "@types/prismjs": "1.16.0", "@types/react": "16.9.50", "@types/react-dom": "16.9.8", @@ -140,7 +140,7 @@ "dedent": "^0.7.0", "del": "3.0.0", "detect-port": "^1.6.1", - "electron": "27.3.10", + "electron": "32.2.0", "electron-builder": "^23.6.0", "enzyme-adapter-react-16": "1.12.1", "eslint": "^8.56.0", @@ -179,7 +179,7 @@ "mocha-banner": "1.1.2", "mocha-junit-reporter": "2.2.0", "mocha-multi-reporters": "1.1.7", - "mock-fs": "5.2.0", + "mock-fs": "5.4.0", "npm-packlist": "9.0.0", "p-defer": "^3.0.0", "patch-package": "6.4.7", @@ -207,7 +207,7 @@ "yarn-deduplicate": "3.1.0" }, "engines": { - "node": ">=18.17.0", + "node": ">=20.18.0", "yarn": ">=1.22.17" }, "productName": "Cypress", diff --git a/packages/app/cypress/e2e/subscriptions/errorWarningChange-subscription.cy.ts b/packages/app/cypress/e2e/subscriptions/errorWarningChange-subscription.cy.ts index e4bdc2ab8f..0ff66adcc1 100644 --- a/packages/app/cypress/e2e/subscriptions/errorWarningChange-subscription.cy.ts +++ b/packages/app/cypress/e2e/subscriptions/errorWarningChange-subscription.cy.ts @@ -62,7 +62,7 @@ module.exports = { assertLoadingIntoErrorWorks('SyntaxError') cy.contains('Your configFile is invalid').should('be.visible') - cy.contains('Unexpected token \',\'').should('be.visible') + cy.contains('Unexpected token \',\'').scrollIntoView().should('be.visible') cy.withCtx(async (ctx) => { await ctx.actions.file.writeFileInProject('cypress.config.js', ` diff --git a/packages/app/src/runner/index.ts b/packages/app/src/runner/index.ts index 3d66558389..b150604e09 100644 --- a/packages/app/src/runner/index.ts +++ b/packages/app/src/runner/index.ts @@ -292,7 +292,7 @@ function setSpecForDriver (spec: SpecFile) { * a Spec IFrame to load the spec's source code, and * initialize Cypress on the AUT. */ -function runSpecE2E (config, spec: SpecFile) { +async function runSpecE2E (config, spec: SpecFile) { const $runnerRoot = getRunnerElement() // clear AUT, if there is one. @@ -315,7 +315,7 @@ function runSpecE2E (config, spec: SpecFile) { el.remove() }) - autIframe.visitBlankPage() + await autIframe.visitBlankPage() // create Spec IFrame const specSrc = getSpecUrl({ diff --git a/packages/app/src/runner/useEventManager.ts b/packages/app/src/runner/useEventManager.ts index 1ef7cd72a6..ff3468006f 100644 --- a/packages/app/src/runner/useEventManager.ts +++ b/packages/app/src/runner/useEventManager.ts @@ -50,7 +50,7 @@ export function useEventManager () { }) eventManager.on('visit:blank', ({ testIsolation }) => { - getAutIframeModel().visitBlankPage(testIsolation) + return getAutIframeModel().visitBlankPage(testIsolation) }) eventManager.on('run:end', () => { diff --git a/packages/data-context/src/DataContext.ts b/packages/data-context/src/DataContext.ts index 895dc4d12e..6585fcd194 100644 --- a/packages/data-context/src/DataContext.ts +++ b/packages/data-context/src/DataContext.ts @@ -181,7 +181,7 @@ export class DataContext { @cached get cloud () { return new CloudDataSource({ - fetch: (...args: [RequestInfo | URL, (RequestInit | undefined)?]) => this.util.fetch(...args), + fetch: (input: RequestInfo | URL, init?: RequestInit) => this.util.fetch(input, init), getUser: () => this.coreData.user, logout: () => this.actions.auth.logout().catch(this.logTraceError), invalidateClientUrqlCache: () => this.graphql.invalidateClientUrqlCache(this), diff --git a/packages/driver/cypress/e2e/commands/net_stubbing.cy.ts b/packages/driver/cypress/e2e/commands/net_stubbing.cy.ts index 81dc0b86e7..a0756abd52 100644 --- a/packages/driver/cypress/e2e/commands/net_stubbing.cy.ts +++ b/packages/driver/cypress/e2e/commands/net_stubbing.cy.ts @@ -26,6 +26,9 @@ describe('network stubbing', { retries: 15 }, function () { beforeEach(function () { cy.spy(Cypress.utils, 'warning') + // Starting in Electron 28, we cannot use fetch or XHR from within about:blank. This is a workaround + // to ensure that we have a valid origin for our tests. + cy.visit('/fixtures/empty.html') }) context('cy.intercept()', function () { diff --git a/packages/driver/cypress/e2e/commands/waiting.cy.js b/packages/driver/cypress/e2e/commands/waiting.cy.js index 0e1e935051..7281a0688e 100644 --- a/packages/driver/cypress/e2e/commands/waiting.cy.js +++ b/packages/driver/cypress/e2e/commands/waiting.cy.js @@ -947,6 +947,10 @@ describe('src/cy/commands/waiting', () => { describe('explicit wait time', function () { it('can turn off logging when protocol is disabled', { protocolEnabled: false }, function () { + // Starting in Electron 28, we cannot use fetch or XHR from within about:blank. This is a workaround + // to ensure that we have a valid origin for our tests. + cy.visit('/fixtures/empty.html') + cy.on('_log:added', (attrs, log) => { this.hiddenLog = log }) @@ -960,6 +964,10 @@ describe('src/cy/commands/waiting', () => { }) it('can send hidden log when protocol is enabled', { protocolEnabled: true }, function () { + // Starting in Electron 28, we cannot use fetch or XHR from within about:blank. This is a workaround + // to ensure that we have a valid origin for our tests. + cy.visit('/fixtures/empty.html') + cy.on('_log:added', (attrs, log) => { this.hiddenLog = log }) @@ -977,6 +985,10 @@ describe('src/cy/commands/waiting', () => { describe('wait for xhr', function () { it('can turn off logging when protocol is disabled', { protocolEnabled: false }, function () { + // Starting in Electron 28, we cannot use fetch or XHR from within about:blank. This is a workaround + // to ensure that we have a valid origin for our tests. + cy.visit('/fixtures/empty.html') + cy.on('_log:added', (attrs, log) => { if (attrs.name === 'wait') { this.hiddenWaitLog = log @@ -1004,6 +1016,10 @@ describe('src/cy/commands/waiting', () => { }) it('can send hidden log when protocol is enabled', { protocolEnabled: true }, function () { + // Starting in Electron 28, we cannot use fetch or XHR from within about:blank. This is a workaround + // to ensure that we have a valid origin for our tests. + cy.visit('/fixtures/empty.html') + cy.on('_log:added', (attrs, log) => { if (attrs.name === 'wait') { this.hiddenWaitLog = log @@ -1035,6 +1051,10 @@ describe('src/cy/commands/waiting', () => { }) it('can turn off logging for wait for xhr', { protocolEnabled: true }, function () { + // Starting in Electron 28, we cannot use fetch or XHR from within about:blank. This is a workaround + // to ensure that we have a valid origin for our tests. + cy.visit('/fixtures/empty.html') + cy.on('_log:added', (attrs, log) => { if (attrs.name === 'wait') { this.hiddenWaitLog = log diff --git a/packages/driver/src/cypress.ts b/packages/driver/src/cypress.ts index 994de29d7d..3a723d41c0 100644 --- a/packages/driver/src/cypress.ts +++ b/packages/driver/src/cypress.ts @@ -374,8 +374,10 @@ class $Cypress { }) .then(() => { return (new Promise((resolve) => { - if (this.$autIframe) { + if (this.$autIframe.prop('contentWindow')) { resolve() + } else if (this.$autIframe) { + this.$autIframe.on('load', resolve) } else { // block initialization if the iframe has not been created yet // Used in CT when async chunks for plugins take their time to download/parse diff --git a/packages/electron/README.md b/packages/electron/README.md index 638c308bfa..208a609b28 100644 --- a/packages/electron/README.md +++ b/packages/electron/README.md @@ -55,9 +55,6 @@ Upgrading `electron` involves more than just bumping this package's `package.jso - [ ] [`/package.json`](../../package.json) - update `engines` - [ ] [`docker-compose.yml`](../../docker-compose.yml) - update Docker image to the new matching `browsers` image - [ ] [`/system-tests/test-binary/*`](../../system-tests/test-binary) - update binary system tests to use the newly published Ubuntu and Node images mentioned above, if applicable - - [ ] [`/.circleci/config.yml`](../../.circleci/config.yml) - - Update the Docker `image`s to the new matching `browsers` image. - - Update the `xcode` version to one with the same major Node.js version bundled. There is usually not an exact match, this is ok as long as the major version number as the same. - [ ] Do a global search for the old Node.js version to identify any new areas that may need updating/unification, and update those locations (and this document!) - [ ] **Update `cypress-publish-binary`** For **binary publishing**, make sure the `electron` version that we updated in [`/package.json`](../../package.json) matches the `electron` version inside the [publish binary project](https://github.com/cypress-io/cypress-publish-binary/blob/main/package.json). This is to make sure add-on tests inside the publish-binary repository work locally, but are not required to install the correct version of `electron` in CI when publishing the binary. Ensure the `electron` target in this project's `.circleci` configuration is updated as well. Set the Remove this before merging, and ensure that branch is merged as well. diff --git a/packages/electron/lib/electron.js b/packages/electron/lib/electron.js index bb0b74f2d8..f5bdfbe16d 100644 --- a/packages/electron/lib/electron.js +++ b/packages/electron/lib/electron.js @@ -94,6 +94,7 @@ module.exports = { const dest = paths.getPathToResources('app') debug('appPath %s', appPath) + debug('dest path %s', dest) // make sure this path exists! diff --git a/packages/electron/package.json b/packages/electron/package.json index 4d62d5aa49..0c31933565 100644 --- a/packages/electron/package.json +++ b/packages/electron/package.json @@ -23,6 +23,7 @@ "minimist": "1.2.8" }, "devDependencies": { + "@electron/fuses": "1.8.0", "@electron/packager": "18.3.4", "execa": "4.1.0", "mocha": "3.5.3", diff --git a/packages/errors/package.json b/packages/errors/package.json index 7b094a53ba..d35bf61297 100644 --- a/packages/errors/package.json +++ b/packages/errors/package.json @@ -26,7 +26,7 @@ "@packages/types": "0.0.0-development", "@types/chai": "4.2.15", "@types/mocha": "8.2.2", - "@types/node": "18.17.5", + "@types/node": "20.16.0", "@types/pngjs": "^6.0.1", "ansi-styles": "^5", "chai": "4.2.0", diff --git a/packages/launcher/package.json b/packages/launcher/package.json index 28be4853c3..91e380ac97 100644 --- a/packages/launcher/package.json +++ b/packages/launcher/package.json @@ -30,7 +30,7 @@ "chai": "3.5.0", "chai-as-promised": "7.1.1", "mocha": "3.5.3", - "mock-fs": "5.2.0", + "mock-fs": "5.4.0", "sinon": "^10.0.0", "sinon-chai": "3.4.0", "typescript": "~5.4.5" diff --git a/packages/network/test/unit/agent_spec.ts b/packages/network/test/unit/agent_spec.ts index 2f39e67cc6..1d48e77a6a 100644 --- a/packages/network/test/unit/agent_spec.ts +++ b/packages/network/test/unit/agent_spec.ts @@ -973,7 +973,9 @@ describe('lib/agent', function () { expect(req._header).to.equal([ 'GET / HTTP/1.1', 'host: foo.bar.baz.invalid', - 'Connection: close', + // `keep-alive` was changed to be the default in Node 19: + // https://nodejs.org/en/blog/announcements/v19-release-announce#https11-keepalive-by-default + 'Connection: keep-alive', '', '', ].join('\r\n')) @@ -988,7 +990,9 @@ describe('lib/agent', function () { 'GET http://quuz.quux.invalid/abc?def=123 HTTP/1.1', 'Host: foo.fleem.invalid', 'bing: bang', - 'Connection: close', + // `keep-alive` was changed to be the default in Node 19: + // https://nodejs.org/en/blog/announcements/v19-release-announce#https11-keepalive-by-default + 'Connection: keep-alive', '', '', ].join('\r\n')) }) diff --git a/packages/packherd-require/src/sourcemap-support.ts b/packages/packherd-require/src/sourcemap-support.ts index e4f1130bca..ca63598a64 100644 --- a/packages/packherd-require/src/sourcemap-support.ts +++ b/packages/packherd-require/src/sourcemap-support.ts @@ -225,7 +225,7 @@ class SourcemapSupport { } frame.getScriptNameOrSourceURL = function getScriptNameOrSourceURL () { - return pos.source || pos.name + return pos.source || pos.name || '' } frame.codeFrames = pos.codeFrames diff --git a/packages/server/lib/browsers/memory/index.ts b/packages/server/lib/browsers/memory/index.ts index 7024a7ae0e..fcf1584925 100644 --- a/packages/server/lib/browsers/memory/index.ts +++ b/packages/server/lib/browsers/memory/index.ts @@ -3,7 +3,6 @@ import _ from 'lodash' import si from 'systeminformation' import os from 'os' import fs from 'fs-extra' -import { performance } from 'perf_hooks' import path from 'path' import pid from 'pidusage' import { groupCyProcesses, Process } from '../../util/process_profiler' diff --git a/packages/server/lib/cloud/protocol.ts b/packages/server/lib/cloud/protocol.ts index 1c33e8ed06..ffbc1b6fce 100644 --- a/packages/server/lib/cloud/protocol.ts +++ b/packages/server/lib/cloud/protocol.ts @@ -9,7 +9,6 @@ import os from 'os' import path from 'path' import { agent } from '@packages/network' import pkg from '@packages/root' -import { performance } from 'perf_hooks' import env from '../util/env' import { putProtocolArtifact } from './api/put_protocol_artifact' diff --git a/packages/server/lib/gui/windows.ts b/packages/server/lib/gui/windows.ts index 12e2908e29..3f6fc76740 100644 --- a/packages/server/lib/gui/windows.ts +++ b/packages/server/lib/gui/windows.ts @@ -185,7 +185,7 @@ export function create (projectRoot, _options: WindowOptions, newBrowserWindow = }) } - win.webContents.on('crashed', function (...args) { + win.webContents.on('render-process-gone', function (...args) { return options.onCrashed.apply(win, args) }) diff --git a/packages/server/lib/plugins/child/run_require_async_child.js b/packages/server/lib/plugins/child/run_require_async_child.js index 4528392d6c..a7c5c31a31 100644 --- a/packages/server/lib/plugins/child/run_require_async_child.js +++ b/packages/server/lib/plugins/child/run_require_async_child.js @@ -193,7 +193,11 @@ function run (ipc, file, projectRoot) { debug('loaded config from %s %o', file, result) } catch (err) { - if (err.name === 'TSError') { + // Starting in Node 20, error objects that are thrown while using `node --load` are not properly serialized + // so we need to check both the name and the stack. We also have patched ts-node to ensure that the error is + // of the right form to be serialized. + if (err.name === 'TSError' || err.stack.includes('TSError')) { + err.name = 'TSError' // because of this https://github.com/TypeStrong/ts-node/issues/1418 // we have to do this https://stackoverflow.com/questions/25245716/remove-all-ansi-colors-styles-from-strings/29497680 const cleanMessage = stripAnsi(err.message) diff --git a/packages/server/lib/socket-base.ts b/packages/server/lib/socket-base.ts index 055b5ffd62..0d9b844ea7 100644 --- a/packages/server/lib/socket-base.ts +++ b/packages/server/lib/socket-base.ts @@ -38,6 +38,12 @@ const retry = (fn: (res: any) => void) => { return Bluebird.delay(25).then(fn) } +type GenericHandler = { on: (event: string, listener: (...args: any[]) => void) => void } +type ExtendedSocketIoServer = socketIo.SocketIOServer & GenericHandler +type ExtendedSocketIoNamespace = socketIo.SocketIONamespace & GenericHandler + +type ExtendedCDPSocketServer = CDPSocketServer & GenericHandler + export class SocketBase { private _sendResetBrowserTabsForNextSpecMessage private _sendResetBrowserStateMessage @@ -48,8 +54,8 @@ export class SocketBase { protected inRunMode: boolean protected supportsRunEvents: boolean protected ended: boolean - protected _socketIo?: socketIo.SocketIOServer - protected _cdpIo?: CDPSocketServer + protected _socketIo?: ExtendedSocketIoServer + protected _cdpIo?: ExtendedCDPSocketServer localBus: EventEmitter constructor (config: Record) { @@ -154,7 +160,7 @@ export class SocketBase { const { socketIoRoute, socketIoCookie } = config - const socketIo = this._socketIo = this.createSocketIo(server, socketIoRoute, socketIoCookie) + const socketIo = this._socketIo = this.createSocketIo(server, socketIoRoute, socketIoCookie) as ExtendedSocketIoServer const cdpIo = this._cdpIo = this.createCDPIo(socketIoRoute) automation.use({ @@ -594,7 +600,7 @@ export class SocketBase { }) this.getIos().forEach((io) => { - io?.of('/data-context').on('connection', (socket: Socket) => { + (io?.of('/data-context') as ExtendedSocketIoNamespace).on('connection', (socket: Socket) => { socket.on('graphql:request', handleGraphQLSocketRequest) }) }) diff --git a/packages/server/package.json b/packages/server/package.json index 9c3ceb8e26..4c88f86228 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -38,7 +38,7 @@ "ansi_up": "5.0.0", "ast-types": "0.13.3", "base64url": "^3.0.1", - "better-sqlite3": "9.2.2", + "better-sqlite3": "11.3.0", "black-hole-stream": "0.0.1", "bluebird": "3.7.2", "bundle-require": "3.0.4", @@ -59,7 +59,7 @@ "dayjs": "^1.9.3", "debug": "^4.3.4", "dirt-simple-file-cache": "^0.4.0", - "duplexify": "4.1.2", + "duplexify": "4.1.3", "edgedriver": "5.6.1", "electron-context-menu": "3.6.1", "errorhandler": "1.5.1", @@ -140,7 +140,7 @@ "@cypress/debugging-proxy": "2.0.1", "@cypress/sinon-chai": "2.9.1", "@cypress/webpack-dev-server": "0.0.0-development", - "@electron/rebuild": "3.2.10", + "@electron/rebuild": "3.6.2", "@ffprobe-installer/ffprobe": "1.1.0", "@packages/config": "0.0.0-development", "@packages/data-context": "0.0.0-development", @@ -164,7 +164,7 @@ "@types/chrome-remote-interface": "0.31.14", "@types/http-proxy": "1.17.4", "@types/mime": "3.0.1", - "@types/node": "18.17.5", + "@types/node": "20.16.0", "@types/request-promise": "^4.1.48", "babel-loader": "9.1.3", "chai": "1.10.0", @@ -183,7 +183,7 @@ "mochawesome-1.5.2": "npm:mochawesome@1.5.2", "mochawesome-2.3.1": "npm:mochawesome@2.3.1", "mochawesome-3.0.1": "npm:mochawesome@3.0.1", - "mock-fs": "5.2.0", + "mock-fs": "5.4.0", "mocked-env": "1.2.4", "mockery": "2.1.0", "nock": "13.2.9", diff --git a/packages/server/test/unit/browsers/memory/memory_spec.ts b/packages/server/test/unit/browsers/memory/memory_spec.ts index 4ef5defafc..a4ae3c3f1d 100644 --- a/packages/server/test/unit/browsers/memory/memory_spec.ts +++ b/packages/server/test/unit/browsers/memory/memory_spec.ts @@ -23,6 +23,10 @@ describe('lib/browsers/memory', () => { await memory.default.endProfiling() }) + after(() => { + sinon.restore() + }) + context('#getJsHeapSizeLimit', () => { it('retrieves the jsHeapSizeLimit from performance.memory', async () => { const automation = sinon.createStubInstance(Automation) diff --git a/packages/server/test/unit/cloud/protocol_spec.ts b/packages/server/test/unit/cloud/protocol_spec.ts index e68b79a169..620a6b2845 100644 --- a/packages/server/test/unit/cloud/protocol_spec.ts +++ b/packages/server/test/unit/cloud/protocol_spec.ts @@ -37,7 +37,7 @@ describe('lib/cloud/protocol', () => { beforeEach(async () => { protocolManager = new ProtocolManager() - await protocolManager.setupProtocol(stubProtocol, { runId: '1', testingType: 'e2e' }) + await protocolManager.setupProtocol(stubProtocol, { runId: '1', testingType: 'e2e', projectId: '1', cloudApi: { url: 'http://localhost:1234', retryWithBackoff: async () => {}, requestPromise: { get: async () => {} } } }) protocol = (protocolManager as any)._protocol expect((protocol as any)).not.to.be.undefined @@ -339,7 +339,7 @@ describe('lib/cloud/protocol', () => { sinon.stub(protocol, 'getDbMetadata').returns({ offset, size }) sinon.stub(fs, 'unlink').withArgs(filePath).resolves() - protocolManager.beforeSpec({ instanceId }) + protocolManager.beforeSpec({ instanceId, absolute: '/path/to/spec', relative: 'spec', relativeToCommonRoot: 'common/root', specFileExtension: '.ts', fileExtension: '.ts', specType: 'integration', baseName: 'spec', name: 'spec', fileName: 'spec.ts' }) expectedAfterSpecTotal = 225 diff --git a/packages/server/test/unit/fixture_spec.js b/packages/server/test/unit/fixture_spec.js index ddcd9dee73..40420bb276 100644 --- a/packages/server/test/unit/fixture_spec.js +++ b/packages/server/test/unit/fixture_spec.js @@ -69,7 +69,7 @@ describe('lib/fixture', () => { context('json files', () => { it('throws when json is invalid', function () { const e = - `\'bad_json.json\' is not valid JSON.\nUnexpected string in JSON at position 20 while parsing near "{\\n \\"bad\\": \\"json\\"\\n \\"should\\": \\"not parse..."` + `\'bad_json.json\' is not valid JSON.\nExpected ',' or '}' after property value in JSON at position 20 while parsing near "{\\n \\"bad\\": \\"json\\"\\n \\"should\\": \\"not parse..."` return fixture.get(this.fixturesFolder, 'bad_json.json') .then(() => { diff --git a/packages/types/package.json b/packages/types/package.json index 16bb9790ec..7d1022d356 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -12,7 +12,7 @@ }, "dependencies": {}, "devDependencies": { - "@types/node": "18.17.5", + "@types/node": "20.16.0", "devtools-protocol": "0.0.1346313", "typescript": "~5.4.5" }, diff --git a/packages/types/src/protocol.ts b/packages/types/src/protocol.ts index 85948e9296..3003abbe40 100644 --- a/packages/types/src/protocol.ts +++ b/packages/types/src/protocol.ts @@ -121,8 +121,7 @@ export interface ProtocolManagerShape extends AppCaptureProtocolCommon { beforeSpec (spec: SpecWithRelativeRoot & { instanceId: string }): void afterSpec (): Promise<{ durations: AfterSpecDurations } | undefined> reportNonFatalErrors (clientMetadata: any): Promise - uploadCaptureArtifact(artifact: CaptureArtifact): Promise - + uploadCaptureArtifact(artifact: CaptureArtifact): Promise } type Response = { diff --git a/patches/evil-dns+0.2.0.patch b/patches/evil-dns+0.2.0.patch new file mode 100644 index 0000000000..768a0c86ad --- /dev/null +++ b/patches/evil-dns+0.2.0.patch @@ -0,0 +1,23 @@ +diff --git a/node_modules/evil-dns/evil-dns.js b/node_modules/evil-dns/evil-dns.js +index 740f40d..b78790d 100644 +--- a/node_modules/evil-dns/evil-dns.js ++++ b/node_modules/evil-dns/evil-dns.js +@@ -25,10 +25,14 @@ dns.lookup = function(domain, options, callback) { + + for (i = 0; i < domains.length; i++) { + var entry = domains[i]; +- if (domain.match(entry.domain)) { +- if (!family || family === entry.family) { +- return callback(null, entry.ip, entry.family); +- } ++ // Note: this is patched to get around this issue: ++ // https://github.com/JamesHight/node-evil-dns/issues/7 ++ if (domain.match(entry.domain) && (!family || family === entry.family)) { ++ return process.nextTick( ++ options.all ++ ? () => callback(null, [{ address: entry.ip, family: entry.family }]) ++ : () => callback(null, entry.ip, entry.family) ++ ); + } + } + diff --git a/patches/ts-node+10.9.2.patch b/patches/ts-node+10.9.2.patch new file mode 100644 index 0000000000..b0c26d814e --- /dev/null +++ b/patches/ts-node+10.9.2.patch @@ -0,0 +1,30 @@ +diff --git a/node_modules/ts-node/dist/index.js b/node_modules/ts-node/dist/index.js +index c03afbf..eb5bd16 100644 +--- a/node_modules/ts-node/dist/index.js ++++ b/node_modules/ts-node/dist/index.js +@@ -93,8 +93,11 @@ exports.DEFAULTS = { + }; + /** + * TypeScript diagnostics error. ++ * ++ * Note: this is patched to extend Error instead of makeError.BaseError. This is to get around this issue: ++ * https://github.com/TypeStrong/ts-node/issues/2026 + */ +-class TSError extends make_error_1.BaseError { ++class TSError extends Error { + constructor(diagnosticText, diagnosticCodes, diagnostics = []) { + super(`тип Unable to compile TypeScript:\n${diagnosticText}`); + this.diagnosticCodes = diagnosticCodes; +@@ -110,12 +113,6 @@ class TSError extends make_error_1.BaseError { + value: diagnostics, + }); + } +- /** +- * @internal +- */ +- [exports.INSPECT_CUSTOM]() { +- return this.diagnosticText; +- } + } + exports.TSError = TSError; + const TS_NODE_SERVICE_BRAND = Symbol('TS_NODE_SERVICE_BRAND'); diff --git a/scripts/binary/binary-integrity-check-source.js b/scripts/binary/binary-integrity-check-source.js index 1f36b2cb0f..a6892a47d8 100644 --- a/scripts/binary/binary-integrity-check-source.js +++ b/scripts/binary/binary-integrity-check-source.js @@ -94,7 +94,7 @@ function validateElectron (electron) { function validateFs (fs) { // Hard coded function as this is electron code and there's not an easy way to get the function string at package time. If this fails on an updated version of electron, we'll need to update this. - if (originalToString.call(fs.readFileSync) !== `function(e,s){const n=splitPath(e);if(!n.isAsar)return F.apply(this,arguments);const{asarPath:a,filePath:i}=n,o=getOrCreateArchive(a);if(!o)throw createError("INVALID_ARCHIVE",{asarPath:a});const c=o.getFileInfo(i);if(!c)throw createError("NOT_FOUND",{asarPath:a,filePath:i});if(0===c.size)return s?"":r.Buffer.alloc(0);if(c.unpacked){const e=o.copyFileOut(i);return t.readFileSync(e,s)}if(s){if("string"==typeof s)s={encoding:s};else if("object"!=typeof s)throw new TypeError("Bad arguments")}else s={encoding:null};const{encoding:f}=s,l=r.Buffer.alloc(c.size),u=o.getFdAndValidateIntegrityLater();if(!(u>=0))throw createError("NOT_FOUND",{asarPath:a,filePath:i});return logASARAccess(a,i,c.offset),t.readSync(u,l,0,c.size,c.offset),validateBufferIntegrity(l,c.integrity),f?l.toString(f):l}`) { + if (originalToString.call(fs.readFileSync) !== `function(e,r){const n=splitPath(e);if(!n.isAsar)return w.apply(this,arguments);const{asarPath:i,filePath:a}=n,o=getOrCreateArchive(i);if(!o)throw createError("INVALID_ARCHIVE",{asarPath:i});const c=o.getFileInfo(a);if(!c)throw createError("NOT_FOUND",{asarPath:i,filePath:a});if(0===c.size)return r?"":s.Buffer.alloc(0);if(c.unpacked){const e=o.copyFileOut(a);return t.readFileSync(e,r)}if(r){if("string"==typeof r)r={encoding:r};else if("object"!=typeof r)throw new TypeError("Bad arguments")}else r={encoding:null};const{encoding:f}=r,l=s.Buffer.alloc(c.size),u=o.getFdAndValidateIntegrityLater();if(!(u>=0))throw createError("NOT_FOUND",{asarPath:i,filePath:a});return logASARAccess(i,a,c.offset),t.readSync(u,l,0,c.size,c.offset),validateBufferIntegrity(l,c.integrity),f?l.toString(f):l}`) { console.error(`Integrity check failed for toString.call(fs.readFileSync)`) throw new Error(integrityErrorMessage) } @@ -155,22 +155,27 @@ function integrityCheck (options) { }, { functionName: 'snapshotRequire', - fileName: 'evalmachine.', + // eslint-disable-next-line no-undef + fileName: [appPath, 'packages', 'server', 'index.jsc'].join(PATH_SEP), }, { functionName: 'runWithSnapshot', - fileName: 'evalmachine.', + // eslint-disable-next-line no-undef + fileName: [appPath, 'packages', 'server', 'index.jsc'].join(PATH_SEP), }, { functionName: 'hookRequire', - fileName: 'evalmachine.', + // eslint-disable-next-line no-undef + fileName: [appPath, 'packages', 'server', 'index.jsc'].join(PATH_SEP), }, { functionName: 'startCypress', - fileName: 'evalmachine.', + // eslint-disable-next-line no-undef + fileName: [appPath, 'packages', 'server', 'index.jsc'].join(PATH_SEP), }, { - fileName: 'evalmachine.', + // eslint-disable-next-line no-undef + fileName: [appPath, 'packages', 'server', 'index.jsc'].join(PATH_SEP), }, { functionName: 'v', diff --git a/scripts/gulp/tasks/gulpRegistry.ts b/scripts/gulp/tasks/gulpRegistry.ts index 74460b9bdb..65094d8276 100644 --- a/scripts/gulp/tasks/gulpRegistry.ts +++ b/scripts/gulp/tasks/gulpRegistry.ts @@ -71,24 +71,36 @@ export async function exitAfterAll () { process.stdin.pause() } -function exitHandler (msg: string) { - return async function _exitHandler (exitCode: number) { - hasExited = true - console.log(`Exiting due to ${msg} => code ${exitCode}`) - await exitAllProcesses() - process.exit(exitCode) - } +async function exitHandler (exitCode: number) { + hasExited = true + console.log(`Exiting with code ${exitCode}`) + await exitAllProcesses() + process.exit(exitCode) +} + +async function signalHandler (signal: NodeJS.Signals, code: number) { + hasExited = true + console.log(`Exiting due to ${signal}`) + await exitAllProcesses() + process.exit(128 + code) +} + +async function uncaughtExceptionHandler (error: Error) { + hasExited = true + console.log(`Uncaught exception ${error.message}`) + await exitAllProcesses() + process.exit(6) } // do something when app is closing -process.on('exit', exitHandler('exit')) +process.on('exit', exitHandler) // catches ctrl+c event -process.on('SIGINT', exitHandler('SIGINT')) +process.on('SIGINT', signalHandler) // catches "kill pid" (for example: nodemon restart) -process.on('SIGUSR1', exitHandler('SIGUSR1')) -process.on('SIGUSR2', exitHandler('SIGUSR2')) +process.on('SIGUSR1', signalHandler) +process.on('SIGUSR2', signalHandler) // catches uncaught exceptions -process.on('uncaughtException', exitHandler('uncaughtException')) +process.on('uncaughtException', uncaughtExceptionHandler) diff --git a/system-tests/lib/dep-installer/yarn.ts b/system-tests/lib/dep-installer/yarn.ts index eea69862eb..3e5b7be26d 100644 --- a/system-tests/lib/dep-installer/yarn.ts +++ b/system-tests/lib/dep-installer/yarn.ts @@ -29,11 +29,6 @@ export function getYarnCommand (opts: { // @see https://github.com/yarnpkg/yarn/issues/6407 cmd += ' --update-checksums' - // FIXME: Currently with Electron 27, we use Node 18.17.1. Angular 18 dependencies need at least Node 18.19.1 - // which throws an install error on incompatible node version. Once we upgrade to Electron 29, the below line can be removed. - // Remove this flag when https://github.com/cypress-io/cypress/issues/29547 is complete. - cmd += ' --ignore-engines' - // in CircleCI, this offline cache can be used if (opts.isCI) cmd += ` --cache-folder=${homedir()}/.yarn` else cmd += ` --cache-folder=${path.join(tempDir, 'cy-system-tests-yarn-cache', String(Date.now()))}` diff --git a/system-tests/projects/angular-13/package.json b/system-tests/projects/angular-13/package.json index a7865e8857..41243ac825 100644 --- a/system-tests/projects/angular-13/package.json +++ b/system-tests/projects/angular-13/package.json @@ -25,7 +25,7 @@ "@angular-devkit/build-angular": "~13.3.6", "@angular/cli": "~13.3.6", "@angular/compiler-cli": "~13.3.0", - "@types/node": "^18.17.5", + "@types/node": "^20.16.0", "typescript": "~4.6.2" }, "projectFixtureDirectory": "angular" diff --git a/system-tests/projects/angular-13/yarn.lock b/system-tests/projects/angular-13/yarn.lock index dacfd030ee..581680623b 100644 --- a/system-tests/projects/angular-13/yarn.lock +++ b/system-tests/projects/angular-13/yarn.lock @@ -1490,10 +1490,12 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.6.tgz#0ba49ac517ad69abe7a1508bc9b3a5483df9d5d7" integrity sha512-/xUq6H2aQm261exT6iZTMifUySEt4GR5KX8eYyY+C4MSNPqSh9oNIP7tz2GLKTlFaiBbgZNxffoR3CVRG+cljw== -"@types/node@^18.17.5": - version "18.17.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.17.5.tgz#c58b12bca8c2a437b38c15270615627e96dd0bc5" - integrity sha512-xNbS75FxH6P4UXTPUJp/zNPq6/xsfdJKussCWNOnz4aULWIRwMgP1LgaB5RiBnMX1DPCYenuqGZfnIAx5mbFLA== +"@types/node@^20.16.0": + version "20.16.11" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.16.11.tgz#9b544c3e716b1577ac12e70f9145193f32750b33" + integrity sha512-y+cTCACu92FyA5fgQSAI8A1H429g7aSK2HsO7K4XYUWc4dY5IUz55JSDIYT6/VsOLfGy8vmvQYC2hfb0iF16Uw== + dependencies: + undici-types "~6.19.2" "@types/parse-json@^4.0.0": version "4.0.0" @@ -5831,6 +5833,11 @@ typescript@~4.6.2: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.4.tgz#caa78bbc3a59e6a5c510d35703f6a09877ce45e9" integrity sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg== +undici-types@~6.19.2: + version "6.19.8" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" + integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== + unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" diff --git a/system-tests/projects/issue-25951-next-app/package.json b/system-tests/projects/issue-25951-next-app/package.json index 260c7206a1..9316ffabdd 100644 --- a/system-tests/projects/issue-25951-next-app/package.json +++ b/system-tests/projects/issue-25951-next-app/package.json @@ -3,7 +3,7 @@ "version": "0.0.0", "private": true, "dependencies": { - "@types/node": "18.17.5", + "@types/node": "20.16.0", "@types/react": "18.0.32", "@types/react-dom": "18.0.11", "next": "13.2.4", diff --git a/system-tests/projects/issue-25951-next-app/yarn.lock b/system-tests/projects/issue-25951-next-app/yarn.lock index 24bf9a4dfd..cb0252b29c 100644 --- a/system-tests/projects/issue-25951-next-app/yarn.lock +++ b/system-tests/projects/issue-25951-next-app/yarn.lock @@ -79,10 +79,12 @@ dependencies: tslib "^2.4.0" -"@types/node@18.17.5": - version "18.17.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.17.5.tgz#c58b12bca8c2a437b38c15270615627e96dd0bc5" - integrity sha512-xNbS75FxH6P4UXTPUJp/zNPq6/xsfdJKussCWNOnz4aULWIRwMgP1LgaB5RiBnMX1DPCYenuqGZfnIAx5mbFLA== +"@types/node@20.16.0": + version "20.16.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.16.0.tgz#02e5cd414f76bf345874ee65a1e5590d755d894f" + integrity sha512-vDxceJcoZhIVh67S568bm1UGZO0DX0hpplJZxzeXMKwIPLn190ec5RRxQ69BKhX44SUGIxxgMdDY557lGLKprQ== + dependencies: + undici-types "~6.19.2" "@types/prop-types@*": version "15.7.5" @@ -224,3 +226,8 @@ typescript@5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.3.tgz#fe976f0c826a88d0a382007681cbb2da44afdedf" integrity sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA== + +undici-types@~6.19.2: + version "6.19.8" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" + integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== diff --git a/system-tests/projects/no-specs-vue-2/package.json b/system-tests/projects/no-specs-vue-2/package.json index 207a0cf204..2590fe501b 100644 --- a/system-tests/projects/no-specs-vue-2/package.json +++ b/system-tests/projects/no-specs-vue-2/package.json @@ -3,9 +3,9 @@ "version": "0.1.0", "private": true, "scripts": { - "serve": "vue-cli-service serve", "build": "vue-cli-service build", - "lint": "vue-cli-service lint" + "lint": "vue-cli-service lint", + "serve": "vue-cli-service serve" }, "dependencies": { "core-js": "^3.8.3", @@ -22,5 +22,8 @@ "> 1%", "last 2 versions", "not dead" - ] + ], + "resolutions": { + "@achrinza/node-ipc": "9.2.9" + } } diff --git a/system-tests/projects/no-specs-vue-2/yarn.lock b/system-tests/projects/no-specs-vue-2/yarn.lock index de826d87bb..033d4ff976 100644 --- a/system-tests/projects/no-specs-vue-2/yarn.lock +++ b/system-tests/projects/no-specs-vue-2/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@achrinza/node-ipc@^9.2.5": - version "9.2.5" - resolved "https://registry.yarnpkg.com/@achrinza/node-ipc/-/node-ipc-9.2.5.tgz#29788e608ff41121f0543491da723b243266ac28" - integrity sha512-kBX7Ay911iXZ3VZ1pYltj3Rfu7Ow9H7sK4H4RSfWIfWR2JKNB40K808wppoRIEzE2j2hXLU+r6TJgCAliCGhyQ== +"@achrinza/node-ipc@9.2.9", "@achrinza/node-ipc@^9.2.5": + version "9.2.9" + resolved "https://registry.yarnpkg.com/@achrinza/node-ipc/-/node-ipc-9.2.9.tgz#ab4815d9b16f1c83a479fe8791522a3abebb1c6a" + integrity sha512-7s0VcTwiK/0tNOVdSX9FWMeFdOEcsAOz9HesBldXxFMaGvIak7KC2z9tV9EgsQXn6KUsWsfIkViMNuIo0GoZDQ== dependencies: "@node-ipc/js-queue" "2.0.3" event-pubsub "4.3.0" diff --git a/system-tests/projects/vuecli4-vue2/package.json b/system-tests/projects/vuecli4-vue2/package.json index 6c05239413..40bdd28b3b 100644 --- a/system-tests/projects/vuecli4-vue2/package.json +++ b/system-tests/projects/vuecli4-vue2/package.json @@ -7,7 +7,7 @@ "vue-template-compiler": "^2.6.11" }, "resolutions": { - "@achrinza/node-ipc": "9.2.5" + "@achrinza/node-ipc": "9.2.9" }, "projectFixtureDirectory": "vue2-cli" } diff --git a/system-tests/projects/vuecli4-vue2/yarn.lock b/system-tests/projects/vuecli4-vue2/yarn.lock index c2fab61559..03eaef488a 100644 --- a/system-tests/projects/vuecli4-vue2/yarn.lock +++ b/system-tests/projects/vuecli4-vue2/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@achrinza/node-ipc@9.2.2", "@achrinza/node-ipc@9.2.5": - version "9.2.5" - resolved "https://registry.yarnpkg.com/@achrinza/node-ipc/-/node-ipc-9.2.5.tgz#29788e608ff41121f0543491da723b243266ac28" - integrity sha512-kBX7Ay911iXZ3VZ1pYltj3Rfu7Ow9H7sK4H4RSfWIfWR2JKNB40K808wppoRIEzE2j2hXLU+r6TJgCAliCGhyQ== +"@achrinza/node-ipc@9.2.2", "@achrinza/node-ipc@9.2.9": + version "9.2.9" + resolved "https://registry.yarnpkg.com/@achrinza/node-ipc/-/node-ipc-9.2.9.tgz#ab4815d9b16f1c83a479fe8791522a3abebb1c6a" + integrity sha512-7s0VcTwiK/0tNOVdSX9FWMeFdOEcsAOz9HesBldXxFMaGvIak7KC2z9tV9EgsQXn6KUsWsfIkViMNuIo0GoZDQ== dependencies: "@node-ipc/js-queue" "2.0.3" event-pubsub "4.3.0" diff --git a/system-tests/projects/vuecli4-vue3/package.json b/system-tests/projects/vuecli4-vue3/package.json index 29a3ed3bd7..69955c2cdc 100644 --- a/system-tests/projects/vuecli4-vue3/package.json +++ b/system-tests/projects/vuecli4-vue3/package.json @@ -7,7 +7,7 @@ "@vue/compiler-sfc": "^3.0.0" }, "resolutions": { - "@achrinza/node-ipc": "9.2.5" + "@achrinza/node-ipc": "9.2.9" }, "projectFixtureDirectory": "vue-cli" } diff --git a/system-tests/projects/vuecli4-vue3/yarn.lock b/system-tests/projects/vuecli4-vue3/yarn.lock index 105568089e..fdc432fedd 100644 --- a/system-tests/projects/vuecli4-vue3/yarn.lock +++ b/system-tests/projects/vuecli4-vue3/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@achrinza/node-ipc@9.2.2", "@achrinza/node-ipc@9.2.5": - version "9.2.5" - resolved "https://registry.yarnpkg.com/@achrinza/node-ipc/-/node-ipc-9.2.5.tgz#29788e608ff41121f0543491da723b243266ac28" - integrity sha512-kBX7Ay911iXZ3VZ1pYltj3Rfu7Ow9H7sK4H4RSfWIfWR2JKNB40K808wppoRIEzE2j2hXLU+r6TJgCAliCGhyQ== +"@achrinza/node-ipc@9.2.2", "@achrinza/node-ipc@9.2.9": + version "9.2.9" + resolved "https://registry.yarnpkg.com/@achrinza/node-ipc/-/node-ipc-9.2.9.tgz#ab4815d9b16f1c83a479fe8791522a3abebb1c6a" + integrity sha512-7s0VcTwiK/0tNOVdSX9FWMeFdOEcsAOz9HesBldXxFMaGvIak7KC2z9tV9EgsQXn6KUsWsfIkViMNuIo0GoZDQ== dependencies: "@node-ipc/js-queue" "2.0.3" event-pubsub "4.3.0" diff --git a/system-tests/projects/vuecli5-vue3-type-module/package.json b/system-tests/projects/vuecli5-vue3-type-module/package.json index 53a1584559..fcba59a5ee 100644 --- a/system-tests/projects/vuecli5-vue3-type-module/package.json +++ b/system-tests/projects/vuecli5-vue3-type-module/package.json @@ -7,7 +7,7 @@ }, "type": "module", "resolutions": { - "@achrinza/node-ipc": "9.2.5" + "@achrinza/node-ipc": "9.2.9" }, "projectFixtureDirectory": "vue-cli" } diff --git a/system-tests/projects/vuecli5-vue3-type-module/yarn.lock b/system-tests/projects/vuecli5-vue3-type-module/yarn.lock index 3abf63467b..785c29d614 100644 --- a/system-tests/projects/vuecli5-vue3-type-module/yarn.lock +++ b/system-tests/projects/vuecli5-vue3-type-module/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@achrinza/node-ipc@9.2.2", "@achrinza/node-ipc@9.2.5": - version "9.2.5" - resolved "https://registry.yarnpkg.com/@achrinza/node-ipc/-/node-ipc-9.2.5.tgz#29788e608ff41121f0543491da723b243266ac28" - integrity sha512-kBX7Ay911iXZ3VZ1pYltj3Rfu7Ow9H7sK4H4RSfWIfWR2JKNB40K808wppoRIEzE2j2hXLU+r6TJgCAliCGhyQ== +"@achrinza/node-ipc@9.2.2", "@achrinza/node-ipc@9.2.9": + version "9.2.9" + resolved "https://registry.yarnpkg.com/@achrinza/node-ipc/-/node-ipc-9.2.9.tgz#ab4815d9b16f1c83a479fe8791522a3abebb1c6a" + integrity sha512-7s0VcTwiK/0tNOVdSX9FWMeFdOEcsAOz9HesBldXxFMaGvIak7KC2z9tV9EgsQXn6KUsWsfIkViMNuIo0GoZDQ== dependencies: "@node-ipc/js-queue" "2.0.3" event-pubsub "4.3.0" diff --git a/system-tests/projects/vuecli5-vue3/package.json b/system-tests/projects/vuecli5-vue3/package.json index 10ed666b2d..617f9ee7bd 100644 --- a/system-tests/projects/vuecli5-vue3/package.json +++ b/system-tests/projects/vuecli5-vue3/package.json @@ -6,7 +6,7 @@ "@vue/cli-service": "~5.0.0" }, "resolutions": { - "@achrinza/node-ipc": "9.2.5" + "@achrinza/node-ipc": "9.2.9" }, "projectFixtureDirectory": "vue-cli" } diff --git a/system-tests/projects/vuecli5-vue3/yarn.lock b/system-tests/projects/vuecli5-vue3/yarn.lock index 3abf63467b..785c29d614 100644 --- a/system-tests/projects/vuecli5-vue3/yarn.lock +++ b/system-tests/projects/vuecli5-vue3/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@achrinza/node-ipc@9.2.2", "@achrinza/node-ipc@9.2.5": - version "9.2.5" - resolved "https://registry.yarnpkg.com/@achrinza/node-ipc/-/node-ipc-9.2.5.tgz#29788e608ff41121f0543491da723b243266ac28" - integrity sha512-kBX7Ay911iXZ3VZ1pYltj3Rfu7Ow9H7sK4H4RSfWIfWR2JKNB40K808wppoRIEzE2j2hXLU+r6TJgCAliCGhyQ== +"@achrinza/node-ipc@9.2.2", "@achrinza/node-ipc@9.2.9": + version "9.2.9" + resolved "https://registry.yarnpkg.com/@achrinza/node-ipc/-/node-ipc-9.2.9.tgz#ab4815d9b16f1c83a479fe8791522a3abebb1c6a" + integrity sha512-7s0VcTwiK/0tNOVdSX9FWMeFdOEcsAOz9HesBldXxFMaGvIak7KC2z9tV9EgsQXn6KUsWsfIkViMNuIo0GoZDQ== dependencies: "@node-ipc/js-queue" "2.0.3" event-pubsub "4.3.0" diff --git a/system-tests/projects/vuecli5vue3-unconfigured/package.json b/system-tests/projects/vuecli5vue3-unconfigured/package.json index 4d313d306a..8d99e6f9e3 100644 --- a/system-tests/projects/vuecli5vue3-unconfigured/package.json +++ b/system-tests/projects/vuecli5vue3-unconfigured/package.json @@ -19,6 +19,6 @@ "not ie 11" ], "resolutions": { - "@achrinza/node-ipc": "9.2.5" + "@achrinza/node-ipc": "9.2.9" } } diff --git a/system-tests/projects/vuecli5vue3-unconfigured/yarn.lock b/system-tests/projects/vuecli5vue3-unconfigured/yarn.lock index 815b07eb60..6f0288ea06 100644 --- a/system-tests/projects/vuecli5vue3-unconfigured/yarn.lock +++ b/system-tests/projects/vuecli5vue3-unconfigured/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@achrinza/node-ipc@9.2.2", "@achrinza/node-ipc@9.2.5": - version "9.2.5" - resolved "https://registry.yarnpkg.com/@achrinza/node-ipc/-/node-ipc-9.2.5.tgz#29788e608ff41121f0543491da723b243266ac28" - integrity sha512-kBX7Ay911iXZ3VZ1pYltj3Rfu7Ow9H7sK4H4RSfWIfWR2JKNB40K808wppoRIEzE2j2hXLU+r6TJgCAliCGhyQ== +"@achrinza/node-ipc@9.2.2", "@achrinza/node-ipc@9.2.9": + version "9.2.9" + resolved "https://registry.yarnpkg.com/@achrinza/node-ipc/-/node-ipc-9.2.9.tgz#ab4815d9b16f1c83a479fe8791522a3abebb1c6a" + integrity sha512-7s0VcTwiK/0tNOVdSX9FWMeFdOEcsAOz9HesBldXxFMaGvIak7KC2z9tV9EgsQXn6KUsWsfIkViMNuIo0GoZDQ== dependencies: "@node-ipc/js-queue" "2.0.3" event-pubsub "4.3.0" diff --git a/system-tests/projects/vueclivue2-configured/package.json b/system-tests/projects/vueclivue2-configured/package.json index 82c5dbcc2c..ea2355fca2 100644 --- a/system-tests/projects/vueclivue2-configured/package.json +++ b/system-tests/projects/vueclivue2-configured/package.json @@ -19,6 +19,6 @@ "not dead" ], "resolutions": { - "@achrinza/node-ipc": "9.2.5" + "@achrinza/node-ipc": "9.2.9" } } diff --git a/system-tests/projects/vueclivue2-configured/yarn.lock b/system-tests/projects/vueclivue2-configured/yarn.lock index 4f7fe99a07..008d129743 100644 --- a/system-tests/projects/vueclivue2-configured/yarn.lock +++ b/system-tests/projects/vueclivue2-configured/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@achrinza/node-ipc@9.2.2", "@achrinza/node-ipc@9.2.5": - version "9.2.5" - resolved "https://registry.yarnpkg.com/@achrinza/node-ipc/-/node-ipc-9.2.5.tgz#29788e608ff41121f0543491da723b243266ac28" - integrity sha512-kBX7Ay911iXZ3VZ1pYltj3Rfu7Ow9H7sK4H4RSfWIfWR2JKNB40K808wppoRIEzE2j2hXLU+r6TJgCAliCGhyQ== +"@achrinza/node-ipc@9.2.2", "@achrinza/node-ipc@9.2.9": + version "9.2.9" + resolved "https://registry.yarnpkg.com/@achrinza/node-ipc/-/node-ipc-9.2.9.tgz#ab4815d9b16f1c83a479fe8791522a3abebb1c6a" + integrity sha512-7s0VcTwiK/0tNOVdSX9FWMeFdOEcsAOz9HesBldXxFMaGvIak7KC2z9tV9EgsQXn6KUsWsfIkViMNuIo0GoZDQ== dependencies: "@node-ipc/js-queue" "2.0.3" event-pubsub "4.3.0" diff --git a/system-tests/projects/vueclivue2-unconfigured/package.json b/system-tests/projects/vueclivue2-unconfigured/package.json index 82c5dbcc2c..ea2355fca2 100644 --- a/system-tests/projects/vueclivue2-unconfigured/package.json +++ b/system-tests/projects/vueclivue2-unconfigured/package.json @@ -19,6 +19,6 @@ "not dead" ], "resolutions": { - "@achrinza/node-ipc": "9.2.5" + "@achrinza/node-ipc": "9.2.9" } } diff --git a/system-tests/projects/vueclivue2-unconfigured/yarn.lock b/system-tests/projects/vueclivue2-unconfigured/yarn.lock index 7562fed0da..a6bea63729 100644 --- a/system-tests/projects/vueclivue2-unconfigured/yarn.lock +++ b/system-tests/projects/vueclivue2-unconfigured/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@achrinza/node-ipc@9.2.2", "@achrinza/node-ipc@9.2.5": - version "9.2.5" - resolved "https://registry.yarnpkg.com/@achrinza/node-ipc/-/node-ipc-9.2.5.tgz#29788e608ff41121f0543491da723b243266ac28" - integrity sha512-kBX7Ay911iXZ3VZ1pYltj3Rfu7Ow9H7sK4H4RSfWIfWR2JKNB40K808wppoRIEzE2j2hXLU+r6TJgCAliCGhyQ== +"@achrinza/node-ipc@9.2.2", "@achrinza/node-ipc@9.2.9": + version "9.2.9" + resolved "https://registry.yarnpkg.com/@achrinza/node-ipc/-/node-ipc-9.2.9.tgz#ab4815d9b16f1c83a479fe8791522a3abebb1c6a" + integrity sha512-7s0VcTwiK/0tNOVdSX9FWMeFdOEcsAOz9HesBldXxFMaGvIak7KC2z9tV9EgsQXn6KUsWsfIkViMNuIo0GoZDQ== dependencies: "@node-ipc/js-queue" "2.0.3" event-pubsub "4.3.0" diff --git a/system-tests/projects/vueclivue3-unconfigured/package.json b/system-tests/projects/vueclivue3-unconfigured/package.json index 6e2f672c5a..1499f323c5 100644 --- a/system-tests/projects/vueclivue3-unconfigured/package.json +++ b/system-tests/projects/vueclivue3-unconfigured/package.json @@ -19,6 +19,6 @@ "not dead" ], "resolutions": { - "@achrinza/node-ipc": "9.2.5" + "@achrinza/node-ipc": "9.2.9" } } diff --git a/system-tests/projects/vueclivue3-unconfigured/yarn.lock b/system-tests/projects/vueclivue3-unconfigured/yarn.lock index 67195997a7..0eb6f976f2 100644 --- a/system-tests/projects/vueclivue3-unconfigured/yarn.lock +++ b/system-tests/projects/vueclivue3-unconfigured/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@achrinza/node-ipc@9.2.2", "@achrinza/node-ipc@9.2.5": - version "9.2.5" - resolved "https://registry.yarnpkg.com/@achrinza/node-ipc/-/node-ipc-9.2.5.tgz#29788e608ff41121f0543491da723b243266ac28" - integrity sha512-kBX7Ay911iXZ3VZ1pYltj3Rfu7Ow9H7sK4H4RSfWIfWR2JKNB40K808wppoRIEzE2j2hXLU+r6TJgCAliCGhyQ== +"@achrinza/node-ipc@9.2.2", "@achrinza/node-ipc@9.2.9": + version "9.2.9" + resolved "https://registry.yarnpkg.com/@achrinza/node-ipc/-/node-ipc-9.2.9.tgz#ab4815d9b16f1c83a479fe8791522a3abebb1c6a" + integrity sha512-7s0VcTwiK/0tNOVdSX9FWMeFdOEcsAOz9HesBldXxFMaGvIak7KC2z9tV9EgsQXn6KUsWsfIkViMNuIo0GoZDQ== dependencies: "@node-ipc/js-queue" "2.0.3" event-pubsub "4.3.0" diff --git a/system-tests/test-binary/module_api_spec.ts b/system-tests/test-binary/module_api_spec.ts index 186b8e8b6e..1d4126765c 100644 --- a/system-tests/test-binary/module_api_spec.ts +++ b/system-tests/test-binary/module_api_spec.ts @@ -3,7 +3,7 @@ import systemTests from '../lib/system-tests' describe('module API', () => { systemTests.it('can run module API Mocha spec', { timeout: 240000, - dockerImage: 'cypress/base-internal:18.17.1', + dockerImage: 'cypress/base-internal:20.18.0-bullseye', withBinary: true, project: 'module-api', browser: 'electron', diff --git a/system-tests/test-binary/node_versions_spec.ts b/system-tests/test-binary/node_versions_spec.ts index 32c0d7574a..5e32da3ed7 100644 --- a/system-tests/test-binary/node_versions_spec.ts +++ b/system-tests/test-binary/node_versions_spec.ts @@ -28,6 +28,7 @@ describe('binary node versions', () => { [ 'cypress/base:18.16.1', 'cypress/base:20.12.2', + 'cypress/base:20.18.0', 'cypress/base:22.0.0', 'cypress/base:22.7.0', ].forEach(smokeTestDockerImage) @@ -37,6 +38,7 @@ describe('type: module', () => { [ 'cypress/base:18.16.1', 'cypress/base:20.12.2', + 'cypress/base:20.18.0', 'cypress/base:22.0.0', 'cypress/base:22.7.0', ].forEach((dockerImage) => { diff --git a/tooling/electron-mksnapshot/package.json b/tooling/electron-mksnapshot/package.json index cc0e028fa2..02a9d18ab8 100644 --- a/tooling/electron-mksnapshot/package.json +++ b/tooling/electron-mksnapshot/package.json @@ -15,7 +15,7 @@ "watch": "tsc --watch" }, "dependencies": { - "@electron/get": "^2.0.2", + "@electron/get": "^3.0.0", "debug": "^4.3.4", "extract-zip": "^2.0.1", "fs-extra": "^10.0.0", diff --git a/tooling/v8-snapshot/cache/darwin/snapshot-meta.json b/tooling/v8-snapshot/cache/darwin/snapshot-meta.json index f53d312ffa..ede9a60a4c 100644 --- a/tooling/v8-snapshot/cache/darwin/snapshot-meta.json +++ b/tooling/v8-snapshot/cache/darwin/snapshot-meta.json @@ -4174,5 +4174,5 @@ "./tooling/v8-snapshot/cache/darwin/snapshot-entry.js" ], "deferredHashFile": "yarn.lock", - "deferredHash": "9b283a2e8f438c68097fdc62abe1caeddc6f46ded68178840c93f2e2a7db6007" + "deferredHash": "4b37beb9d15566a50cffd97e30705af6bdf32e9cb3ebdfc2693207a051e19207" } \ No newline at end of file diff --git a/tooling/v8-snapshot/cache/linux/snapshot-meta.json b/tooling/v8-snapshot/cache/linux/snapshot-meta.json index 964d826179..d579bdd5ee 100644 --- a/tooling/v8-snapshot/cache/linux/snapshot-meta.json +++ b/tooling/v8-snapshot/cache/linux/snapshot-meta.json @@ -4177,5 +4177,5 @@ "./tooling/v8-snapshot/cache/linux/snapshot-entry.js" ], "deferredHashFile": "yarn.lock", - "deferredHash": "9b283a2e8f438c68097fdc62abe1caeddc6f46ded68178840c93f2e2a7db6007" + "deferredHash": "4b37beb9d15566a50cffd97e30705af6bdf32e9cb3ebdfc2693207a051e19207" } \ No newline at end of file diff --git a/tooling/v8-snapshot/cache/win32/snapshot-meta.json b/tooling/v8-snapshot/cache/win32/snapshot-meta.json index 1faa7f4690..9609b5ba15 100644 --- a/tooling/v8-snapshot/cache/win32/snapshot-meta.json +++ b/tooling/v8-snapshot/cache/win32/snapshot-meta.json @@ -4177,5 +4177,5 @@ "./tooling/v8-snapshot/cache/win32/snapshot-entry.js" ], "deferredHashFile": "yarn.lock", - "deferredHash": "cf1bfd1027f7cc752aaead36fdc7fb9b0fbac81e410d91ba690dd29a8043aaa5" + "deferredHash": "9c079b1a38d5f33a74e3fd202e92ed1f2253dc66b178b764561b92ce8e16d5b4" } \ No newline at end of file diff --git a/tooling/v8-snapshot/src/generator/snapshot-generator.ts b/tooling/v8-snapshot/src/generator/snapshot-generator.ts index a1549cadae..61eb611e11 100644 --- a/tooling/v8-snapshot/src/generator/snapshot-generator.ts +++ b/tooling/v8-snapshot/src/generator/snapshot-generator.ts @@ -475,7 +475,9 @@ export class SnapshotGenerator { // 2. Run the `mksnapshot` binary providing it the path to our snapshot // script - const args = [this.snapshotScriptPath, '--output_dir', this.snapshotBinDir] + // --no-use-ic flag is a workaround + // see https://issues.chromium.org/issues/345280736#comment12 + const args = [this.snapshotScriptPath, '--output_dir', this.snapshotBinDir, '--no-use-ic'] try { const { snapshotBlobFile, v8ContextFile } = await syncAndRun( diff --git a/yarn.lock b/yarn.lock index cfda207108..e5ad690802 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2955,16 +2955,16 @@ glob "^7.1.6" minimatch "^3.0.4" -"@electron/fuses@1.6.1": - version "1.6.1" - resolved "https://registry.yarnpkg.com/@electron/fuses/-/fuses-1.6.1.tgz#c639e018202a59e3cd8911fa943e22c63dd3e6fc" - integrity sha512-J7kRMlc0vP03uzUuhHNEqffqZMZ6FRe0YGMOJO4kJObmYkOg38mMTvbbktEj+oteH5nfyhbQUkHIYnMSh7T/CQ== +"@electron/fuses@1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@electron/fuses/-/fuses-1.8.0.tgz#ad34d3cc4703b1258b83f6989917052cfc1490a0" + integrity sha512-zx0EIq78WlY/lBb1uXlziZmDZI4ubcCXIMJ4uGjXzZW0nS19TjSPeXPAjzzTmKQlJUZm0SbmZhPKP7tuQ1SsEw== dependencies: chalk "^4.1.1" fs-extra "^9.0.1" minimist "^1.2.5" -"@electron/get@^2.0.0", "@electron/get@^2.0.2": +"@electron/get@^2.0.0": version "2.0.2" resolved "https://registry.yarnpkg.com/@electron/get/-/get-2.0.2.tgz#ae2a967b22075e9c25aaf00d5941cd79c21efd7e" integrity sha512-eFZVFoRXb3GFGd7Ak7W4+6jBl9wBtiZ4AaYOse97ej6mKj5tkyO0dUnUChs1IhJZtx1BENo4/p4WUTXpi6vT+g== @@ -2994,19 +2994,19 @@ optionalDependencies: global-agent "^3.0.0" -"@electron/notarize@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@electron/notarize/-/notarize-2.1.0.tgz#76aaec10c8687225e8d0a427cc9df67611c46ff3" - integrity sha512-Q02xem1D0sg4v437xHgmBLxI2iz/fc0D4K7fiVWHa/AnW8o7D751xyKNXgziA6HrTOme9ul1JfWN5ark8WH1xA== +"@electron/notarize@^2.1.0", "@electron/notarize@^2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@electron/notarize/-/notarize-2.5.0.tgz#d4d25356adfa29df4a76bd64a8bd347237cd251e" + integrity sha512-jNT8nwH1f9X5GEITXaQ8IF/KdskvIkOFfB2CvwumsveVidzpSc+mvhhTMdAGSYF3O+Nq49lJ7y+ssODRXu06+A== dependencies: debug "^4.1.1" fs-extra "^9.0.1" promise-retry "^2.0.1" "@electron/osx-sign@^1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@electron/osx-sign/-/osx-sign-1.0.5.tgz#0af7149f2fce44d1a8215660fd25a9fb610454d8" - integrity sha512-k9ZzUQtamSoweGQDV2jILiRIHUu7lYlJ3c6IEmjv1hC17rclE+eb9U+f6UFlOOETo0JzY1HNlXy4YOlCvl+Lww== + version "1.3.1" + resolved "https://registry.yarnpkg.com/@electron/osx-sign/-/osx-sign-1.3.1.tgz#faf7eeca7ca004a6be541dc4cf7a1bd59ec59b1c" + integrity sha512-BAfviURMHpmb1Yb50YbCxnOY0wfwaLXH5KJ4+80zS0gUkzDX3ec23naTlEqKsN+PwYn+a1cCzM7BJ4Wcd3sGzw== dependencies: compare-version "^0.1.2" debug "^4.3.4" @@ -3040,10 +3040,10 @@ semver "^7.1.3" yargs-parser "^21.1.1" -"@electron/rebuild@3.2.10": - version "3.2.10" - resolved "https://registry.yarnpkg.com/@electron/rebuild/-/rebuild-3.2.10.tgz#adc9443179709d4e4b93a68fac6a08b9a3b9e5e6" - integrity sha512-SUBM6Mwi3yZaDFQjZzfGKpYTtOp9m60glounwX6tfGeVc/ZOl4jbquktUcyy7gYSLDWFLtKkftkY2xgMJZLQgg== +"@electron/rebuild@3.6.2": + version "3.6.2" + resolved "https://registry.yarnpkg.com/@electron/rebuild/-/rebuild-3.6.2.tgz#234f76d08566d558a80a615a78d8735f39bf5e9f" + integrity sha512-fTSoWdbrPTmQOwvct4VnJH45aJg79WRabuNqt7cAWIno5kTXv1QD6qVmR2e8wmHi/xryaiVINl1gcEhKGjREVw== dependencies: "@malept/cross-spawn-promise" "^2.0.0" chalk "^4.0.0" @@ -3051,11 +3051,11 @@ detect-libc "^2.0.1" fs-extra "^10.0.0" got "^11.7.0" - lzma-native "^8.0.5" - node-abi "^3.0.0" - node-api-version "^0.1.4" + node-abi "^3.45.0" + node-api-version "^0.2.0" node-gyp "^9.0.0" ora "^5.1.0" + read-binary-file-arch "^1.0.6" semver "^7.3.5" tar "^6.0.5" yargs "^17.0.1" @@ -7879,10 +7879,10 @@ dependencies: "@types/node" "*" -"@types/node@*", "@types/node@>=10.0.0", "@types/node@^20.1.0": - version "20.16.9" - resolved "https://registry.npmjs.org/@types/node/-/node-20.16.9.tgz#1217c6cc77c4f3aaf4a6c76fb56b790e81e48120" - integrity sha512-rkvIVJxsOfBejxK7I0FO5sa2WxFmJCzoDwcd88+fq/CUfynNywTo/1/T6hyFz22CyztsnLS9nVlHOnTI36RH5w== +"@types/node@*", "@types/node@>=10.0.0", "@types/node@^20.1.0", "@types/node@^20.16.0", "@types/node@^20.9.0": + version "20.16.12" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.16.12.tgz#61cc9be049584b472fa31e465aa0ab3c090dac56" + integrity sha512-LfPFB0zOeCeCNQV3i+67rcoVvoN5n0NVuR2vLG0O5ySQMgchuZlC4lgz546ZOJyDtj5KIgOxy+lacOimfqZAIA== dependencies: undici-types "~6.19.2" @@ -7891,21 +7891,18 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-16.9.1.tgz#0611b37db4246c937feef529ddcc018cf8e35708" integrity sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g== -"@types/node@18.17.5": - version "18.17.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.17.5.tgz#c58b12bca8c2a437b38c15270615627e96dd0bc5" - integrity sha512-xNbS75FxH6P4UXTPUJp/zNPq6/xsfdJKussCWNOnz4aULWIRwMgP1LgaB5RiBnMX1DPCYenuqGZfnIAx5mbFLA== +"@types/node@20.16.0": + version "20.16.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.16.0.tgz#02e5cd414f76bf345874ee65a1e5590d755d894f" + integrity sha512-vDxceJcoZhIVh67S568bm1UGZO0DX0hpplJZxzeXMKwIPLn190ec5RRxQ69BKhX44SUGIxxgMdDY557lGLKprQ== + dependencies: + undici-types "~6.19.2" "@types/node@^12.12.29", "@types/node@^12.12.7": version "12.20.55" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== -"@types/node@^18.11.18", "@types/node@^18.17.5": - version "18.18.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.18.3.tgz#e5188135fc2909b46530c798ef49be65083be3fd" - integrity sha512-0OVfGupTl3NBFr8+iXpfZ8NR7jfFO+P1Q+IO/q0wbo02wYkP5gy36phojeYWpLQ6WAMjl+VfmqUk2YbUfp0irA== - "@types/node@^8.0.7": version "8.10.66" resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.66.tgz#dd035d409df322acc83dff62a602f12a5783bbb3" @@ -8399,9 +8396,9 @@ "@types/yargs-parser" "*" "@types/yargs@^17.0.1": - version "17.0.7" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.7.tgz#44a484c634761da4391477515a98772b82b5060f" - integrity sha512-OvLKmpKdea1aWtqHv9bxVVcMoT6syAeK+198dfETIFkAevYRGwqh4H+KFxfjUETZuUuE5sQCAFwdOdoHUdo8eg== + version "17.0.33" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.33.tgz#8c32303da83eec050a84b3c7ae7b9f922d13e32d" + integrity sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA== dependencies: "@types/yargs-parser" "*" @@ -10135,9 +10132,9 @@ asap@^2.0.0, asap@~2.0.3: integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= asar@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/asar/-/asar-3.1.0.tgz#70b0509449fe3daccc63beb4d3c7d2e24d3c6473" - integrity sha512-vyxPxP5arcAqN4F/ebHd/HhwnAiZtwhglvdmc7BR2f0ywbVNTOpSeyhLDbGXtE/y58hv1oC75TaNIXutnsOZsQ== + version "3.2.0" + resolved "https://registry.yarnpkg.com/asar/-/asar-3.2.0.tgz#e6edb5edd6f627ebef04db62f771c61bea9c1221" + integrity sha512-COdw2ZQvKdFGFxXwX3oYh2/sOsJWJegrdJCGxnN4MZ7IULgRBp9P6665aqj9z1v9VwP4oP1hRBojRDQ//IGgAg== dependencies: chromium-pickle-js "^0.2.0" commander "^5.0.0" @@ -10663,10 +10660,10 @@ before-after-hook@^2.2.0: resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e" integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ== -better-sqlite3@9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-9.2.2.tgz#3ce1ed24f327ed8c9b0c39b825cdc2341aeb249f" - integrity sha512-qwjWB46il0lsDkeB4rSRI96HyDQr8sxeu1MkBVLMrwusq1KRu4Bpt1TMI+8zIJkDUtZ3umjAkaEjIlokZKWCQw== +better-sqlite3@11.3.0: + version "11.3.0" + resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-11.3.0.tgz#f10b32ddff665c33176d148e707bd1e57dfd0284" + integrity sha512-iHt9j8NPYF3oKCNOO5ZI4JwThjt3Z6J6XrcwG85VNMVzv1ByqrHWv5VILEbCMFWDsoHhXvQ7oC8vgRXFAKgl9w== dependencies: bindings "^1.5.0" prebuild-install "^7.1.1" @@ -11130,7 +11127,7 @@ buffer-equal@0.0.1: buffer-equal@1.0.0, buffer-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" - integrity sha1-WWFrSYME1Var1GaWayLu2j7KX74= + integrity sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ== buffer-es6@^4.9.2: version "4.9.3" @@ -12351,7 +12348,7 @@ colorette@^2.0.10, colorette@^2.0.14: colors@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" - integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= + integrity sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw== colors@^1.1.2, colors@^1.4.0: version "1.4.0" @@ -14405,15 +14402,15 @@ duplexer@^0.1.1: resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== -duplexify@4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.2.tgz#18b4f8d28289132fa0b9573c898d9f903f81c7b0" - integrity sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw== +duplexify@4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.3.tgz#a07e1c0d0a2c001158563d32592ba58bddb0236f" + integrity sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA== dependencies: end-of-stream "^1.4.1" inherits "^2.0.3" readable-stream "^3.1.1" - stream-shift "^1.0.0" + stream-shift "^1.0.2" duplexify@^3.4.2, duplexify@^3.6.0: version "3.7.1" @@ -14577,13 +14574,13 @@ electron-to-chromium@^1.5.4: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz#1abf0410c5344b2b829b7247e031f02810d442e6" integrity sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q== -electron@27.3.10: - version "27.3.10" - resolved "https://registry.yarnpkg.com/electron/-/electron-27.3.10.tgz#3c9a3c918a644bb3ba07e4d4744f277636a54e58" - integrity sha512-fwJRWVP8/U42D5rk/xLvxN94zbM8P14PisJIWkOX6wctXOLGDTUFZb4jrkZA3/Fzuo8pzwXrXJmBL9FTwXzP3Q== +electron@32.2.0: + version "32.2.0" + resolved "https://registry.yarnpkg.com/electron/-/electron-32.2.0.tgz#40b17864be5f88c89f71045ac6f61b5d4a9c1919" + integrity sha512-Xy82QBQrEiQysoxsv6lnhHAcWNNe6vV6QqH3OPFXhEj/T9oAsBHEhZuuYHINSSsUE7zRSj+J9sNwJYOjisT0Vw== dependencies: "@electron/get" "^2.0.0" - "@types/node" "^18.11.18" + "@types/node" "^20.9.0" extract-zip "^2.0.1" elegant-spinner@^1.0.1: @@ -17440,7 +17437,7 @@ glob@7.2.0: glob@^10.2.2, glob@^10.3.10, glob@^10.3.7, glob@^10.4.2: version "10.4.5" - resolved "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== dependencies: foreground-child "^3.1.0" @@ -18551,9 +18548,9 @@ https-proxy-agent@3.0.1: debug "^3.1.0" https-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" - integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== dependencies: agent-base "6" debug "4" @@ -21459,15 +21456,6 @@ lz-string@^1.4.4: resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY= -lzma-native@^8.0.5: - version "8.0.6" - resolved "https://registry.yarnpkg.com/lzma-native/-/lzma-native-8.0.6.tgz#3ea456209d643bafd9b5d911781bdf0b396b2665" - integrity sha512-09xfg67mkL2Lz20PrrDeNYZxzeW7ADtpYFbwSQh9U8+76RIzx5QsJBMy8qikv3hbUPfpy6hqwxt6FcGK81g9AA== - dependencies: - node-addon-api "^3.1.0" - node-gyp-build "^4.2.1" - readable-stream "^3.6.0" - magic-string@0.26.2: version "0.26.2" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.26.2.tgz#5331700e4158cd6befda738bb6b0c7b93c0d4432" @@ -21531,9 +21519,9 @@ make-error@^1, make-error@^1.1.1: integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== make-fetch-happen@^10.0.3, make-fetch-happen@^10.0.6: - version "10.1.7" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-10.1.7.tgz#b1402cb3c9fad92b380ff3a863cdae5414a42f76" - integrity sha512-J/2xa2+7zlIUKqfyXDCXFpH3ypxO4k3rgkZHPSZkyUYcBT/hM80M3oyKLM/9dVriZFiGeGGS2Ei+0v2zfhqj3Q== + version "10.2.1" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz#f5e3835c5e9817b617f2770870d9492d28678164" + integrity sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w== dependencies: agentkeepalive "^4.2.1" cacache "^16.1.0" @@ -22040,9 +22028,9 @@ minimatch@9.0.3: brace-expansion "^2.0.1" minimatch@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" - integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== dependencies: brace-expansion "^2.0.1" @@ -22646,10 +22634,10 @@ mochawesome-report-generator@^3.0.1: validator "^9.1.2" yargs "^10.0.3" -mock-fs@5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-5.2.0.tgz#3502a9499c84c0a1218ee4bf92ae5bf2ea9b2b5e" - integrity sha512-2dF2R6YMSZbpip1V1WHKGLNjr/k48uQClqMVb5H3MOvwc9qhYis3/IWbj02qIg/Y8MDXKFF4c5v0rxx2o6xTZw== +mock-fs@5.4.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-5.4.0.tgz#c1d91d6d8dc19269a0fe86e8b777521d990c2ed7" + integrity sha512-3ROPnEMgBOkusBMYQUW2rnT3wZwsgfOKzJDLvx/TZ7FL1WmWvwSwn3j4aDR5fLDGtgcc1WF0Z1y0di7c9L4FKw== mock-require@3.0.3: version "3.0.3" @@ -23058,10 +23046,10 @@ node-abi@^2.7.0: dependencies: semver "^5.4.1" -node-abi@^3.0.0, node-abi@^3.3.0: - version "3.47.0" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.47.0.tgz#6cbfa2916805ae25c2b7156ca640131632eb05e8" - integrity sha512-2s6B2CWZM//kPgwnuI0KrYwNjfdByE25zvAaEpq9IH4zcNsarH8Ihu/UuX6XMPEogDAxkuUFeZn60pXNHAqn3A== +node-abi@^3.3.0, node-abi@^3.45.0: + version "3.68.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.68.0.tgz#8f37fb02ecf4f43ebe694090dcb52e0c4cc4ba25" + integrity sha512-7vbj10trelExNjFSBm5kTvZXXa7pZyKWx9RCKIyqe6I9Ev3IzGpQoqBP3a+cOdxY+pWj6VkP28n/2wWysBHD/A== dependencies: semver "^7.3.5" @@ -23080,10 +23068,10 @@ node-addon-api@^4.2.0: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f" integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ== -node-api-version@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/node-api-version/-/node-api-version-0.1.4.tgz#1ed46a485e462d55d66b5aa1fe2821720dedf080" - integrity sha512-KGXihXdUChwJAOHO53bv9/vXcLmdUsZ6jIptbvYvkpKfth+r7jw44JkVxQFA3kX5nQjzjmGu1uAu/xNNLNlI5g== +node-api-version@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/node-api-version/-/node-api-version-0.2.0.tgz#5177441da2b1046a4d4547ab9e0972eed7b1ac1d" + integrity sha512-fthTTsi8CxaBXMaBAD7ST2uylwvsnYxh2PfaScwpMhos6KlSFajXQPcM4ogNE1q2s3Lbz9GCGqeIHC+C6OZnKg== dependencies: semver "^7.3.5" @@ -23176,7 +23164,7 @@ node-forge@^1: resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== -node-gyp-build@^4.2.1, node-gyp-build@^4.3.0: +node-gyp-build@^4.3.0: version "4.6.1" resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.1.tgz#24b6d075e5e391b8d5539d98c7fc5c210cac8a3e" integrity sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ== @@ -26399,6 +26387,13 @@ react@^16, react@^16.0.0, react@^16.13.1: object-assign "^4.1.1" prop-types "^15.6.2" +read-binary-file-arch@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/read-binary-file-arch/-/read-binary-file-arch-1.0.6.tgz#959c4637daa932280a9b911b1a6766a7e44288fc" + integrity sha512-BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg== + dependencies: + debug "^4.3.4" + read-cache@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" @@ -29118,10 +29113,10 @@ stream-http@^3.2.0: dependencies: debug "2" -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== +stream-shift@^1.0.0, stream-shift@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.3.tgz#85b8fab4d71010fc3ba8772e8046cc49b8a3864b" + integrity sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ== stream-to-buffer@^0.1.0: version "0.1.0" @@ -30872,7 +30867,7 @@ undertaker@^1.2.1: undici-types@~6.19.2: version "6.19.8" - resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== unicode-canonical-property-names-ecmascript@^2.0.0: