diff --git a/.circleci/cache-version.txt b/.circleci/cache-version.txt index 0c33ddcb391..09377f579d0 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. -08-13-24 +09-12-24 diff --git a/.circleci/workflows.yml b/.circleci/workflows.yml index fa9b9cd3fd1..0ab8928c3de 100644 --- a/.circleci/workflows.yml +++ b/.circleci/workflows.yml @@ -30,10 +30,8 @@ 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' - - 'fix/revert_ozone_hint' + - 'ryanm/chore/fix-full-snapshot' - 'publish-binary' - - 'chore/support_hidpi_wayland' - - 'ryanm/chore/fix-kitchensink-against-staging' # usually we don't build Mac app - it takes a long time # but sometimes we want to really confirm we are doing the right thing @@ -44,6 +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-full-snapshot', << pipeline.git.branch >> ] - matches: pattern: /^release\/\d+\.\d+\.\d+$/ value: << pipeline.git.branch >> @@ -54,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: [ 'fix/revert_ozone_hint', << pipeline.git.branch >> ] + - equal: [ 'ryanm/chore/fix-full-snapshot', << pipeline.git.branch >> ] - matches: pattern: /^release\/\d+\.\d+\.\d+$/ value: << pipeline.git.branch >> @@ -77,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: [ 'chore/support_hidpi_wayland', << pipeline.git.branch >> ] + - equal: [ 'ryanm/chore/fix-full-snapshot', << pipeline.git.branch >> ] - matches: pattern: /^release\/\d+\.\d+\.\d+$/ value: << pipeline.git.branch >> @@ -86,7 +85,7 @@ executors: # the Docker image with Cypress dependencies and Chrome browser cy-doc: docker: - - image: cypress/browsers-internal:node18.17.1-chrome124-ff125 + - image: cypress/browsers-internal:node18.17.1-chrome128-ff130 # by default, we use "medium" to balance performance + CI costs. bump or reduce on a per-job basis if needed. resource_class: medium environment: @@ -105,7 +104,7 @@ executors: # Docker image with non-root "node" user non-root-docker-user: docker: - - image: cypress/browsers-internal:node18.17.1-chrome124-ff125 + - image: cypress/browsers-internal:node18.17.1-chrome128-ff130 user: node environment: PLATFORM: linux @@ -153,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" != "fix/revert_ozone_hint" ]]; then + echo 'if ! [[ "$CIRCLE_BRANCH" != "develop" && "$CIRCLE_BRANCH" != "release/"* && "$CIRCLE_BRANCH" != "ryanm/chore/fix-full-snapshot" ]]; 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 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4ec1651f8bc..597e3979202 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -13,7 +13,6 @@ Thanks for taking the time to contribute! :smile: - [Report bugs](https://github.com/cypress-io/cypress/issues/new) by opening an issue. - [Request features](https://github.com/cypress-io/cypress/issues/new) by opening an issue. -- [Help triage existing issues](#triaging-issues). - Write code to address an issue. We have some issues labeled as [`good first issue`](https://github.com/cypress-io/cypress/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22) that are a good place to start. Please thoroughly read our [Writing Code guide](#writing-code). ## Table of Contents @@ -26,7 +25,7 @@ Thanks for taking the time to contribute! :smile: - [Requirements](#requirements) - [Getting Started](#getting-started) - [Coding Style](#coding-style) - - [Adding links within code](#Adding-links-within-code) + - [Adding links within code](#adding-links-within-code) - [Tests](#tests) - [Packages](#packages) - [Committing Code](#committing-code) @@ -34,11 +33,11 @@ Thanks for taking the time to contribute! :smile: - [Pull Requests](#pull-requests) - [Dependencies](#dependencies) - [Reviewing Code](#reviewing-code) - - [Some rules about Code Review](#Some-rules-about-Code-Review) - - [Steps to take during Code Review](#Steps-to-take-during-Code-Review) - - [Code Review Checklist](#Code-Review-Checklist) - - [Code Review of Dependency Updates](#Code-Review-of-Dependency-Updates) -- [Deployment](#deployment) + - [Some rules about Code Review](#some-rules-about-code-review) + - [Steps to take during Code Review](#steps-to-take-during-code-review) + - [Code Review Checklist](#code-review-checklist) + - [Code Review of Dependency Updates](#code-review-of-dependency-updates) +- [Releases](#releases) ## Code of Conduct @@ -172,7 +171,7 @@ Here is a list of the packages in this repository with a short description, loca | Folder Name | Package Name | Purpose | | :------------------------------------ | :---------------------- | :--------------------------------------------------------------------------- | - | [electron-mksnapshot](./electron-mksnapshot) | `electron-mksnapshot` | A rewrite of [electron/mksnapshot](https://github.com/electron/mksnapshot) to support multiple versions. | + | [electron-mksnapshot](./tooling/electron-mksnapshot) | `electron-mksnapshot` | A rewrite of [electron/mksnapshot](https://github.com/electron/mksnapshot) to support multiple versions. | | [packherd](./tooling/packherd) | `packherd` | Herds all dependencies reachable from an entry and packs them. | | [v8-snapshot](./tooling/v8-snapshot) | `v8-snapshot` | Tool to create a snapshot for Electron applications. | diff --git a/browser-versions.json b/browser-versions.json index a42234ce182..2c3fd8c4557 100644 --- a/browser-versions.json +++ b/browser-versions.json @@ -1,5 +1,5 @@ { - "chrome:beta": "129.0.6668.22", - "chrome:stable": "128.0.6613.119", + "chrome:beta": "130.0.6723.6", + "chrome:stable": "129.0.6668.70", "chrome:minimum": "64.0.3282.0" } diff --git a/cli/CHANGELOG.md b/cli/CHANGELOG.md index 46aca11025b..de12ae239f9 100644 --- a/cli/CHANGELOG.md +++ b/cli/CHANGELOG.md @@ -1,4 +1,29 @@ +## 13.15.0 + +_Released 9/25/2024_ + +**Features:** + +- Cypress now displays more actionable errors when a Test Replay upload takes too long, and more verbose messages when uncategorized errors occur during the upload process. Addressed in [#30235](https://github.com/cypress-io/cypress/pull/30235). + +**Bugfixes:** + +- Fixed an issue where Firefox was incorrectly mutating the state of click events on checkboxes after Firefox version `129` and up. Addressed in [#30245](https://github.com/cypress-io/cypress/pull/30245). +- Fixed a regression introduced in 13.13.0 where 'Open in IDE' would not work for filepaths containing spaces and various other characters on Windows. Addresses [#29820](https://github.com/cypress-io/cypress/issues/29820). + +**Misc:** + +- Pass along the related log to the `createSnapshot` function for protocol usage. Addressed in [#30244](https://github.com/cypress-io/cypress/pull/30244). + +**Dependency Updates:** + +- Update `@cypress/request` from `3.0.1` to `3.0.4`. Addressed in [#30194](https://github.com/cypress-io/cypress/pull/30194). +- Updated `express` from `4.19.2` to `4.21.0`. This removes the [CVE-2024-43796](https://www.cve.org/CVERecord?id=CVE-2024-43796), [CVE-2024-45590](https://www.cve.org/CVERecord?id=CVE-2024-45590), and [CVE-2024-43800](https://www.cve.org/CVERecord?id=CVE-2024-43800) vulnerabilities being reported in security scans. Addresses [#30241](https://github.com/cypress-io/cypress/pull/30241). +- Update `launch-editor` from `2.8.0` to `2.9.1`. Addressed in [#30247](https://github.com/cypress-io/cypress/pull/30247). +- Updated `loader-utils` from `1.4.0` to `1.4.2`. This removes the [CVE-2022-37601](https://nvd.nist.gov/vuln/detail/CVE-2022-37601) vulnerability being reported in security scans. Addresses [#28208](https://github.com/cypress-io/cypress/issues/28208). +- Updated `send` from `0.17.1` to `0.19.0`. This removes the [CVE-2024-43799](https://www.cve.org/CVERecord?id=CVE-2024-43799) vulnerability being reported in security scans. Addressed in [#30241](https://github.com/cypress-io/cypress/pull/30241). + ## 13.14.2 _Released 9/4/2024_ diff --git a/cli/package.json b/cli/package.json index 149224e9797..c98a335ab6d 100644 --- a/cli/package.json +++ b/cli/package.json @@ -20,7 +20,7 @@ "unit": "cross-env BLUEBIRD_DEBUG=1 NODE_ENV=test mocha --reporter mocha-multi-reporters --reporter-options configFile=../mocha-reporter-config.json" }, "dependencies": { - "@cypress/request": "^3.0.1", + "@cypress/request": "^3.0.4", "@cypress/xvfb": "^1.2.4", "@types/sinonjs__fake-timers": "8.1.1", "@types/sizzle": "^2.3.2", diff --git a/guides/building-release-artifacts.md b/guides/building-release-artifacts.md index a8b273e0771..7d3a3a3658c 100644 --- a/guides/building-release-artifacts.md +++ b/guides/building-release-artifacts.md @@ -1,12 +1,12 @@ # Building Release Artifacts -The `cypress` NPM package consists of two main parts: +The `cypress` npm package consists of two main parts: -1. The `cypress` NPM package `.tgz` (built from [`cli`](../cli)) +1. The `cypress` npm package `.tgz` (built from [`cli`](../cli)) * Contains the command line tool `cypress`, type definitions, and the [Module API](https://on.cypress.io/module-api). - * End users install this via NPM to the project's `node_modules`. -2. The "binary" `.zip` (built from [`packages/server`](../packages/server)) - * Contains the Electron app, `ffmpeg`, and built versions of the [`server`](../packages/server), [`desktop-gui`](../packages/desktop-gui), [`runner`](../packages/runner), [`example` project](../packages/example), and [`extension`](../packages/extension) + * End users install this via npm to the project's `node_modules` directory or via Yarn or pnpm similarly. +2. The "binary" `.zip` (built from the [`packages`](../packages) directory) + * Contains the Electron app, `ffmpeg`, and built versions of the packages from the [`packages`](../packages) sub-directories (`frontend-shared`, `reporter` and `web-config` are not separately included). * Also contains all the production dependencies of the above. * This is installed when the `cli` is installed or when `cypress install` is run, to a system cache. diff --git a/guides/debug-logs.md b/guides/debug-logs.md index 2bf654201b1..b170176994f 100644 --- a/guides/debug-logs.md +++ b/guides/debug-logs.md @@ -39,4 +39,4 @@ localStorage.DEBUG = 'cypress:driver,cypress:driver:*' For more info, see the [public documentation for printing debug logs](https://docs.cypress.io/guides/references/troubleshooting#Print-DEBUG-logs) and the [`debug` module docs][debug] -[debug]: https://github.com/visionmedia/debug#readme +[debug]: https://github.com/debug-js/debug#readme diff --git a/guides/writing-cross-platform-javascript.md b/guides/writing-cross-platform-javascript.md index 8148bc7d12f..2d74278083c 100644 --- a/guides/writing-cross-platform-javascript.md +++ b/guides/writing-cross-platform-javascript.md @@ -59,7 +59,7 @@ This will stop developers on Windows from running `yarn clean` unless they are s ```json { "devDependencies": { - "rimraf": "3.0.2", + "rimraf": "5.0.10" }, "scripts": { "clean": "rimraf '**/*.js'" diff --git a/npm/grep/README.md b/npm/grep/README.md index 355ec62f5b5..9b48f71f2c4 100644 --- a/npm/grep/README.md +++ b/npm/grep/README.md @@ -525,7 +525,7 @@ Then I expect to see the grep string and the "filter tests" flag in the `env` ob ### Log messages -This module uses [debug](https://github.com/visionmedia/debug#readme) to log verbose messages. You can enable the debug messages in the plugin file (runs when discovering specs to filter), and inside the browser to see how it determines which tests to run and to skip. When opening a new issue, please provide the debug logs from the plugin (if any) and from the browser. +This module uses [debug](https://github.com/debug-js/debug#readme) to log verbose messages. You can enable the debug messages in the plugin file (runs when discovering specs to filter), and inside the browser to see how it determines which tests to run and to skip. When opening a new issue, please provide the debug logs from the plugin (if any) and from the browser. ### Debugging in the plugin diff --git a/npm/puppeteer/package.json b/npm/puppeteer/package.json index 7a8b0352b53..adb61b29fb8 100644 --- a/npm/puppeteer/package.json +++ b/npm/puppeteer/package.json @@ -26,7 +26,7 @@ "chokidar": "^3.5.3", "express": "4.19.2", "mocha": "^9.2.2", - "rimraf": "^5.0.1", + "rimraf": "^5.0.10", "semantic-release": "22.0.12", "sinon": "^13.0.1", "sinon-chai": "^3.7.0", diff --git a/npm/vite-plugin-cypress-esm/cypress/component/edgeCases.cy.tsx b/npm/vite-plugin-cypress-esm/cypress/component/edgeCases.cy.tsx index cc1898037d2..8edcccb7f72 100644 --- a/npm/vite-plugin-cypress-esm/cypress/component/edgeCases.cy.tsx +++ b/npm/vite-plugin-cypress-esm/cypress/component/edgeCases.cy.tsx @@ -48,7 +48,7 @@ describe('edge cases', () => { * This library has some weird things going on with prototypes * under the hood. */ - it('works with react-query', () => { + it('works with @tanstack/react-query', () => { mount() }) diff --git a/npm/vite-plugin-cypress-esm/cypress/component/fixtures/reactQuery.tsx b/npm/vite-plugin-cypress-esm/cypress/component/fixtures/reactQuery.tsx index 4aed7166a2b..5893fd64fd9 100644 --- a/npm/vite-plugin-cypress-esm/cypress/component/fixtures/reactQuery.tsx +++ b/npm/vite-plugin-cypress-esm/cypress/component/fixtures/reactQuery.tsx @@ -3,7 +3,7 @@ import { useQueryClient, QueryClient, QueryClientProvider, -} from 'react-query' +} from '@tanstack/react-query' import React from 'react' // Create a client @@ -27,7 +27,7 @@ function Todos () { const mutation = useMutation(postTodo, { onSuccess: () => { // Invalidate and refetch - queryClient.invalidateQueries('todos') + queryClient.invalidateQueries({ queryKey: ['todos'] }) }, }) diff --git a/npm/vite-plugin-cypress-esm/package.json b/npm/vite-plugin-cypress-esm/package.json index c4565270f22..d7b5f214f55 100644 --- a/npm/vite-plugin-cypress-esm/package.json +++ b/npm/vite-plugin-cypress-esm/package.json @@ -17,11 +17,11 @@ "picomatch": "2.3.0" }, "devDependencies": { + "@tanstack/react-query": "4.36.1", "@types/picomatch": "2.3.0", "@vitejs/plugin-react": "4.3.0", "react": "16.8.6", "react-dom": "16.8.6", - "react-query": "3.39.3", "react-router": "6.10.0", "react-router-dom": "6.10.0", "vite": "5.2.11" diff --git a/npm/vue/package.json b/npm/vue/package.json index 236b59199b9..e2d3118b473 100644 --- a/npm/vue/package.json +++ b/npm/vue/package.json @@ -11,7 +11,7 @@ "cy:run": "node ../../scripts/cypress.js run --component --project ${PWD}", "lint": "eslint --ext .js,.jsx,.ts,.tsx,.json,.vue .", "test": "yarn cy:run", - "tsd": "yarn build && yarn tsc -p test-tsd/tsconfig.tsd.json", + "tsd": "yarn build && yarn tsc -p test-tsd/tsconfig.json", "watch": "yarn build --watch --watch.exclude ./dist/**/*" }, "devDependencies": { diff --git a/npm/vue/test-tsd/shims-vue.d.ts b/npm/vue/test-tsd/shims-vue.d.ts new file mode 100644 index 00000000000..ac1ded79233 --- /dev/null +++ b/npm/vue/test-tsd/shims-vue.d.ts @@ -0,0 +1,5 @@ +declare module '*.vue' { + import { DefineComponent } from 'vue' + const component: DefineComponent<{}, {}, any> + export default component +} diff --git a/npm/vue/test-tsd/tsconfig.json b/npm/vue/test-tsd/tsconfig.json new file mode 100644 index 00000000000..4518f42858d --- /dev/null +++ b/npm/vue/test-tsd/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "noEmit": true, + "skipLibCheck": true, + }, + "exclude": [], + "include": [ + "**/*" + ] +} diff --git a/npm/vue/test-tsd/tsconfig.tsd.json b/npm/vue/test-tsd/tsconfig.tsd.json deleted file mode 100644 index 483139f4f7c..00000000000 --- a/npm/vue/test-tsd/tsconfig.tsd.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "extends": "../tsconfig.json", - "compilerOptions": { - "noEmit": true, - "skipLibCheck": true, - "experimentalDecorators": true, - "strictNullChecks": false - }, - "exclude": [ - "../src" - ], - "include": [ - "../dist", - "../test-dts" - ] -} diff --git a/package.json b/package.json index c187589e19c..7539a8103ad 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cypress", - "version": "13.14.2", + "version": "13.15.0", "description": "Cypress is a next generation front end testing tool built for the modern web", "private": true, "scripts": { @@ -74,7 +74,7 @@ "@aws-sdk/client-s3": "3.485.0", "@aws-sdk/credential-providers": "3.53.0", "@babel/eslint-parser": "7.25.1", - "@cypress/request": "^3.0.1", + "@cypress/request": "^3.0.4", "@cypress/request-promise": "^5.0.0", "@electron/fuses": "1.6.1", "@electron/notarize": "^2.1.0", @@ -115,7 +115,6 @@ "@types/react": "16.9.50", "@types/react-dom": "16.9.8", "@types/request-promise": "4.1.45", - "@types/rimraf": "^3.0.2", "@types/send": "^0.17.1", "@types/sinon-chai": "3.2.3", "@types/through2": "^2.0.36", @@ -187,7 +186,7 @@ "pluralize": "8.0.0", "print-arch": "1.0.0", "proxyquire": "2.1.3", - "rimraf": "3.0.2", + "rimraf": "5.0.10", "semantic-release": "22.0.12", "semantic-release-monorepo": "8.0.2", "semver": "7.5.3", @@ -269,6 +268,7 @@ "**/socket.io-parser": "4.0.5", "**/ua-parser-js": "0.7.33", "browserify-sign": "4.2.2", + "devtools-protocol": "0.0.1346313", "sharp": "0.29.3", "vue-template-compiler": "2.6.12" } diff --git a/packages/app/package.json b/packages/app/package.json index 9294f05f332..3e9989ae479 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -25,7 +25,7 @@ "@cypress-design/vue-icon": "^0.26.0", "@cypress-design/vue-statusicon": "^0.5.7", "@cypress-design/vue-tabs": "^0.5.1", - "@faker-js/faker": "5.5.3", + "@faker-js/faker": "8.4.1", "@graphql-typed-document-node/core": "^3.1.0", "@headlessui/vue": "1.4.0", "@iconify-json/mdi": "1.1.63", @@ -35,7 +35,6 @@ "@percy/cypress": "^3.1.2", "@popperjs/core": "2.11.6", "@testing-library/cypress": "9.0.0", - "@types/faker": "5.5.8", "@urql/core": "2.4.4", "@urql/vue": "0.6.2", "@vitejs/plugin-legacy": "5.4.0", diff --git a/packages/app/src/components/FileMatchButton.cy.tsx b/packages/app/src/components/FileMatchButton.cy.tsx index 70daba6d114..a45ce3067c9 100644 --- a/packages/app/src/components/FileMatchButton.cy.tsx +++ b/packages/app/src/components/FileMatchButton.cy.tsx @@ -2,7 +2,7 @@ // Defining emits for "Button.vue" removes the native handler on the //