From b52b9f87f31f58072b75c68cbfe53fe436b480a3 Mon Sep 17 00:00:00 2001 From: Zach Bloomquist Date: Wed, 14 Dec 2022 12:13:03 -0500 Subject: [PATCH 1/6] 12.2.0 release From a4e46e316a108aaf2fff76a92cf1103fc8a2f519 Mon Sep 17 00:00:00 2001 From: Zach Bloomquist Date: Wed, 14 Dec 2022 12:29:40 -0500 Subject: [PATCH 2/6] docs(api): add new `resourceType` properties to `intercept.md` (#4921) --- content/api/commands/intercept.md | 58 +++++++++++++++++-------------- 1 file changed, 32 insertions(+), 26 deletions(-) diff --git a/content/api/commands/intercept.md b/content/api/commands/intercept.md index afc5e65158..b6fb816844 100644 --- a/content/api/commands/intercept.md +++ b/content/api/commands/intercept.md @@ -114,20 +114,21 @@ glob-matched against the request using [`Cypress.minimatch`](/api/utilities/minimatch) with the `{ matchBase: true }` minimatch option applied. -| Option | Description | -| ---------- | ----------------------------------------------------------------------------------------------- | -| auth | HTTP Basic Authentication (`object` with keys `username` and `password`) | -| headers | HTTP request headers (`object`) | -| hostname | HTTP request hostname | -| https | `true`: only secure (https://) requests, `false`: only insecure (http://) requests | -| method | HTTP request method (matches any method by default) | -| middleware | `true`: match route first and in defined order, `false`: match route in reverse order (default) | -| path | HTTP request path after the hostname, including query parameters | -| pathname | Like `path`, but without query parameters | -| port | HTTP request port(s) (`number` or `Array`) | -| query | Parsed query string (`object`) | -| times | Maximum number of times to match (`number`) | -| url | Full HTTP request URL | +| Option | Description | +| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| auth | HTTP Basic Authentication (`object` with keys `username` and `password`) | +| headers | HTTP request headers (`object`) | +| hostname | HTTP request hostname | +| https | `true`: only secure (https://) requests, `false`: only insecure (http://) requests | +| method | HTTP request method (matches any method by default) | +| middleware | `true`: match route first and in defined order, `false`: match route in reverse order (default) | +| path | HTTP request path after the hostname, including query parameters | +| pathname | Like `path`, but without query parameters | +| port | HTTP request port(s) (`number` or `Array`) | +| query | Parsed query string (`object`) | +| resourceType | The resource type of the request. See ["Request object properties"](#Request-object-properties) for a list of possible values for `resourceType`. | +| times | Maximum number of times to match (`number`) | +| url | Full HTTP request URL | See [examples](#With-RouteMatcher) below. @@ -964,9 +965,7 @@ From here, you can do several things with the intercepted request: ### Request object properties -The request object (`req`) has several properties from the HTTP request itself. -All of the following properties on `req` can be modified except for -`httpVersion`: +The request object (`req`) has several properties from the HTTP request itself: ```ts { @@ -997,6 +996,12 @@ All of the following properties on `req` can be modified except for * The HTTP version used in the request. Read only. */ httpVersion: string + /** + * The resource type of the request. Read only. + */ + resourceType: 'document' | 'fetch' | 'xhr' | 'websocket' | 'stylesheet' + | 'script' | 'image' | 'font' | 'cspviolationreport' | 'ping' + | 'manifest' | 'other' } ``` @@ -1562,15 +1567,16 @@ information about the request and response to the console: ## History -| Version | Changes | -| ------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [7.6.0](/guides/references/changelog#7-0-0) | Added `query` option to `req` (The incoming request object yielded to request handler functions). | -| [7.0.0](/guides/references/changelog#7-0-0) | Removed `matchUrlAgainstPath` option from `RouteMatcher`, reversed handler ordering, added request events, removed substring URL matching, removed `cy.route2` alias, added `middleware` RouteMatcher option, renamed `res.delay()` to `res.setDelay()` and `res.throttle()` to `res.setThrottle()`. | -| [6.4.0](/guides/references/changelog#6-4-0) | Renamed `delayMs` property to `delay` (backwards-compatible). | -| [6.2.0](/guides/references/changelog#6-2-0) | Added `matchUrlAgainstPath` option to `RouteMatcher`. | -| [6.0.0](/guides/references/changelog#6-0-0) | Renamed `cy.route2()` to `cy.intercept()`. | -| [6.0.0](/guides/references/changelog#6-0-0) | Removed `experimentalNetworkStubbing` option and made it the default behavior. | -| [5.1.0](/guides/references/changelog#5-1-0) | Added experimental `cy.route2()` command under `experimentalNetworkStubbing` option. | +| Version | Changes | +| --------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [12.2.0](/guides/references/changelog#12-2-0) | Added `resourceType` property to `req` and `RouteMatcher`. | +| [7.6.0](/guides/references/changelog#7-0-0) | Added `query` option to `req` (The incoming request object yielded to request handler functions). | +| [7.0.0](/guides/references/changelog#7-0-0) | Removed `matchUrlAgainstPath` option from `RouteMatcher`, reversed handler ordering, added request events, removed substring URL matching, removed `cy.route2` alias, added `middleware` RouteMatcher option, renamed `res.delay()` to `res.setDelay()` and `res.throttle()` to `res.setThrottle()`. | +| [6.4.0](/guides/references/changelog#6-4-0) | Renamed `delayMs` property to `delay` (backwards-compatible). | +| [6.2.0](/guides/references/changelog#6-2-0) | Added `matchUrlAgainstPath` option to `RouteMatcher`. | +| [6.0.0](/guides/references/changelog#6-0-0) | Renamed `cy.route2()` to `cy.intercept()`. | +| [6.0.0](/guides/references/changelog#6-0-0) | Removed `experimentalNetworkStubbing` option and made it the default behavior. | +| [5.1.0](/guides/references/changelog#5-1-0) | Added experimental `cy.route2()` command under `experimentalNetworkStubbing` option. | ## See also From f96e8d0eac8aae17c9eb8f1ede3dccad9fba8442 Mon Sep 17 00:00:00 2001 From: Mike Plummer Date: Mon, 19 Dec 2022 08:38:42 -0600 Subject: [PATCH 3/6] Create 12.2.0 changelog --- content/_changelogs/12.2.0.md | 47 +++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 content/_changelogs/12.2.0.md diff --git a/content/_changelogs/12.2.0.md b/content/_changelogs/12.2.0.md new file mode 100644 index 0000000000..3c778607e5 --- /dev/null +++ b/content/_changelogs/12.2.0.md @@ -0,0 +1,47 @@ +## 12.2.0 + +_Released 12/20/2022_ + +**Features:** + +- Added the ability to match on `resourceType` with + [`cy.intercept()`](https://docs.cypress.io/api/commands/intercept), and to see + the resource type of an intercepted request as `req.resourceType`. Addresses + [#14525](https://github.com/cypress-io/cypress/issues/14525). +- Users working in React Component Testing projects can now generate a basic + spec file by selecting from the components that exist in their project. + Addresses [#24008](https://github.com/cypress-io/cypress/issues/24008). + +**Bugfixes:** + +- Fixed a regression introduced in + [Cypress 10.8.0](https://docs.cypress.io/guides/references/changelog#10-8-0) + where the `CYPRESS_EVERY_NTH_FRAME` env was not being honored, nor was it + being set at all, causing all frames to be captured which slowed down tests. + Fixes [#23830](https://github.com/cypress-io/cypress/issues/23830). +- Fixed an issue where the `query` object was not available on requests from + [`cy.intercept()`](https://docs.cypress.io/api/commands/intercept) once they + were yielded. Fixes + [#25088](https://github.com/cypress-io/cypress/issues/25088). +- Fixed a regression introduced in + [Cypress 12](https://docs.cypress.io/guides/references/changelog#12-0-0) where + [`cy.get()`](https://docs.cypress.io/api/commands/get) would ignore a `null` + value for the 'withinSubject' option. Fixes + [#25104](https://github.com/cypress-io/cypress/issues/25104). +- Fixed Typescript typings for + [`cy.nextUntil()`](https://docs.cypress.io/api/commands/nextuntil) to include + the 'filter' parameter. Fixes + [#24772](https://github.com/cypress-io/cypress/issues/24772). +- Fixed an issue where the incorrect Cypress version could be shown in the + migration wizard. Fixes + [#25138](https://github.com/cypress-io/cypress/issues/25138). +- Fixed an issue where the Cypress migration wizard would fail to run in + [global mode](https://docs.cypress.io/guides/guides/command-line#cypress-open-global) + on newer versions of Cypress. Addressed in + [#25138](https://github.com/cypress-io/cypress/issues/25138). +- Fixed an issue with Angular Component Testing where a custom `srcRoot` + configuration would not be respected. Fixes + [#24827](https://github.com/cypress-io/cypress/issues/24827). +- Fixed an issue with Angular Component Testing where URLs within SASS/SCSS + files were not being correctly resolved. Fixes + [#24272](https://github.com/cypress-io/cypress/issues/24272). From feb6278c7d0e4fa10c035a03398b30cd41920d36 Mon Sep 17 00:00:00 2001 From: Mike Plummer Date: Mon, 19 Dec 2022 08:40:09 -0600 Subject: [PATCH 4/6] Rollback 12.2.0 changelog addition --- content/_changelogs/12.2.0.md | 47 ----------------------------------- 1 file changed, 47 deletions(-) delete mode 100644 content/_changelogs/12.2.0.md diff --git a/content/_changelogs/12.2.0.md b/content/_changelogs/12.2.0.md deleted file mode 100644 index 3c778607e5..0000000000 --- a/content/_changelogs/12.2.0.md +++ /dev/null @@ -1,47 +0,0 @@ -## 12.2.0 - -_Released 12/20/2022_ - -**Features:** - -- Added the ability to match on `resourceType` with - [`cy.intercept()`](https://docs.cypress.io/api/commands/intercept), and to see - the resource type of an intercepted request as `req.resourceType`. Addresses - [#14525](https://github.com/cypress-io/cypress/issues/14525). -- Users working in React Component Testing projects can now generate a basic - spec file by selecting from the components that exist in their project. - Addresses [#24008](https://github.com/cypress-io/cypress/issues/24008). - -**Bugfixes:** - -- Fixed a regression introduced in - [Cypress 10.8.0](https://docs.cypress.io/guides/references/changelog#10-8-0) - where the `CYPRESS_EVERY_NTH_FRAME` env was not being honored, nor was it - being set at all, causing all frames to be captured which slowed down tests. - Fixes [#23830](https://github.com/cypress-io/cypress/issues/23830). -- Fixed an issue where the `query` object was not available on requests from - [`cy.intercept()`](https://docs.cypress.io/api/commands/intercept) once they - were yielded. Fixes - [#25088](https://github.com/cypress-io/cypress/issues/25088). -- Fixed a regression introduced in - [Cypress 12](https://docs.cypress.io/guides/references/changelog#12-0-0) where - [`cy.get()`](https://docs.cypress.io/api/commands/get) would ignore a `null` - value for the 'withinSubject' option. Fixes - [#25104](https://github.com/cypress-io/cypress/issues/25104). -- Fixed Typescript typings for - [`cy.nextUntil()`](https://docs.cypress.io/api/commands/nextuntil) to include - the 'filter' parameter. Fixes - [#24772](https://github.com/cypress-io/cypress/issues/24772). -- Fixed an issue where the incorrect Cypress version could be shown in the - migration wizard. Fixes - [#25138](https://github.com/cypress-io/cypress/issues/25138). -- Fixed an issue where the Cypress migration wizard would fail to run in - [global mode](https://docs.cypress.io/guides/guides/command-line#cypress-open-global) - on newer versions of Cypress. Addressed in - [#25138](https://github.com/cypress-io/cypress/issues/25138). -- Fixed an issue with Angular Component Testing where a custom `srcRoot` - configuration would not be respected. Fixes - [#24827](https://github.com/cypress-io/cypress/issues/24827). -- Fixed an issue with Angular Component Testing where URLs within SASS/SCSS - files were not being correctly resolved. Fixes - [#24272](https://github.com/cypress-io/cypress/issues/24272). From d290c285db1fb6bfcc26a526fbc810134d62e00a Mon Sep 17 00:00:00 2001 From: Adam Stone-Lord Date: Mon, 19 Dec 2022 19:06:27 -0500 Subject: [PATCH 5/6] Add section for create from React component (#4907) Co-authored-by: Ely Lucas --- .../create-from-component-react.jpg | Bin 0 -> 75668 bytes ...vue.jpg => create-your-first-spec-cfc.jpg} | Bin .../component-testing/react/quickstart.md | 24 ++++++++++++++---- .../component-testing/vue/quickstart.md | 10 ++++---- 4 files changed, 24 insertions(+), 10 deletions(-) create mode 100644 assets/img/guides/component-testing/create-from-component-react.jpg rename assets/img/guides/component-testing/{create-your-first-spec-vue.jpg => create-your-first-spec-cfc.jpg} (100%) diff --git a/assets/img/guides/component-testing/create-from-component-react.jpg b/assets/img/guides/component-testing/create-from-component-react.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7952b5c965c56ec34a80bc810dfde372983c7b76 GIT binary patch literal 75668 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 + src="/img/guides/component-testing/create-your-first-spec-cfc.jpg"> + ### Creating a Component @@ -159,17 +160,30 @@ mount without any issues. ### Your First Component Test -To get started, create a spec file in the same directory as the **Stepper.jsx** -file and name it **Stepper.cy.jsx**. Then paste the following into it: +To get started, go back to the Cypress test app and, in the "Create your first +spec" screen, click "Create from component". + +A modal will pop up listing all the component files that are found in your app +(Cypress will exclude **\*.config.{js,ts}** and **\*.{cy,spec}.{js,ts,jsx,tsx}** +files from this list). Expand the row for **Stepper.jsx** and select the +**Stepper** component: + + + + +A spec file was created at **src/component/Stepper.cy.jsx**: ```js +import React from 'react' import Stepper from './Stepper' -describe('', () => { - it('mounts', () => { +describe('', () => { + it('renders', () => { + // see: https://on.cypress.io/mounting-react cy.mount() }) }) diff --git a/content/guides/component-testing/vue/quickstart.md b/content/guides/component-testing/vue/quickstart.md index 79f4cc6fc2..10dbcb5a4f 100644 --- a/content/guides/component-testing/vue/quickstart.md +++ b/content/guides/component-testing/vue/quickstart.md @@ -97,7 +97,7 @@ any yet. However, we don't currently have a component, either. Let's change that! + src="/img/guides/component-testing/create-your-first-spec-cfc.jpg"> ### Creating a Component @@ -158,10 +158,10 @@ mount without any issues. ### Your First Component Test To get started, go back to the Cypress test app and, in the "Create your first -spec" screen, click "Create from Vue component". +spec" screen, click "Create from component". -A modal will pop up listing all the components that is found in your app. Select -the **Stepper.vue** component: +A modal will pop up listing all the components that are found in your app. +Select the **Stepper.vue** component: @@ -177,7 +177,7 @@ import Stepper from './Stepper.vue' describe('', () => { it('renders', () => { - // see: https://test-utils.vuejs.org/guide/ + // see: https://on.cypress.io/mounting-vue cy.mount(Stepper) }) }) From caab49818d4d17d7d9092ffc0eea760a91ee2186 Mon Sep 17 00:00:00 2001 From: Mike Plummer Date: Tue, 20 Dec 2022 13:15:01 -0600 Subject: [PATCH 6/6] 12.2.0 Changelog (#4938) * Create 12.2.0 changelog * Fix grammar * Address review comments * Address review comments * Add #24915 --- content/_changelogs/12.2.0.md | 51 +++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 content/_changelogs/12.2.0.md diff --git a/content/_changelogs/12.2.0.md b/content/_changelogs/12.2.0.md new file mode 100644 index 0000000000..10758180fe --- /dev/null +++ b/content/_changelogs/12.2.0.md @@ -0,0 +1,51 @@ +## 12.2.0 + +_Released 12/20/2022_ + +**Features:** + +- Added the ability to match on `resourceType` with + [`cy.intercept()`](https://docs.cypress.io/api/commands/intercept), and to see + the resource type of an intercepted request as `req.resourceType`. Addresses + [#14525](https://github.com/cypress-io/cypress/issues/14525). +- Users working in React Component Testing projects can now generate a basic + spec file from the components that exist in their project. Addresses + [#24008](https://github.com/cypress-io/cypress/issues/24008). + +**Performance:** + +- Fixed a regression introduced in the Electron browser in + [Cypress 10.8.0](#10-8-0) where the `CYPRESS_EVERY_NTH_FRAME` environment + variable was not being set appropriately causing all frames to be captured + which slowed down tests. Fixes + [#23830](https://github.com/cypress-io/cypress/issues/23830). + +**Bugfixes:** + +- Fixed an issue where the `query` object was not available on requests from + [`cy.intercept()`](/api/commands/intercept) once they were yielded. Fixes + [#25088](https://github.com/cypress-io/cypress/issues/25088). +- Fixed an issue with Angular Component Testing where urls within SASS/SCSS + files were not being correctly resolved which could result in incomplete + styling. Fixes [#24272](https://github.com/cypress-io/cypress/issues/24272). +- Fixed a regression introduced in [Cypress 12](#12-0-0) where + [`cy.get()`](/api/commands/get) would ignore a `null` value for the + `withinSubject` option. Fixes + [#25104](https://github.com/cypress-io/cypress/issues/25104). +- Fixed an issue where an unhandled promise rejection would display an + incomplete error message in the command log. Fixes + [#24915](https://github.com/cypress-io/cypress/issues/24915). +- Fixed an issue where the incorrect Cypress version could be shown in the + migration wizard. Fixes + [#25138](https://github.com/cypress-io/cypress/issues/25138). +- Fixed an issue where the Cypress migration wizard would fail to run in + [global mode](/guides/guides/command-line#cypress-open-global) on newer + versions of Cypress. Addressed in + [#25138](https://github.com/cypress-io/cypress/issues/25138). +- Fixed an issue with Angular Component Testing where a custom + [`sourceRoot`](https://angular.io/guide/workspace-config#project-configuration-options) + configuration would not be respected. Fixes + [#24827](https://github.com/cypress-io/cypress/issues/24827). +- Fixed Typescript typings for [`cy.nextUntil()`](/api/commands/nextuntil) to + include the `filter` parameter. Fixes + [#24772](https://github.com/cypress-io/cypress/issues/24772).