Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

V12 ChangeLog #4896

Merged
merged 50 commits into from
Dec 6, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
1c50105
r1 - migration guide content
emilyrohrbough Nov 15, 2022
5e1a18a
r2 - remove test isolation experimental reference
emilyrohrbough Nov 16, 2022
2435390
include should in v12 changes
emilyrohrbough Nov 21, 2022
e998b1d
Update 12.0.0.md
Nov 29, 2022
48d4807
Update writing-and-organizing-tests.md
Nov 29, 2022
4c82587
Update content/guides/references/migration-guide.md
emilyrohrbough Nov 29, 2022
05fb3e3
Update content/guides/references/migration-guide.md
emilyrohrbough Nov 29, 2022
820f134
Update content/guides/references/migration-guide.md
emilyrohrbough Nov 29, 2022
c35e709
.
emilyrohrbough Nov 29, 2022
eb94eb4
add dropped node support to migration guide
emilyrohrbough Nov 29, 2022
93ae489
updates / pr feedback
emilyrohrbough Nov 30, 2022
73a2b4a
use blues words
emilyrohrbough Nov 30, 2022
188825b
fix markdown
emilyrohrbough Nov 30, 2022
98a0482
Apply suggestions from code review
emilyrohrbough Dec 1, 2022
90f63b8
Apply suggestions from code review
emilyrohrbough Dec 1, 2022
a739fc7
Apply suggestions from code review
emilyrohrbough Dec 1, 2022
4f6fd8e
Apply suggestions from code review
emilyrohrbough Dec 1, 2022
b0ae517
Update content/guides/core-concepts/writing-and-organizing-tests.md
emilyrohrbough Dec 2, 2022
2766b72
Update content/guides/references/migration-guide.md
emilyrohrbough Dec 2, 2022
f9f731d
Apply suggestions from code review
emilyrohrbough Dec 2, 2022
e3c1bd8
Update content/guides/references/migration-guide.md
emilyrohrbough Dec 2, 2022
da37846
Update content/guides/core-concepts/writing-and-organizing-tests.md
emilyrohrbough Dec 2, 2022
e482ae3
Update content/guides/references/migration-guide.md
emilyrohrbough Dec 2, 2022
01f930b
Update content/guides/references/migration-guide.md
emilyrohrbough Dec 2, 2022
26d7407
Update content/guides/references/migration-guide.md
emilyrohrbough Dec 2, 2022
ec98686
fix markdown
emilyrohrbough Dec 2, 2022
016dbb0
start
emilyrohrbough Dec 2, 2022
9a163cf
Merge branch 'v12' into v12-changelog
emilyrohrbough Dec 5, 2022
1cc0236
getting close
emilyrohrbough Dec 5, 2022
f31ea06
Update content/_changelogs/12.0.0.md
emilyrohrbough Dec 5, 2022
90b849b
Update content/_changelogs/12.0.0.md
emilyrohrbough Dec 5, 2022
68d2197
updated
emilyrohrbough Dec 5, 2022
367ae41
updates
emilyrohrbough Dec 5, 2022
a903005
documentation for #24909
ryanthemanuel Dec 5, 2022
db6df0f
should be final entry
emilyrohrbough Dec 5, 2022
9e302ca
Merge branch 'v12-changelog' of https://github.com/cypress-io/cypress…
emilyrohrbough Dec 5, 2022
bc3271e
Merge branch 'v12' into v12-changelog
emilyrohrbough Dec 5, 2022
afe53f5
Apply Review feedback
emilyrohrbough Dec 5, 2022
0406575
missed feedback update
emilyrohrbough Dec 5, 2022
2a6b805
Update content/_changelogs/12.0.0.md
emilyrohrbough Dec 5, 2022
4cd17e6
pretty markdown
emilyrohrbough Dec 5, 2022
b48ece6
Update content/_changelogs/12.0.0.md
emilyrohrbough Dec 5, 2022
e7bb630
missing entry
emilyrohrbough Dec 5, 2022
bd469ba
Apply suggestions from code review
emilyrohrbough Dec 5, 2022
ba82100
Merge branch 'v12-changelog' of https://github.com/cypress-io/cypress…
emilyrohrbough Dec 5, 2022
aa8864c
fix markdown lint
emilyrohrbough Dec 5, 2022
e639bd6
Merge branch 'v12' into v12-changelog
emilyrohrbough Dec 6, 2022
a366c19
apply more feedback --- thank you Matt!!
emilyrohrbough Dec 6, 2022
dad6db6
Apply suggestions from code review
emilyrohrbough Dec 6, 2022
e55a7ba
fix markdown
emilyrohrbough Dec 6, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion content/_changelogs/11.2.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ _Released 11/22/2022_
- Re-implemented the 'Run All Specs' for End to End Testing for running multiple
tests sequentially in open mode. This feature had been previously removed in
Cypress 10.0. Enable 'Run All Specs' with the new experimental flag,
`experimentalRunAllSpecs`. Please leave any feedback around 'Run All Specs'
[`experimentalRunAllSpecs`](guides/references/experiments#End-to-End-Testing).
Please leave any feedback around 'Run All Specs'
[here](https://github.com/cypress-io/cypress/discussions/21628). Your feedback
will help us make product decisions around the future of this feature.
Addresses [#24168](https://github.com/cypress-io/cypress/issues/24168)
Expand Down
204 changes: 185 additions & 19 deletions content/_changelogs/12.0.0.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,192 @@
## 12.0.0

_Released MM/DD/YYYY_
_Released 12/06/2022_

**Summary:**
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the 11.0 release, I just copied the splash screen verbiage to the summary here. I figured the splash screen really is a summary of the release.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, maybe I should just copy it.


The Session and Origin Experiment is now generally available for end-to-end
testing. This means Cypress now fully supports:

- Testing multiple origins in a single test with the new
[`cy.origin()`](/api/commands/origin) command.
- Caching and restoring cookies,
[`localStorage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage),
and
[`sessionStorage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage)
between tests
- Configuring
[`testIsolation`](/guides/core-concepts/writing-and-organizing-tests#Test-Isolation)
in suites to define whether or not the browser context is cleaned or persisted
between tests

Additionally in this release, enhancements were made to how Cypress manages DOM
element resolution to reduce the likelihood of hitting detached DOM errors due
to maintaining stale DOM references. We've updated our
[Retry-ability Guide](/guides/core-concepts/retry-ability) with all the details
if you'd like to learn more.

Read more about 12.0 in
[our blog post](https://cypress.io/blog/2022/12/06/cypress-12-release/).

**Breaking Changes:**

- `experimentalSessionAndOrigin` flag has been removed and all functionality is
on by default now.
- The new concept of `testIsolation` has been introduced and it defaults to
`on`.
- Cypress now throws an error if commands are invoked from inside a `.should()`
callback. This previously resulted in unusual and undefined behavior; it is
now explicitly an error. <<<<<<< HEAD =======
- The [`.within()`](/api/commands/within) command now throws an error if given
more than one DOM element as a subject. This is done for consistency - in
older versions, some commands inside a `.within()` block would respect all
passed in elements, while others silently discarded subjects beyond the first
and `.screenshot()` would throw an error.
> > > > > > > f2c3c1944ed572fc96b8a8001c53b80a9bdb25de
- `Cookies.defaults` and `Cookies.preserveOnce` have been removed. Please update
to use [`cy.session()`](/api/commands/session) to preserve session details
- Cypress dropped support for Node.js 12, 15 and 17. Those versions have reached
end-of-life. Installing Cypress on your system now requires Node.js 14, 16 or
18+. Addressed in [#24885](https://github.com/cypress-io/cypress/pull/24885).
- Cypress has always recommended writing tests in a clean context. In Cypress
12, we enforce running tests in a clean browser context through
[test isolation](/guides/core-concepts/writing-and-organizing-tests#Test-Isolation).
This option is configurable, but is enabled by default. Whether enabled or
disabled, this changes how Cypress cleans up the browser context before each
test and you may experience test errors with this upgrade. To better
understand the full impact of this change, please review the
[migration guide](/guides/references/migration-guide#test-isolation).
- In Cypress v12, the `testIsolation` configuration values have changed from
`on` or `off` to `true` or `false`. Addressed in
[#24935](https://github.com/cypress-io/cypress/pull/24935).
- The `experimentalSessionAndOrigin` configuration option has been removed and
all functionality associated with this experiment is now enabled by default,
with the exception of using `require` and `import` with callback supplied to
the [`cy.origin()`](/api/commands/origin) command. To leverage external
dependencies in `cy.origin()` callbacks, set the new
[`e2e.experimentalOriginDependencies`](guides/references/experiments#End-to-End-Testing)
configuration option to `true`. Addresses
[#21471](https://github.com/cypress-io/cypress/issues/21471).
- The `Cookies.defaults` and `Cookies.preserveOnce` APIs have been removed. Use
the new [`cy.session()`](/api/commands/session) command to preserve cookies
between tests. Addresses
[#21472](https://github.com/cypress-io/cypress/issues/21472).
- The` cy.server()` and` cy.route()` commands and the `Cypress.Server.defaults`
API has been removed. Use [`cy.intercept()`(/api/commands/intercept) instead.
Addressed in [#24411](https://github.com/cypress-io/cypress/pull/24411).
- The `cy.server()` and `cy.route()` commands have been removed. Additionally,
the corresponding `Cypress.Server.defaults` API has also been removed. Use the
[`cy.intercept()`(/api/commands/intercept) command to stub network responses
and requests. Addresses
[#22126](https://github.com/cypress-io/cypress/issues/22126).
- The Cookie commands now uses the `hostname` as the domain by default instead
of the `superdomain`. This change aligns Cypress' cookie rules with the
browser cookie rules. This may affect what cookies are returned by
[`cy.getCookie()`](/api/commands/getcookie), what cookies are set with
[`cy.setCookie()`](/api/commands/setcookie), and the cookies cleared with
[`cy.clearCookies()`](/api/commands/clearcookies). Addresses
[#363](https://github.com/cypress-io/cypress/issues/363),
[#5723](https://github.com/cypress-io/cypress/issues/5723) and
[#24526](https://github.com/cypress-io/cypress/issues/24526).
- The [`.within()`](/api/commands/within) command now requires a single subject
and throws an error if given more than one subject. This change adds
consistency around how `.within()` behaves across commands. Previously some
commands inside a `.within()` callback would silently select the first
element, while others would use all of the previously yielded subjects, and
others would throw an error. Addressed in
[#24975](https://github.com/cypress-io/cypress/pull/24975).
- Cypress now throws an error if any Cypress commands are invoked from inside a
[`.should()`](/api/commands/should) callback. This previously resulted in
unusual and undefined behavior. Addresses
[#5963](https://github.com/cypress-io/cypress/issues/5963),
[#14656](https://github.com/cypress-io/cypress/issues/14656) and
[#22587](https://github.com/cypress-io/cypress/issues/22587).
- The [`.invoke()`](/api/commands/invoke) command now throws an error if the
invoked function returns a promise. If you wish to call a method that returns
a promise and wait for it to resolve, use [`.then()`](/api/commands/then)
instead of `.invoke()`. Addressed in
[#24417](https://github.com/cypress-io/cypress/pull/24417).
- The [`cy.request()`](/api/commands/request) command now uses
[`querystringify`](https://www.npmjs.com/package/querystringify) to stringify
& parse the `qs` options. This change aligns with how the
[`cy.visit()`](/api/commands/visit) command generates urls with query
parameters. Addressed in
[#20302](https://github.com/cypress-io/cypress/pull/20302).

**Features:**

- Added a new configuration option called `testIsolation`, which defaults to
`true`. This option can be set at the `e2e` or suite-level to determine
whether or not
[test isolation](/guides/core-concepts/writing-and-organizing-tests#Test-Isolation)
is enabled to ensure a clean browser context between tests. Addressed in
[#22230](https://github.com/cypress-io/cypress/pull/22230).
- The previously experimental Cypress command,
[`cy.origin()`](/api/commands/origin), is now generally available in
end-to-end testing. This command allows testing multiple origins in a single
test. Addresses [#17336](https://github.com/cypress-io/cypress/issues/17336).
- The previously experimental Cypress command,
[`cy.session()`](/api/commands/session), is now generally available. This
command caches and restores `cookies`,
[`localStorage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage),
and
[`sessionStorage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage)
in order to recreate a consistent browser context between tests. Addresses
[#20977](https://github.com/cypress-io/cypress/issues/20977).
- Added a new Cypress command,
[`cy.getAllLocalStorage()`](/api/commands/getAllLocalStorage), to get
[`localStorage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage)
data for all origins with which the test has interacted. Addresses
[#24276](https://github.com/cypress-io/cypress/issues/24276).
- Added a new Cypress command,
[`cy.clearAllLocalStorage()`](/api/commands/clearAllLocalStorage), to clear
[`localStorage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage)
data for all origins with which the test has interacted. Addresses
[#24276](https://github.com/cypress-io/cypress/issues/24276).
- Added a new Cypress command,
[`cy.getAllSessionStorage()`](/api/commands/getAllSessionStorage), to get
[`sessionStorage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage)
data for all origins with which the test has interacted. Addresses
[#24276](https://github.com/cypress-io/cypress/issues/24276).
- Added a new Cypress command,
[`cy.clearAllSessionStorage()`](/api/commands/clearAllSessionStorage), to
clear
[`sessionStorage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage)
data for all origins with which the test has interacted. Addresses
[#24276](https://github.com/cypress-io/cypress/issues/24276).
- Added a new configuration option called
[`experimentalOriginDependencies`](guides/references/experiments#End-to-End-Testing),
which defaults to `false`. This option enables support for `require` and
`import` within the callback supplied to the
[`cy.origin()`](/api/commands/origin) command in end-to-end testing.
Previously this feature was enabled through the `experimentalSessionAndOrigin`
configuration option. `experimentalOriginDependencies` was added as a
configuration option in Cypress 12, instead of being enabled by default, due
to increased Node.js memory usage associated with this option that needs to be
addressed before making this behavior generally available. See issue
[#24976](https://github.com/cypress-io/cypress/issues/24976) for more
information. Addressed in
[#24931](https://github.com/cypress-io/cypress/pull/24931).
- Added a new `Cypress.ensure` API which provides several methods that can be
helpful when writing customs commands. Addressed in
[#24697](https://github.com/cypress-io/cypress/pull/24697).
- Added a new "Run All" button to the
[`experimentalRunAllSpecs`](guides/references/experiments#End-to-End-Testing)
experiment which enables running all spec files returned from the
`specPattern` glob or an array of globs, regardless of the specs sharing a
root folder. Addresses
[#24759](https://github.com/cypress-io/cypress/issues/24759).
- Further improved bundling in the binary to reduce startup and unzip time.
Addressed in [#24909](https://github.com/cypress-io/cypress/pull/24909)

**Bugfixes:**

- Fixed a regression in [10.11.0](#10-11-0) where the Launchpad no longer showed
a loading spinner on startup to indicate that it had successfully started and
was in a loading state. Fixed
[#24950](https://github.com/cypress-io/cypress/issues/24950).
- Fixed the "Create Spec from Component" capability to correctly scaffold the
component spec from a component which contains special characters in its name.
Before this change, a spec was scaffolded with either the wrong spec name or
the incorrect component import which led to invalid JS errors. Fixes
[#23492](https://github.com/cypress-io/cypress/issues/23492).
- Corrected Cypress environment variable resolution to correctly resolve
environment variables set with `npm config set`. Fixes
[#24556](https://github.com/cypress-io/cypress/issues/24556).
- When
[`experimentalRunAllSpecs=true`](guides/references/experiments#End-to-End-Testing),
the "Run N specs" directory-level buttons in the Inline Specs List now
function correctly when activated by the keyboard. Fixes
[#24762](https://github.com/cypress-io/cypress/pull/24762).
- Fixed unexpected behaviors when verifying a cookie was not returned from
[`cy.getCookie()`](/api/commands/getcookie). Now it's possible to explicitly
assert the cookie did not exist with
`cy.getCookie('foo1').should('not.exist')`. Previously users had to verify
cookies properties did not exist with `.its('value').should('equal', null)`.
Addressed in [#24203](https://github.com/cypress-io/cypress/pull/24203).
- Fixed the console output returned from clicking on an aliased intercept in the
Command Log. It now logs the yielded request/response object associated to the
intercepted call when clicked, where previously it did not log these details.
Fixed in [#24623](https://github.com/cypress-io/cypress/pull/24623).