5.0.0
Released 8/19/2020
Summary:
Cypress now includes support for test retries! Similar to how Cypress will retry assertions when they fail, test retries will allow you to automatically retry a failed test prior to marking it as failed. Read our new guide on Test Retries for more details.
Breaking Changes:
Please read our Migration Guide which explains the changes in more detail and how to change your code to migrate to Cypress 5.0.
- The
cypress-plugin-retries
plugin has been deprecated in favor of test retries built into Cypress. Addresses #1313. - The
Cypress.Cookies.defaults()
whitelist
option has been renamed topreserve
to more closely reflect its behavior. Addressed in #7782. - The
blacklistHosts
configuration has been renamed toblockHosts
to more closely reflect its behavior. Addressed in #7622. - The
cy.server()
whitelist
option has been renamed toignore
to more closely reflect its behavior. Addresses #6642. libgbm-dev
is now a requirement to run Cypress on Linux. Addressed in #7791.- Values yielded by
cy.setCookie()
,cy.getCookie()
, andcy.getCookies()
will now contain thesameSite
property if specified. Addresses #6892. - The
experimentalGetCookiesSameSite
configuration flag has been removed, since this behavior is now the default. Addresses #6892. - The return type of the
Cypress.Blob
methodsarrayBufferToBlob
,base64StringToBlob
,binaryStringToBlob
, anddataURLToBlob
have changed fromPromise<Blob>
toBlob
. Addresses #6001. - Cypress no longer supports file paths with a question mark
?
in them. We now use the webpack preprocessor by default and it does not support files with question marks. Addressed in #7982. - For TypeScript compilation of spec, support, and plugins files, the
esModuleInterop
option is no longer coerced totrue
. If you need to utilizeesModuleInterop
, set it in yourtsconfig.json
. Addresses #7575. - Cypress now requires TypeScript 3.4+. Addressed in #7856.
- Installing Cypress on your system now requires Node.js 10+. Addresses #6574.
- In spec files, the values for the globals
__dirname
and__filename
no longer include leading slashes. Addressed in #7982.
Features:
- There's a new
retries
configuration option to configure the number of times to retry a failing test. Addresses #1313. .click()
,.dblclick()
, and.rightclick()
now accept optionsaltKey
,ctrlKey
,metaKey
, andshiftKey
to hold down key combinations while clicking. Addresses #486.- You can now chain
.snapshot()
off ofcy.stub()
andcy.spy()
to disabled snapshots during those commands. For example:cy.stub().snapshot(false)
. Addresses #3849.
Bugfixes:
- The error
Cannot set property 'err' of undefined
will no longer incorrectly throw when rerunning tests in the Test Runner. Fixes #7874 and #8193. - Cypress will no longer throw a
Cannot read property 'isAttached' of undefined
error duringcypress run
on Firefox versions >= 75. Fixes #6813. - The error
Maximum call stack size exceeded
will no longer throw when callingscrollIntoView
on an element in the shadow dom. Fixes #7986. - Cypress environment variables that accept arrays as their value will now properly evaluate as arrays. Fixes #6810.
- Elements having
display: inline
will no longer be considered hidden if it has child elements within it that are visible. Fixes #6183. - When
experimentalShadowDomSupport
is enabled,.parent()
and.parentsUntil()
commands now work correctly in shadow dom as well as passing a selector to.parents()
when the subject is in the shadow dom. Fixed in #8202. - Screenshots will now be correctly taken when a test fails in an
afterEach
orbeforeEach
hook after the hook has already passed. Fixes #3744. - Cypress will no longer report screenshots overwritten in a
cy.screenshot()
onAfterScreenshot
option as a unique screenshot. Fixes #8079. - Taking screenshots will no longer fail when the screenshot names are too long for the filesystem to accept. Fixes #2403.
- The "last used browser" will now be correctly remembered during
cypress open
if a non-default-channel browser was selected. Fixes #8281. - For TypeScript projects,
tsconfig.json
will now be loaded and used to configure TypeScript compilation of spec and support files. Fixes #7006 and #7503. reporterStats
now correctly show the number of passed and failed tests when a test passes but theafterEach
fails. Fixes #7730.- The Developer Tools menu will now always display in Electron when switching focus from Specs to the Test Runner. Fixes #3559.
Documentation Changes:
- We have a new guide on Test Retries.
- Our Migration Guide has a new section for 5.0 migration.
Misc:
- Cypress now uses the webpack preprocessor by default to preprocess spec files.
- The Runs tab within the Test Runner has a new improved design when the project has not been set up or login is required. Addressed in #8141.
- The type for the
Window
object returned fromcy.window()
is now correct. Addresses #7856. - The type definition for Cypress's
ApplicationWindow
can now be extended. Addresses #7856. - The type definition for
reporterOptions
has been added. Addresses #7877.
Dependency Updates
- Upgraded Chrome browser version used during cypress run and when selecting Electron browser in cypress open from
80
to83
. Addressed in #7791. - Upgraded bundled Node.js version from
12.8.1
to12.14.1
. Addressed in #7791. - Upgraded
chalk
from2.4.2
to4.1.0
. Addressed in #7650. - Upgraded
cli-table3
from0.5.1
to0.6.0
. Addressed in #7650. - Upgraded
electron
from8.3.1
to9.2.0
. Addressed in #7791 and #8235. - Upgraded
execa
from1.0.0
to4.0.2
. Addressed in #7650. - Upgraded
express
from4.16.4
to4.17.1
. Addressed in #8179. - Upgraded
fs-extra
from8.1.0
to9.0.1
. Addressed in #7650. - Upgraded
log-symbols
from3.0.0
to4.0.0
. Addressed in #7650. - Upgraded
tmp
from0.1.0
to0.2.1
. Addressed in #7650.