NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #3338 most downloaded on npm
Cypress is a next generation front end testing tool built for the modern web
Last release 5 days ago
29 Sep 2026
Ships on a steady schedule
a new release about every 2 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
11 years old
294 releases · first in 2015
Cypress now extracts and sends CodeFresh CI default variables when recording to the Dashboard. Addresses #4609
Improved the startup time of cypress open and cypress run. Addresses #15075.
Released 2/15/2021
Performance:
cypress open and cypress run. Addresses #15075.Bugfixes:
Cypress.on did not support chaining. Addresses #14991..zip could become corrupted and break the install process. Addresses #4595.Misc:
autoEnd to the types for LogConfig. Addresses #9590.Dependency Updates:
electron to version 11.2.3. Addresses #15056.One column per quarter.
The delayMs option for cy.intercept() has been renamed to delay. delayMs will still work, but it is deprecated and will be removed in a future release…
Released 2/1/2021
Features:
delayMs option for cy.intercept() has been renamed to delay. delayMs will still work, but it is deprecated and will be removed in a future release. Addresses #14822.Bugfixes:
cy.type() commands. Addresses #14684.watchForFileChanges: false. Addresses #14744.cy.click() before cy.type(). Addresses #14685.cy.intercept where aliases set via req.alias containing a period character would not work as expected. Addresses #14444.cy.intercept would not work as expected. Addresses #14446 and #14511.Misc:
Dependency Updates:
recast to version 0.20.4. Addresses #14623.registry-js to version 1.13.0. Addresses #14668.@cypress/get-windows-proxy to version 1.6.2. Addresses #14711.systeminformation to version 4.31.1. Addresses #14715.semantic-release to version 17.2.3. Addresses #14713.electron to version 11.2.1`. Addresses #14764.Released Feb 01, 2021
Features:
Deprecations:
Bugfixes:
Fixed an issue causing a webpack compilation error when a browserslist is present in project root. Addresses #8864 .
Fixed an issue with cy.intercept() where aliases set via req.alias containing a period character would not work as expected. Addresses #14444 .
Fixed an issue where delays set using cy.intercept() would not work as expected. Addresses #14446 and #14511 .
Reverted a change to how the Chrome DevTools Protocol is established. Instead of using stdio and then falling back to TCP, Cypress now only uses TCP to try to connect to Chrome DevTools Protocol. Addresses #14819 .
We now better handle spec paths containing special characters so they properly show in the code frame and work when interacting via your IDE. Addresses #14659 .
We addressed several issues with the experimental Cypress Studio . To enable the Cypress Studio you can set experimentalStudio to true in your Cypress configuration. Issues addressed:
Cypress Studio now prompts to start adding commands after visiting an inputted url. Addresses #14688 .
Empty .type() commands will no longer be generated when tabbing through inputs. Addresses #14684 .
Cypress Studio no longer prompt to enter a URL if the test is in an errored state. Addresses #14686 .
Cypress Studio now reloads tests when watchForFileChanges is false . Addresses #14744 .
An empty .click() command will no longer be added before .type() in Cypress Studio when it is followed by typed characters. Addresses #14685 .
Cypress Studio will now use the correct selector for an element even if the click event changed the selectors. Addresses #14658 .
Multi-select selects are now supported in Cypress Studio. Addresses #14743 .
There's an improved UI for command failures within Cypress Studio. Addresses #14691 .
The Selector Playground is now closed automatically when Cypress Studio is opened. #14689 .
Misc:
The "no specs found" error now displays which directory it searched for specs. Addresses #14532 .
More types for the resolved config property have been added. Addresses #14392 .
Dependency Updates:
Upgraded @cypress/get-windows-proxy to version 1.6.2 . Addressed in #14711 .
Upgraded electron to version 11.2.1 . Addressed in #14764 .
Upgraded recast to version 0.20.4 . Addressed in #14623 .
Upgraded registry-js to version 1.13.0 . Addressed in #14668 .
Upgraded semantic-release to version 17.2.3 . Addressed in #14713 .
Upgraded systeminformation to version 4.31.1 . Addressed in #14715 .
Replaced deprecated node-sass with sass. Addressed in #14415.
Released 1/19/2021
Features:
experimentalStudio attribute to your configuration, cypress.json by default. Address #73.downloadsFolder which is set to cypress/downloads by default. The downloadsFolder will be deleted before each run unless trashAssetsBeforeRuns is set to false. Addresses #949.Bugfixes:
.only, the error will now correctly display in the Command Log. Fixes #14455.--key flag when followed by other CLI flags. Fixed #14593.afterEach hook. Fixes #9209.waitForAnimations set to false no longer affects whether Cypress fires actions on inner elements. Fixes #14370.CYPRESS_ prefixed env variables containing commas to be parsed as multiple values. Fixes #8818.have.value on an undefined subject would throw an error. Fixes #14359.Misc:
Dependency Updates:
node-sass with sass. Addressed in #14415.debug from 4.1.1 to 4.3.1. Addressed in #14583.electron from 11.0.3 to 11.2.0. Addressed in #14567.electron-builder from 22.8.0 to 22.9.1. Addressed in #14493.shell-env from 3.0.0 to 3.0.1. Addressed in #14622.uuid from 8.2.0 to 8.3.2. Addressed in #14170.Test retries, when retrying on several failed tests, will no longer cause hanging during cypress run. Fixes #9040.
Released 1/4/2021
Bugfixes:
cypress run. Fixes #9040.multipart/form-data is no longer wrongly encoded when using cy.intercept(). This should prevent Unexpected end of multipart data errors on the back end service where the request was pointing to. Fixes #9359.cy.contains() no longer throws an error when a single quote is used inside its argument when RegExp. Fixes #8626.capture: 'runner' to a cy.screenshot() command inside .within() now screenshots the entire Test Runner as expected. Fixes #14253.Cypress.dom.isJquery() now always returns a boolean instead of undefined sometimes. Fixes #14278.calledOnceWith and calledOnceWithExactly sinon matchers no longer throw an error when used within Cypress. Fixes #9644.--disable-backgrounding-occluded-windows as a default flag to Chrome to prevent backgrounding rendering when the Cypress window is occluded. Fixes #9604.Misc:
Dependency Updates:
You can now listen to before:run and after:run events in the plugins file. See the `before:run` and `after:run` docs for more information. Addressed i
Released 12/21/2020
Features:
before:run and after:run events in the plugins file. See the before:run and after:run docs for more information. Addressed in #14238 and #14263.before:spec and after:spec events in the plugins file. See the before:spec and after:spec docs for more information. Addressed in #9646 and #14178.Timed out retrying error message now displays the amount of time Cypress retried. Addresses #5781.Bugfixes:
cy.intercept() using cy.get() will no longer always yield null. Fixes #9306.cy.intercept() will now automatically responds to CORS preflight requests (HTTP OPTIONS requests) that match defined routes. Fixes #9599.forceNetworkError can now be awaited using cy.intercept() and cy.wait(). Fixes #9062.cy.log() inside .then() no longer breaks the subject value in the command chain. Fixes #8084.Cypress.Commands.overwrite to overwrite .then() now preserves the proper this context and sets aliases correctly. Fixes #5101.Cypress.Commands.overwrite to overwrite cy.route() or cy.intercept() and wait on its alias now properly works. Fixes #3890 and #9580.Misc:
scrollBehavior is now an allowed type when passed as test configuration. Addresses #9643.FileObject type for the file argument of the file:preprocessor event now includes the EventEmitter type. Addresses #9276.Dependency Updates:
electron from 11.0.2 to 11.0.3. Addressed in #9409.Released Dec 21, 2020
Features:
You can now listen to before:run , after:run , before:spec and after:spec events in the plugins file when setting the experimentalRunEvents configuration option to true . See the before:run , after:run , before:spec and after:spec docs for more information. Addressed in #9646 , #14178 #14238 and #14263 .
The Timed out retrying error message now displays the amount of time Cypress retried. Addresses #5781 .
The RouteMatcher argument for cy.intercept() has a new matchUrlAgainstPath property. When set to true , Cypress will match the supplied url against incoming path s. Addressed in #14241 .
Bugfixes:
Passing a URL as a string or RegExp to cy.intercept() will automatically set matchUrlAgainstPath to true . This means that the supplied string or RegExp will be matched against the path if matching against the URL fails. Fixes #9379 and #14256 .
Getting an alias of cy.intercept() using cy.get() will no longer always yield null . Fixes #9306 .
cy.intercept() will now automatically responds to CORS preflight requests (HTTP OPTIONS requests) that match defined routes. Fixes #9599 .
Response errors from forceNetworkError can now be awaited using cy.intercept() and cy.wait() . Fixes #9062 .
Using cy.log() inside .then() no longer breaks the subject value in the command chain. Fixes #8084 .
Using Cypress.Commands.overwrite to overwrite .then() now preserves the proper this context and sets aliases correctly. Fixes #5101 .
Using Cypress.Commands.overwrite to overwrite cy.route() or cy.intercept() and wait on its alias now properly works. Fixes #3890 and #9580 .
Cypress no longer fails to find specs if you set the fixtures folder to be the same as the integration folder. Fixes #14226 .
Cypress no longer fails to show error code frames if the spec filename has a space in it, fixes #7553 .
Misc:
scrollBehavior is now an allowed type when passed as test configuration. Addresses #9643 .
The FileObject type for the file argument of the file:preprocessor event now includes the EventEmitter type. Addresses #9276 .
Dependency Updates:
Deprecations still work as before but will be removed from Cypress in a future release. We encourage you to update your code now to remove uses of dep…
Released 12/07/2020
Features:
scrollBehavior configuration option that controls the viewport position when an element is scrolled prior to action commands. Possible values are 'top', 'bottom', 'center', 'nearest', and false, with 'top' being the default. scrollBehavior: false disables scrolling altogether. scrollBehavior can be specified in global configuration, test configuration or individual action commands via options. Addresses #871 and #4356.Bugfixes:
cy.intercept() will now automatically set Access-Control-Allow-Origin and Access-Control-Allow-Credentials to permissive values unless explicitly overridden. Fixes #9264.Cannot read property "fireChangeEvent" of undefined error will no longer throw during a race condition when using cy.intercept(). https://github.com/cypress-io/cypress/issues/9170cy.intercept(). Fixes #8934 and #8999.cy.intercept() unless dynamically intercepted. Addressed in #9097.before() hook. Fixes #9162./ from URLs when they are explicitly passed with query paramaters. Fixes #9360.Cypress.dom.isVisible behavior for elements with position: fixed, addresses #8998 and #9031.Deprecations:
Deprecations still work as before but will be removed from Cypress in a future release. We encourage you to update your code now to remove uses of deprecations.
Cypress.moment has been deprecated and will be replaced in a future release. Consider migrating to a different datetime formatter. Addresses #8714.Misc:
waitForAnimations and animationDistanceThreshold types are now included for all actionable commands. Addresses #8854.Dependency Updates:
mocha-junit-reporter from 1.23.1 to 2.0.0. Addressed in #9528.`cy.screenshot()` types won't mistakenly display the command as deprecated. Fixes #9303.
Released 11/30/2020
Bugfixes:
Option 'sourceMap' cannot be specified with option 'inlineSourceMap' error to throw when setting sourceMap in your tsconfig. Fixes #8477.cy.screenshot() no longer throws an "offset" is out of range error when Cypress attempts to crop the image. Fixes #2034.cy.screenshot() types won't mistakenly display the command as deprecated. Fixes #9303.cy.intercept(). Fixes #9313.We removed several deprecation errors around APIs that were removed in versions of Cypress prior to 4.0.0. This will not cause any changes for anyone…
Released 11/23/2020
Summary:
Cypress now offers full network stubbing support with the introduction of the cy.intercept() command (previously cy.route2()). With cy.intercept() your tests can intercept, modify and wait on any type of HTTP request originating from your app.
Breaking Changes:
Please read our Migration Guide which explains the changes in more detail and how to change your code to migrate to Cypress 6.0.
not.exist). Assertions such as not.visible, not.contains, not.have.class, etc will now fail when used on non-existent DOM elements. Addresses #205.opacity: 0 are no longer considered visible. However these are still considered actionable and "any action commands" interacting-with-elements#Actionability used to interact with the element will perform the action. This matches browser's implementation on how they regard elements with opacity: 0. Addresses #4474.cy.wait(alias) has changed in order to support use of cy.intercept(). Addressed in #9266.experimentalNetworkStubbing option has been removed and made the default behavior. You can safely removed this configuration option. Addressed in #9185..type() and .click() on elements inside a contenteditable element, the events are now properly triggered on the inside elements. This may cause unintended consequences if you were relying on the previous behavior. Addressed in #9066.http.STATUS_CODES. If you have code that relies on a reason phrase, then this could affect you. Addressed in #8969.cy.intercept() are now automatically parsed, removing the need to manually do JSON.parse. Addressed in #9280.Deprecations:
Deprecations still work as before but will be removed from Cypress in a future release. We encourage you to update your code now to remove uses of deprecations.
cy.server() and cy.route() have been deprecated. In a future release, support for cy.server() and cy.route() will be moved to a plugin. We encourage you to use cy.intercept() instead. Addressed in #9185.experimentalFetchPolyfill has been deprecated. We encourage you to use cy.intercept() to intercept requests using the Fetch API instead.cy.route2() was renamed to cy.intercept(). We encourage you to update usages of cy.route2() to use cy.intercept(). Addressed in #9182.Features:
cy.intercept() command can be used to manage the behavior of HTTP requests at the network layer. Addressed in #9182.—disable-dev-shm-usage to the Chrome browser flags by default. This will write shared memory files into /tmp instead of /dev/shm. If you're passing this flag in your plugins file, you can now remove this code. Addresses #5336.cypress version command now also displays the current Electron and bundled Node versions. Addresses #9180.cypress version command now accepts a --component flag that allows you to print the version of specific components of Cypress. ie Electron, Node, etc. Addresses #9214.Bugfixes:
.type() to not type the entire string when focus was called away from the target element. Fixes #9254..type() and .click() now properly work on elements inside a contenteditable element. Fixes #2717 and #7721.Content-Length for cy.route2 request bodies could be incorrectly recalculated. Fixes #9166.Documentation Changes:
cy.intercept() in place of cy.route() including our Network Requests doc.Misc:
redirects and changed redirectedToUrl optional for Response types. Addresses #9275.Dependency Updates
You can now dynamically add aliases for requests intercepted via `cy.route2()`. See an example. Addresses #387.
Released 11/09/2020
Features:
cy.route2(). See an example. Addresses #387.cy.type(). You can now type shortcuts like {ctrl+z}. Addressed in #5694.Bugfixes:
cy.visit() on sites with content-type of text-html followed by parameters (like text/html;charset=utf-8) will no longer throw an error about visiting a site with an invalid content-type. Fixes #8506Cannot access 'continueSent' before initialization error will no longer throw when using cy.route2(). Fixes #8926.cy.route2() should now work properly. Addressed in #9059.cy.route2() requests are displayed in the Command Log has been improved, including showing the progress bar correctly. Addresses #9053.Cannot read property 'replace' of undefined error will no longer throw when attempting to generate the stack trace from an error thrown in the application. Fixes #7915.fixture: prefix as a stubbed response to cy.route(), JSON fixtures containing only a number or boolean will no longer throw an error. Fixes #4899.Misc:
.invoke() and .its() now allow for a timeout option. Addresses #9079.cy.task() now allow for parameterizing the task return type. Addresses #7136.cypress cache list when no cached versions are found. Addresses #6303.Dependency Updates:
commander from ^4.1.1 to ^5.1.0. Addressed in #8979.semver from 6.3.0 to 7.3.2. Addressed in #9068.systeminformation from 4.26.9 to 4.27.11. Addressed in #8979.node-webkit-updater. This should remove some security warnings that were shown during install. Addresses #8314.This addresses a Chrome security issue, CVE-2020-15999. Addresses #8922.
Released 10/26/2020
Features:
cy.viewport() has a new macbook-16 preset. Addresses #8889..type() now fires the beforeInput event during typing. Note: Firefox does not support the beforeinput event. Addresses #7088.Bugfixes:
cy.route2 where HTTPS requests to a non-AUT origin would not be intercepted as expected.cy.route2() now properly handles passing a method as its first argument. Fixes #8729.cy.route2() where a "Cannot set property response of undefined" error would occasionally occur. Fixes #8858.cy.route2() now serve the correct mime-type and content. Fixes #8623.experimentalNetworkStubbing is enabled, using cy.visit() to URLs that redirect and set Transfer-Encoding: chunked will no longer fail in Cypress with a "Parse Error". Fixes #8497.cypress.run() through the Module API now has a status property in the results matching the correct CLI types ("failed" or "finished"). Addresses #8798.e character is passed to the --ci-build-id flag, Cypress now properly reads it as a string. Fixes #8874.Misc:
runMode or openMode to retries alone. Addresses #8869.Dependency Updates:
You can now run `cypress cache prune` to delete all installed Cypress versions from the cache except for the currently-installed version. Addresses #5
Released 10/14/2020
Features:
cypress cache prune to delete all installed Cypress versions from the cache except for the currently-installed version. Addresses #5972.--size option for the cypress cache list command that prints the sizes of the Cypress cache folders. Addresses #6404.--browser flag, like cypress open --browser C:/User/App/browser.exe:chrome, to help detect the browser type. Addresses #6389.cy.viewport() has new iphone-7, iphone-8, and iphone-se2 presets. Addressed in #8624CYPRESS_NO_COMMAND_LOG=1 environment variable during cypress open or cypress run to be used as a tool to debug performance issues. Addressed in #8689.Bugfixes:
chromeWebSecurity option had no effect in Electron. Fixes #8399.test:after:run event listener. Fixes #2271 and #8701..within() and "cy.get()" is called inside it, the scope will no longer permanently change. Fixes #2106, #4672, #4757, and #5183.cy.contains() when used after an .each() commands now query as expected. Fixes #4921./ is no longer added to the URL when baseUrl has param(s). Fixes #2101.cy.route2() the route handler timeouts will no longer leak into other tests and cause random failures. Addressed in #8727.Misc:
cy.route2(). Addresses #8694 and #8782.Dependency Updates:
cypress run and when selecting Electron browser in cypress open from 83 to 85. Addressed in #8406.12.14.1 to 12.16.3. Addressed in #8406.electron from 9.2.1 to 10.1.3. Addressed in #8406.firefox-profile from 2.0.0 to 4.0.0. Addressed in #8786.node-forge from 0.9.0 to 0.10.0. Addressed in #8800.Updated types to no longer use deprecated Mocha interfaces. Addresses #5795.
Released 9/28/2020
Features:
firefoxGcInterval workaround. The desktop GUI will display a warning if such versions are used.Bugfixes:
cy.route2 would not automatically JSONify an empty array handler. Addresses #8532.cy.wait on a cy.route2 alias would not always have a response property. Addresses #8536.cy.route2 routes would not be able to intercept requests to HTTPS destinations on a different origin. Addresses #8487.undefined after certain assertion failures. Addresses #5763.cy.task with no arguments passed would receive null as the first argument instead of undefined. Addresses #5913.cy.visit()s to a relative URL containing .. would not work. Addresses #5090.cy.setCookie failed when given a cookie name with a __Host- prefix. Addresses #8261.Error object. Addresses #7870.Misc:
Content-Security-Policy-Report-Only header the same way that it does for Content-Security-Policy. Addresses #7936.status property to CypressRunResult objects. Addresses #8580.CYPRESS_INSTALL_BINARY now takes precedence over npm config. Addresses #8488.Added the configuration option includeShadowDom for enabling shadow DOM querying globally, per-suite, per-test, or programmatically. Addresses #8442.
Released 9/15/2020
Features:
includeShadowDom for enabling shadow DOM querying globally, per-suite, per-test, or programmatically. Addresses #8442.followRedirect option to request interception with cy.route2(), allowing redirects to be followed before continuing to response interception. Addresses #7967.delayMs and throttleKbps when stubbing static responses with cy.route2(). Addresses #7661.CYPRESS_BINARY_INSTALL environment variable. Addresses #8482.Performance Improvements:
Bugfixes:
cy.contains() within a shadow root would not yield the correct element. Addresses #8494.cy.within() callback would throw the error root.getRootNode is not a function. Addresses #8478.cy.type() {moveToStart}/{moveToEnd} special characters moving the cursor to the current line instead of the entire text editable when typing in a contenteditable element. Addresses #8465.cy.type() now fires a KeyboardEvent event instead of an Event event. Addresses #6125 and #5650.cy.getCookie() would be called twice. Addresses #6672.Documentation Changes:
cy.route2(). Addresses #8489.cy.route2(). Addresses #8468.Misc:
experimentalShadowDomSupport configuration flag has been removed. It is no longer necessary to enable shadow DOM testing.cy.shadow() is not a shadow host. Addresses #8530.cy.route2() command.Cypress.Commands.add(), adding Promise to the list of allowed return types. Addresses #7807.Introducing *experimental* full network stubbing support 🎉.
Released 9/1/2020
Features:
experimentalNetworkStubbing enabled, the cy.route2 command is available.XMLHttpRequests, fetch requests, beacons, and subresources (like iframes and scripts).cy.trigger() now accepts an eventConstructor option for specifying the constructor with which to create the event to trigger. Addresses #5650.Bugfixes:
retries to TestOptions types. Addresses #8405.specType field on Cypress.spec. Addresses #8256.noproxy is set, unexpected behavior could occur. Addresses #8287..mjs files. Addresses #8361..should with only chainer assertions will now throw an error. Addresses #883.cy.trigger() now includes the view property in the event object when appropriate. Addresses #3686.Dependency Updates:
The `cypress-plugin-retries` plugin has been deprecated in favor of test retries built into Cypress. Addresses #1313.
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.
cypress-plugin-retries plugin has been deprecated in favor of test retries built into Cypress. Addresses #1313.Cypress.Cookies.defaults() whitelist option has been renamed to preserve to more closely reflect its behavior. Addressed in #7782.blacklistHosts configuration has been renamed to blockHosts to more closely reflect its behavior. Addressed in #7622.cy.server() whitelist option has been renamed to ignore to more closely reflect its behavior. Addresses #6642.libgbm-dev is now a requirement to run Cypress on Linux. Addressed in #7791.cy.setCookie(), cy.getCookie(), and cy.getCookies() will now contain the sameSite property if specified. Addresses #6892.experimentalGetCookiesSameSite configuration flag has been removed, since this behavior is now the default. Addresses #6892.Cypress.Blob methods arrayBufferToBlob, base64StringToBlob, binaryStringToBlob, and dataURLToBlob have changed from Promise<Blob> to Blob. Addresses #6001.? in them. We now use the webpack preprocessor by default and it does not support files with question marks. Addressed in #7982.esModuleInterop option is no longer coerced to true. If you need to utilize esModuleInterop, set it in your tsconfig.json. Addresses #7575.__dirname and __filename no longer include leading slashes. Addressed in #7982.Features:
retries configuration option to configure the number of times to retry a failing test. Addresses #1313..click(), .dblclick(), and .rightclick() now accept options altKey, ctrlKey, metaKey, and shiftKey to hold down key combinations while clicking. Addresses #486..snapshot() off of cy.stub() and cy.spy() to disabled snapshots during those commands. For example: cy.stub().snapshot(false). Addresses #3849.Bugfixes:
Cannot set property 'err' of undefined will no longer incorrectly throw when rerunning tests in the Test Runner. Fixes #7874 and #8193.Cannot read property 'isAttached' of undefined error during cypress run on Firefox versions >= 75. Fixes #6813.Maximum call stack size exceeded will no longer throw when calling scrollIntoView on an element in the shadow dom. Fixes #7986.display: inline will no longer be considered hidden if it has child elements within it that are visible. Fixes #6183.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.afterEach or beforeEach hook after the hook has already passed. Fixes #3744.cy.screenshot() onAfterScreenshot option as a unique screenshot. Fixes #8079.cypress open if a non-default-channel browser was selected. Fixes #8281.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 the afterEach fails. Fixes #7730.Documentation Changes:
Misc:
Window object returned from cy.window() is now correct. Addresses #7856.ApplicationWindow can now be extended. Addresses #7856.reporterOptions has been added. Addresses #7877.Dependency Updates
80 to 83. Addressed in #7791.12.8.1 to 12.14.1. Addressed in #7791.chalk from 2.4.2 to 4.1.0. Addressed in #7650.cli-table3 from 0.5.1 to 0.6.0. Addressed in #7650.electron from 8.3.1 to 9.2.0. Addressed in #7791 and #8235.execa from 1.0.0 to 4.0.2. Addressed in #7650.express from 4.16.4 to 4.17.1. Addressed in #8179.fs-extra from 8.1.0 to 9.0.1. Addressed in #7650.log-symbols from 3.0.0 to 4.0.0. Addressed in #7650.tmp from 0.1.0 to 0.2.1. Addressed in #7650.The error Cannot set property 'err' of undefined will no longer incorrectly throw when rerunning tests in the Test Runner. Fixes #7874.
Released 8/5/2020
Bugfixes:
Cannot set property 'err' of undefined will no longer incorrectly throw when rerunning tests in the Test Runner. Fixes #7874.before hook will now correctly run the tests in the suite following the skipped test. Fixes #8086.Dependency Updates:
This allows the use of npm audit fix to fix security vulnerabilities without needing a patch release from Cypress. Addresses #8046.
Released 8/3/2020
Features:
cypress run by setting screenshotOnRunFailure in your configuration. Addresses #5029.pluginsFile now has access to a readonly version property within the config object that returns the current Cypress version being run. This will allow plugins to better target specific Cypress versions. Addresses #6352.cypress open, you can now run a subset of all specs by entering a text search filter and clicking 'Run n tests'. Addresses #6581.Bugfixes:
position: fixed elements that have a parent with pointer-events: none will now correctly evaluate as visible. Fixes #6675.attributeChangedCallback to be triggered on custom elements. Fixes #7187.+ characters now properly run in Cypress. Fixes #5909.fx shortcut in cy.route(), an error is now thrown when the fixture file cannot be found. Fixes #7818.Cannot read property '__error' of null error when passing a file containing null content to cy.fixture(). Fixes #8010.--env via the command line are now properly read. Fixes #6891.experimentalSourceRewriting is enabled, AST rewriting will no longer return an output before the body is done being written. This would happen when the response body was too large and the response would be sent while the body was still being modified. Fixes #8043..type(), Cypress now properly types into an input within an iframe that auto focuses the input. Fixes #8111.Misc:
cypress npm package are no longer pinned to a specific version. This allows the use of npm audit fix to fix security vulnerabilities without needing a patch release from Cypress. Addresses #8046.CypressCommandLine namespace. Addresses #7309..should() command. Addresses #5573.expiry property type is now a Number instead of a String. Addresses #8144.Dependency Updates:
You can now pass an ensureScrollability: false option to `.scrollTo()` to skip checking whether the element is scrollable. Addresses #1924.
Released 7/21/2020
Features:
ensureScrollability: false option to .scrollTo() to skip checking whether the element is scrollable. Addresses #1924.cy.clock() now accepts Dates as well as a Number for now. Fixes #7786.Bugfixes:
cypress run on Windows will no longer fail trying to make a connection to the browser. Fixes #6392.Cannot read property 'isAttached' of undefined error during cypress run on Firefox versions >= 75. Fixes #6813.invalid for option "size" error. Fixes #6099.viewportHeight or viewportWidth from within the test configuration now properly changes the viewport size for the duration of the suite or test.config within the pluginsFile now sets the values correctly. Fixes #7959.cy.wait() now reflects the correct requestTimeout and responseTimeout of the command. Fixes #7881.ELECTRON_EXTRA_LAUNCH_ARGS as key=value will now be properly read in. Fixes #7994.cy.route() now correctly display as 'xhr stub' in the Test Runner's Command Log. Fixes #8018.Misc:
pluginsFile and supportFile now mention that .ts extensions are supported. Addresses #7940.Dependency Updates:
@benmalka/foxdriver from 0.4.0 to 0.4.1. Addressed in #8040.firefox-profile from 1.3.1 to 2.0.0. Addressed in #8000.fix-path from 2.1.0 to 3.0.0. Addressed in #8028.human-interval from 0.1.6 to 1.0.0. Addressed in #8031.lodash from 4.17.15 to 4.17.19. Addressed in #7954.plist from 2.1.0 to 3.0.1. Addressed in #8045.proxy-from-env from 1.0.0 to 1.1.0. Addressed in #7900.resolve from 1.13.1 to 1.17.0. Addressed in #7989.systeminformation from 4.21.1 to 4.26.9. Addressed in #7975.uuid from 3.3.2 to 8.2.0. Addressed in #7976, #8002, and #8011.You can open a before, beforeEach, after, and afterEach hook definition in your IDE from the Test Runner's Command Log by clicking the Open in IDE but
Released 7/7/2020
Features:
before, beforeEach, after, and afterEach hook definition in your IDE from the Test Runner's Command Log by clicking the Open in IDE button. Addresses #7793.before, beforeEach, after, and afterEach hook definitions now display separately in the Test Runner's Command Log when defined in separate hook definitions. Addresses #7779.Bugfixes:
responseTimeout will no longer be prematurely canceled by the Cypress proxy layer. Fixes #6426.parent variable will no longer throw Illegal Invocation errors. Fixes #6412.experimentalShadowDomSupport is enabled, using .type() on an input in the Shadow DOM will not result in an error. Fixes #7741.experimentalShadowDomSupport is enabled, checking for visibility on a shadow dom host element will no longer hang if the host element was the foremost element and had an ancestor with fixed position. Fixes #7893.@benmalka/foxdriver module will no longer appear if any DEBUG environment variable was set. Fixed #7723.Misc:
Dependency Updates:
recast from 0.18.8 to 0.19.1. Addressed in #7898.An animated progress bar now displays on every command in the Command Log indicating how long the command has left to run before reaching its command
Released 6/23/2020
Features:
experimentalFetchPolyfill configuration option. When this option is true, Cypress will automatically replace window.fetch with a polyfill that Cypress can spy on and stub. Addresses #7710.--quiet flag to cypress run to silence any Cypress specific output from stdout. Addresses #7714.Bugfixes:
cy.wait() now correctly resolves when waiting for XHR requests that contain resource-like text in the XHR's query params or hash (like .js, .html, .css). #7280..click() would hang if the subject had a shadow root and experimentalShadowDomSupport was not enabled. Fixes #7679..should('have.value') now properly asserts against <progress>, <meter> or <li> element's values. Fixes #7603.cypress run when the stdout is too large. Fixes #7548.beforeEach hook. Fixes #7731.experimentalShadowDomSupport is enabled, querying shadow dom in certain situations will no longer cause the error Cannot read property 'length' of undefined during cypress run. Fixes #7676.cypress run will no longer crash when provided an empty string to the --project flag. Fixes #7743.Misc:
fixturesFolder, pluginsFile, screenshotsFolders and videoCompression have been updated to allow false TypeScript types. Addresses #7654.cy.wait(ms) now correctly yield the type of the previous subject. Addresses #7682.Dependency Updates:
arch from 2.1.1 to 2.1.2. Addressed in #7672.eventemitter2 from 4.1.2 to 6.4.2. Addressed in #7705 and #7707.getos from 3.1.1 to 3.2.1. Addressed in #7685.is-installed-globally from 0.1.0 to 0.3.2. Addressed in #7703.jimp from 0.12.0 to 0.13.0. Addressed in #7618.moment from 2.24.0 to 2.26.0. Addressed in #7718.signal-exit from 3.0.2 to 3.0.3. Addressed in #7738.You can now apply certain test configuration for the duration of a suite or test by passing a configuration object to the test or suite as the second
Released 6/8/2020
Features:
Cypress.isBrowser() has been expanded to allow for new matcher arguments to assist in filtering matching browsers. Addresses #7168.experimentalShadowDomSupport option. See the Experiments page for more information. Addresses #144.Bugfixes:
before and after hooks defined in completed suites no longer erroneously rerun. Fixes #1987.after hooks now correctly display in the Test Runner's Command Log. Fixes #2296.Cannot read property '__error' of null. Fixes #7518.cy.visit() to an authenticated URL would error with Request cannot be constructed from a URL that includes credentials: /__cypress/runner/./wasm/mappings.wasm Fixes #7481.pluginsFile or supportFile when they are TypeScript files. Fixes #7459.cy.on('fail', fn) fail handler now display a stack trace and code frame pointing to the origin of the error. Fixes #7512..click() now properly clicks on wrapped inline elements when the first child element in the parent element has no width or height. Fixes #7434 and #7012.cy.wrap() now properly respects the timeout option. It also better handles situations when passed a promise that never resolves. Fixes #5980.experimentalComponentTesting is enabled, Cypress will no longer exit with SIGABRT in certain situations. Fixes #7572.S shortcut during .pause() no longer does anything. This prevents the Test Runner from getting into a 'stuck' state. Fixes #6867.Misc:
Cypress.config() now has TypeScript types for the taskTimeout option. Addresses #7531.cy.screenshot() options and Cypress.log() have been updated to be more accurate. Addresses #7445.Cypress.automation have been added. Addresses #7519.--browser flag that is not supported by Cypress. Addresses #6979.Dependency Updates:
cy.request() now supports an encoding option that can be used to set the encoding of the response body, defaulting to utf-8. Addresses #2029 and #3576
Released 5/26/2020
Features:
cy.request() now supports an encoding option that can be used to set the encoding of the response body, defaulting to utf-8. Addresses #2029 and #3576.Bugfixes:
Misc:
Errors in the Test Runner now display a code frame to preview where the failure occurred with the relevant file, line number, and column number highli
Released 5/20/2020
Features:
@cypress/webpack-preprocessor should upgrade to v5.4.1 or later of the package which will correctly inline source maps. Addresses #881, #1761 and #3966.experimentalSourceRewriting configuration option to true. Addresses #5273.have.text, have.id, have.data, have.value, and have.attr assertions chainers are now automatically cast to strings for comparison. Addresses #7314.Bugfixes:
module: commonJS which Node.js and the browser expect. This fixes a situation where setting a different module in a tsconfig.json would cause errors to throw if you had export, import or async keywords in your code. Fixes #7005, #7011, #7043, and #7151.experimentalSourceRewriting is enabled, setting location or location.href to a relative href, or using location.replace or location.assign with a relative href will no longer navigate the AUT to the wrong URL. Fixes #3975 and #3994.experimentalSourceRewriting is enabled, the use of window.top and window.parent will no longer cause the AUT to break out of the Cypress iframe. Fixes #5271 and #1467.experimentalSourceRewriting is enabled, calls to window.frames, window.parent.frames, and other frames will no longer point to the wrong reference after being proxied through Cypress. Fixes #2664.experimentalSourceRewriting is enabled, scripts using the integrity attribute for sub-resource integrity (SRI) will now load after being proxied through Cypress. Fixes #2393.experimentalSourceRewriting is enabled, the use of document.location to set the URL will no longer navigate the AUT to the wrong URL. Fixes #7402..click will now click in the correct coordinates when either x or y coordinate options are zero. Fixes #7319.onError is not a function when a browser can't connect. Fixes #7217.force: true option to .select() to select options within a disabled <select>. Addresses #107..select() an <option> within a disabled <optgroup>. Fixes #7226.Cypress._.capitalize now correctly behaves the same as Lodash's capitalize method. Fixes #7222.experimentalComponentTesting is enabled, clicking on a component spec now watches the correct file without assuming it is an integration file. Fixes #7244.cy.visit(). Fixes #6193.Misc:
--version command when looking for available browsers from 5 seconds to 30 seconds. Addressed in #7366.Cypress.ConfigOptions types as a partial of the full options interface. Addresses #7238.Dependency Updates:
@cypress/browserify-preprocessor from 2.2.2 to 2.2.3. Addressed in #7291.cookie-parser from 1.4.4 to 1.4.5. Addressed in #7389.cypress-multi-reporters from 1.2.4 to 1.4.0. Addressed in #7431.electron from 8.2.3 to 8.3.0. Addressed in #7236 and #7387.image-size from 0.7.4 to 0.8.3. Addressed in #7236.jimp from 0.9.3 to 0.12.0. Addressed in #7408.return-deep-diff from 0.3.0 to 0.4.0. Addressed in #7292.Cypress now supports the execution of component tests using framework-specific adaptors when setting the `experimentalComponentTesting` configuration
Released 4/28/2020
Features:
experimentalComponentTesting configuration option to true. For more details see the cypress-react-unit-test and cypress-vue-unit-test repos. Addresses #5922 and #6968.Bugfixes:
modifyObstructiveCode is true. Fixes #7138.Misc:
yarn upgrade Cypress instead of yarn add to help prevent installing 2 versions of Cypress when using yarn workspaces. Addressed in #7101.Dependency Updates:
electron from 8.2.0 to 8.2.3. Addressed in #7079.Cypress can now launch on systems where Chromium is installed via Snapcraft. Fixes #7020.
Released 4/20/2020
Bugfixes:
mouseup event's target element is detached before issuing the click event during .click(). Fixes #6923.undefined organization ID during project setup when the default organization is preselected. Fixes #7013.Feature-Policy: document-domain 'none' headers would fail to load in Cypress. Fixes #6480.Misc:
null or undefined. Addresses #6126.TypeScript test files are now supported without using special preprocessors plugins. Addresses #1859.
Released 4/13/2020
Features:
Bugfixes:
This socket has been ended by the other party error when testing applications that make use of WebSockets. Fixes #6458.options object passed into Cypress commands so that they're not mutated and receive the proper options. Fixes #3171.Set-Cookie values could cause requests to fail with a cannot read property key of undefined error. Now, invalid Set-Cookie values will be ignored. Fixes #6890.Misc:
cypress --version, cypress version, cypress cache path, or cypress cache list commands when npm log level is silent or warn. Addresses #2705.cy.task() error message is now more specific about the promise resolution value required. Addresses #6241.Dependency Updates:
http-proxy from 1.17.0 to 1.18.0. Addressed in #6934.Fixed a regression in 4.2.0 where Electron deprecation warnings were printed to stderr in open mode. Fixes #6750.
Released 3/30/2020
Features:
sameSite values via cy.setCookie(). Addresses #2437.sameSite values to the objects yielded from cy.setCookie(), cy.getCookie(), and cy.getCookies(). Users can enable this by setting the experimentalGetCookiesSameSite configuration value to true. In Cypress 5, this will be the default. Addresses #2437.SameSite cookie attribute in cy.request(), cy.visit(), and proxied HTTP requests. Addresses #6757..should()) and fails, it now shows the diff in the stdout. Addresses #6722.Bugfixes:
Parse Error: Invalid header value char or Parse Error: Header overflow. Fixes #5602.foo=bar; Domain=.cypress.test will now be sent during cy.request() to http://local.cypress.test. Fixes #6628.vue-fragment elements no longer throw an unexpected error. Fixes #6745..only that throw an error. Fixes #6744.firefoxGcInterval can now correctly be set to null. Fixes #6825.Misc:
tag property when using Module API. Addresses #6795.Dependency Updates
cypress run and when selecting Electron browser in cypress open from 80.0.3987.141 to 80.0.3987.158. Addressed in #6855.electron from 8.1.1 to 8.2.0. This bumps the bundled Chromium to 80.0.3987.158. Addressed in #6855.@benmalka/foxdriver from 0.2.3 to 0.3.0. Addressed in #6592.@cypress/get-windows-proxy from 1.6.0 to 1.6.1. Addressed in #6823.execa from 1.0.0 to 4.0.0. Addressed in #6013.extract-zip from 1.6.7 to 1.7.0. Addresses #6845 in #6845.firefox-profile from 1.3.0 to 1.3.1. Addressed in #6594.get-port from 5.1.0 to 5.1.1. Addressed in #6854.mime from 1.6.0 to 2.4.4. Addressed in #6764.minimist from 1.2.2 to 1.2.5. Addressed in #6747.squirrelly from 7.7.0 to 7.9.2. Addressed in #6735.Replaced deprecated request with cypress-io/request. Addressed in #6679.
Released 3/16/2020
Features:
--headed mode. Addresses #1767.cypress cache list now prints the last time the cached binary was accessed for each version present. Addresses #6682.Bugfixes:
& or % characters now correctly run instead of erroring. Fixes #4210.cypress open when there was an exception if thrown in an after hook. Fixes #6619.cypress verify no longer incorrectly prints messaging about this being the first time using that Cypress version. Fixes #6607.DEBUG logs are enabled. Fixes #6662.Misc:
CYPRESS_INTERNAL_ENV to a non-production value. Addresses #6436.cypress:launcher, they now print a clearer log during browser detection for easier reading. Addresses #6700..click, .dblclick, and .rightclick command's position argument. Addresses #6341..its() and .invoke(). Addresses #6431.Cypress.dom.isDetached no longer throws a type error in TypeScript projects. Addresses #4408.cy.clearLocalStorage({ log:false }) no longer throws a type error in TypeScript projects. Addresses #6615.Cypress.sinon. Addresses #6720.Dependency Updates
cypress run and when selecting Electron browser in cypress open from 78 to 80. Addressed in #6555.electron from 7.1.13 to 8.1.1. This bumps the bundled Chromium to 80.0.3987.141 and the bundled Node to 12.13.0. Addressed in #6555.@ffmpeg-installer/ffmpeg from 1.0.19 to 1.0.20. Addressed in #6686.minimist from 1.2.0 to 1.2.2. Addressed in #6726.request with cypress-io/request. Addressed in #6679.There is a new cypress info command to see the locally detected browsers and other information related to Cypress. Addresses #4540.
Released 2/28/2020
Features:
cypress info command to see the locally detected browsers and other information related to Cypress. Addresses #4540.baseUrl is running within the warning message during cypress open. Addresses #3284.config argument now includes projectRoot (absolute path to the root of the project) and configFile (absolute path to the configuration file). Addresses #5941.Bugfixes:
xhr.onreadystatechange is accessed. Fixes #5864.cypress install would not complete on Node.js 8.0.0. Fixes #6512 and #6568.cy.clearLocalStorage()" clearlocalstorage now properly accepts the log option to disable logging. Fixes #6342.Misc:
cy.$$ has been updated to distinguish differences between it and Cypress.$. "More info here" $#Cypress-vs-cy Addresses #2027.Dependency Updates
electron from 7.1.10 to 7.1.13. Addressed in #6566.Fixed a bug where Firefox tests could fail to run on macOS if another instance of Firefox was open. Addresses #6380.
Released 2/14/2020
Bugfixes:
@cypress/browserify-preprocessor to 2.1.4, fixing a regression involving non-top-level require()s in tests. Addresses #6403.Cypress.isBrowser. Addresses #6447..should('contain', ...) on a cy.contains() would produce unexpected results. Addresses #6384.Misc:
Released Feb 14, 2020
Bugfixes:
We fixed a bug where tests in Firefox would not open on macOS if another instance of Firefox was open. Fixes #6380 .
We fixed a regression in 4.0.0 where using .should('not.contain', ...) chained after a .contains() would produce unexpected results. Fixes #6384 .
We fixed a regression in 4.0.0 where non-top-level require() s in tests no longer worked. Fixes #6403 .
Re-running a failed workflow in GitHub Actions now properly generates a new Dashboard run. Fixes #6450 .
Misc:
We fixed incorrect type definitions for Cypress.isBrowser . Addresses #6447 .
We improved the error experience when launching a browser fails. Addresses #6432 .
We improved the error experience when visiting the Cypress server outside of a Cypress-launched browser. Addresses #6435 .
Dependency Updates
Fixed a bug where Chromium could not be detected on macOS. Addresses #6358.
Released 2/7/2020
Bugfixes:
Misc:
Mocha, Chai, and Sinon.JS has been upgraded which includes a number of breaking changes and new features. Addresses #2528, #2529, #2866.
Released 2/6/2020
Summary:
Cypress 4.0.0 includes support for Mozilla Firefox browsers (beta support) and Microsoft Edge (Chromium based) browsers which is a big step forward for Cross Browser Testing in Cypress. We've also updated many of the underlying tools behind Cypress that bring new powerful features.
Breaking Changes:
:warning: Please read our Migration Guide which explains the changes in more detail and how to change your code to migrate to Cypress 4.0.
before:browser:launch, we no longer yield the second argument as an array of browser arguments and instead yield an options object with an args property in order to support more advanced browser launch options. Addresses #6306.chromium set as their family field. Addresses #6243.--browser flag no longer accepts canary as its sole argument to run Chrome Canary. You now have to specify chrome:canary to use the Chrome Canary browser. Addresses #6243.cy.writeFile() now yields null instead of the contents written to the file in order to more align with the behavior of fs. Addresses #2466.Features:
Cypress.isBrowser() utility function. Addresses #2023.Cypress.browser object with a new channel property which contains the release channel of the detected browser. Addresses #6243..only to multiple tests or suites will now run all tests with the .only property. Addresses #2828.isFinite assertion is now supported. Addresses #5669.empty assertion is now supported when used against Map objects. Addresses #6072.nested assertion chainer property is now supported. Addresses #3080 and #5004.Bugfixes:
.only when multiple tests or suites contained the same title now run correctly. Fixes #5345..its() command now properly supports 0 as a value for indexes or object keys. Fixes #6216.Documentation Changes:
Cypress.isBrowser() doc.Misc:
config. Addresses #6279.cypress:server:util:process_profiler debug stream. Addresses #6169.Dependency Updates
@benmalka/foxdriver. Addressed in #1359.@cypress/browserify-preprocessor from 1.1.2 to 2.1.1. Addressed in #4308 and #4226.bluebird from 3.5.0 to 3.7.2. Addressed in #4226.cachedir from 1.3.0 to 2.3.0. Addressed in #4208 and #4226.chai from 3.5.0 to 4.2.0. Addressed in #2862 and #4226.chai-as-promised from 6.0.0 to 7.1.1. Addressed in #4226.chalk from 2.4.0 to 3.0.0. Addressed in #4226.commander from 2.15.1 to 4.0.1. Addressed in #4208 and #4226.debug from 2.15.1 to 4.0.1. Addressed in #4226.execa from 0.10.0 to 3.3.0. Addressed in #4226.firefox-profiler. Addressed in #1359.foxdriver. Addressed in #1359.fs-extra from 5.0.0 to 8.1.0. Addressed in #4226.getos from 3.1.1 to 3.1.4. Addressed in #4226.is-ci from 1.2.1 to 2.0.0. Addressed in #4226.mocha from 2.5.3 to 7.0.1. Addressed in #2703 and #4226.listr from 0.12.0 to 0.14.3. Addressed in #4226.log-symbols from 2.2.0 to 3.0.0. Addressed in #4226.marionette-client. Addressed in #1359.ramda from 0.24.1 to 0.26.1. Addressed in #4226.sinon from 3.2.0 to 8.1.1. Addressed in #2881 and #4226.strip-ansi from 3.0.1 to 6.0.0. Addressed in #1359.systeminformation. Addressed in #1359.support-colors from 5.5.0 to 7.1.0. Addressed in #4208 and #4226.untildify from 3.0.3 to 4.0.0. Addressed in #4226.We fixed an error during cypress run indicating could not find CRI target when Cypress was unable to find the tab to control. Fixes #6053.
Released 1/24/2020
Bugfixes:
cypress run indicating could not find CRI target when Cypress was unable to find the tab to control. Fixes #6053.cypress verify will no longer error on some systems when -screen is not defined. Fixes #6184.cy.type({ force: true }) to no longer forcibly type characters for readonly inputs. Fixes #6116.file property. Fixes #1495.Misc:
cy.get() are now truncated at 50 lines the Command Log instead of the 1 line. Addresses #6145.Dependency Updates:
We fixed a regression in 3.8.0 on Linux when unzip is not installed where the progress of cypress install would show up to 200%. Fixes #5967
Released 01/10/2020
Bugfixes:
unzip is not installed where the progress of cypress install would show up to 200%. Fixes #5967transform and height or width are now properly seen as visible during visiblity checks. Addresses #5974.transform-style: preserve-3d. Fixes #5682.overflow: hidden are now properly calculated as invisible during visibility checks. Fixes #6093..type() on number inputs to type non-number characters would not type the correct value. Fixes #6055.Misc:
cy.log() are now truncated at 50 lines the Command Log instead of the 1 line. Addresses #5625.CI_JOB_NAME environment variable. Addressed in #6111.removeListener and removeAllListeners have been added to Cypress and cy. Addresses #5228.runUrl property returned from cypress.run() has been added. Addresses #6087.Dependency Updates:
Released Jan 10, 2020
Bugfixes:
We fixed a regression in 3.8.0 on Linux when unzip is not installed where the progress of cypress install would show up to 200%. Fixes #5967 .
We fixed a regression in 3.7.0 that would prevent .type() from typing valid characters after invalid characters were typed in type="number" inputs. Fixes #6055 .
Child elements of an element that uses both transform and height or width are now properly seen as visible during visibility checks. Addresses #5974 .
We now properly check backface visibility when the parents of a target element have the CSS style transform-style: preserve-3d . Fixes #5682 .
DOM elements with a width or height of 0 and overflow: hidden are now properly calculated as invisible during visibility checks. Fixes #6093 .
.should() and .and() commands with function arguments can now be chained with multiple assertions without throwing an error. Fixes #4981 .
Misc:
We replaced the browser icons in the Test Runner with more official browser brand icons. Addresses #5921 .
Messages from cy.log() are now truncated at 50 lines the Command Log instead of the 1 line. Addresses #5625 .
We now capture GitLab CI's CI_JOB_NAME environment variable. Addressed in #6111 .
Types for event emitters removeListener and removeAllListeners have been added to Cypress and cy . Addresses #5228 .
Types for the runUrl property returned from cypress.run() has been added. Addresses #6087 .
We're continuing to make progress in converting our codebase from CoffeeScript to JavaScript. Addresses #2690 in #5947 and #6075 .
Dependency Updates:
Upgraded ansi_up from 4.0.3 to 4.0.4 . Addressed in #6074 .
Upgraded electron from 7.1.4 to 7.1.7 . Addressed in #6085 .
We fixed a bug where `cypress run --headless` would not run Chrome-family browsers headlessly. Fixes #5949.
Released 12/26/2019
Bugfixes:
cypress run --headless would not run Chrome-family browsers headlessly. Fixes #5949.cy.setCookie(), cy.clearCookie(), and cy.getCookie() has been removed. Fixes #5642..type() on number inputs to type non-number characters or the {enter} special character would not type the correct value. Fixes #5968 and #5997.Misc:
cy.location() have been improved. Addresses #5574.Dependency Updates:
get-port from 5.0.0 to 5.1.0. Addressed in #6004.chrome-remote-interface from 0.28.0 to 0.28.1. Addressed in #6008.which from 1.3.1 to 2.0.2. Addressed in #6017.ansi_up from 1.3.0 to 4.0.3. Addressed in #4331.jimp from 0.6.4 to 0.9.3. Addressed in #4331.Chrome can now be run in headless mode by using cypress run --headless --browser chrome. Addresses #832.
Released 12/12/2019
Features:
cypress run --headless --browser chrome. Addresses #832.--tag argument to be used to identify separate runs. Any tags assigned will be shown on the run in the Cypress Dashboard. Addresses #2561..its() and .invoke() now accept an options object to allow changing logging options. Addresses #1450.unzip binary during cypress install before trying the slower, Node.js-based unzipping method. Addresses #3803.Bugfixes:
--config or --env command line flags. Fixes #5466.Cookie header during "cy.visit() visit or cy.request() would be overwritten by the Cookie header generated from the browser's cookie store. Fixes #5894.cy.getCookie() would incorrectly filter cookies by their domain, leading to unexpected results. Fixes #5656..type({ force: true }) on hidden inputs would not type the correct characters. Fixes #5835..type() was not respecting previous selections if the current value of the input was the same as the key. This also fixed an where .type() would not respect previous selections in non-selectionRange inputs (like email or number inputs). Fixes #5703.scale(0) or rotateY(90deg) as not visible. Fixes #723.env configuration option displays properly within the settings panel. Previously, setting env options would incorrectly render "undefined" as the value. Fixes #5859.Misc:
0 for cy.viewport() Addresses #5871 and #5892.config.browser that are not of the Chrome family. It also supports showing the Firefox logo (in preparation for Firefox browser support). Fixes #5745.cy.request will now automatically encode special characters in the request URL, including Unicode. Addresses #5274.ELECTRON_EXTRA_LAUNCH_ARGS. Addresses #5807.Dependency Updates:
Cypress now includes the full list of browsers found and their properties within the Cypress configuration. This means that the browsers array is also
Released 11/27/2019
Features:
browsers array is also editable within plugins by accessing config.browsers via the Configuration API. The currently available browsers are also displayed within the configuration panel under Settings in the Test Runner. Addresses #5067.Bugfixes:
cy.visit that changes superdomain would incorrectly clear cookies of other domains. Fixes #5756.cy.visit or in a cy.request with a custom Domain that is not a subdomain of the current domain would fail to set. Fixes #5656.cy.type to send duplicate modifier keys. Fixes #5622.followRedirect: false would fail if a Set-Cookie header was present in the response. Fixes #5654.window is no longer undefined within the application under test when called within a setTimeout during strict mode. Fixes #5707.--ci-build-id and group flag arguments during cypress run. Fixes #5686.have.all.keys assertion now correctly display. Fixes #753.cy.visit() on a cleverapp.io domain. Fixes #5722.null would cause an error. Fixes #472.Misc:
position: fixed and is being overflowed over. Addresses #1379.cy.visits that cause a superdomain change will now result in 2 requests to the origin server. This should not affect tests, as tests will still re-run on a superdomain change. This is a side-effect of the fix for #5756.Dependency Updates:
parse-domain from 2.0.0 to 2.3.4. Addressed in #5726.Released Nov 27, 2019
Features:
Cypress now includes the full list of browsers found and their properties within the Cypress configuration. This means that the browsers array is also editable within plugins by accessing config.browsers via the Configuration API . The currently available browsers are also displayed within the configuration panel under Settings in the Test Runner. Addresses #5067 .
Environment variables within GitHub Actions are now detected and passed to the Dashboard to display the proper git information for recorded runs. Addresses #5609 .
.its() and .invoke() now support a Number for its propertyName and functionName arguments respectively. Addresses #5754 .
Bugfixes:
We fixed a regression in 3.5.0 where a cy.visit() that changes superdomain would incorrectly clear cookies of other domains. Fixes #5756 .
We fixed a regression in 3.5.0 where cookies set in a redirect on a cy.visit() or in a cy.request with a custom Domain that is not a subdomain of the current domain would fail to set. Fixes #5656 .
We fixed a regression in 3.5.0 which caused .type() to send duplicate modifier keys. Fixes #5622 .
We fixed a regression in 3.6.1 where cy.request() with followRedirect: false would fail if a Set-Cookie header was present in the response. Fixes #5654 .
The context of window is no longer undefined within the application under test when called within a setTimeout during strict mode. Fixes #5707 .
Cypress now captures the SHA of builds generated through Travis CI during pull requests. This should resolve issues with Cypress status checks sometimes not running within GitHub Integration . Fixes #5728 .
Cypress now automatically strips double quotes from --ci-build-id and group flag arguments during cypress run . Fixes #5686 .
Assertions printed in the Command Log now correctly identify integers from string integers. Fixes #25 .
Empty spaces are now accurately reflected in the Command Log within assertions. Fixes #1360 .
Keys printed in the Command Log when using the have.all.keys assertion now correctly display. Fixes #753 .
We fixed an issue where Cypress would throw an error when using cy.visit() on a cleverapp.io domain. Fixes #5722 .
Fixed a bug where fixtures consisting only of null would cause an error. Fixes #472 .
Fixed a bug where, if the Test Runner child process is killed with a signal and does not exit normally, the npm CLI process would not exit with an error. Fixes #5808 .
Misc:
Added a new, more specific error message when an item is not visible because it has position: fixed and is being overflowed over. Addresses #1379 .
cy.visit s that cause a superdomain change will now result in 2 requests to the origin server. This should not affect tests, as tests will still re-run on a superdomain change. This is a side-effect of the fix for #5756 .
The configuration object returned from the plugins file is now validated and will throw a helpful error message when invalid. Addresses #5712 .
The configuration panel under Settings in the Test Runner now has a white background for better readability. Also each configuration option with nested properties is now collapsible. Addressed in #5068 .
Documentation Changes:
Updated the its() and invoke() doc to allow for arguments of type Number for their first argument.
Documented how to pass in a custom list of browsers using config.browsers .
Dependency Updates:
The Electron browser no longer hangs when testing applications that have a prompt in a beforeunload handler. Fixes #2118.
Released 11/08/2019
Bugfixes:
beforeunload handler. Fixes #2118.cy.setCookie() with the same options Object, Cypress now correctly sets the new cookie instead of the one passed into a previous cy.setCookie(). Fixes #2701.cy.clearCookie() would not act as expected when using certain baseUrls. Fixes #5453.Failed to parse or set cookie named "xxx" when loading certain websites. Fixes #4990.cy.visit() to an HTTPS URL using the default port, 443. Fixes #5367.TypeError: Cannot read property 'length' of null on some network requests. Fixes #5585..click(). Fixes #5635.click event during action commands. Fixes #5578..type() to not be typed. Fixes #5622.backface-visibility: hidden; are now accounted for when asserting on the elemtent's visibility. Fixes #2985.cannot read property 'replace' of undefined if the error's stack was undefined. Fixes #1669.Misc:
.click() and .type() commands within the console. Addresses #5553.Promise.defer appearing in stderr when running with video recording enabled. Addresses #5611..rightclick() and .dblclick() have been updated to correctly reflect their accepted options. Addresses #5617.`testFiles` now also accepts an Array of glob patterns when specifying what test files to load in configuration. Addresses #5401.
Released 10/31/2019
Features:
testFiles now also accepts an Array of glob patterns when specifying what test files to load in configuration. Addresses #5401.Bugfixes:
cy.route() was limited to 8kb causing requests to fail with a 431 HTTP error. Fixes #5431.uncaught:exception handler, and thus could not caught and ignored. These errors will also now correctly indicate that they came from application code. Fixes #987.cypress verify when running as a non-root user on a non-Windows machine. We now always set the --no-sandbox flag when verifying in Electron, even when running as a non-root user. Fixes #5434.cy.visit() or cy.request(). Fixes #5432.Cypress.env(). Fixes #5435..click() or .type() inside of an iframe element. Fixes #5449. Fixes #5435.position:fixed. Fixes #5430.click events to not be sent to the correct elements during .click(). Fixes #5459..type() to properly respect focus selection changes during typing. Fixes #5456..type(). Fixes #5439..type() to input elements with type date, time, and datetime-local so that it now behaves as it did prior to 3.5.0. Fixes #5476.Misc:
{multiple: true} in the Command Log or the console during cy.dblclick(). Addresses #5406.Dependency Updates
We now record video during cypress run in Chrome, Chromium, and Canary browsers. This requires passing the name or path of the Chrome browser to the `
Released 10/23/2019
Features:
cypress run in Chrome, Chromium, and Canary browsers. This requires passing the name or path of the Chrome browser to the --browser flag. Addresses #4608..rightclick() command to right click on DOM elements. Addresses #53.--config-file argument to specify a different file to be used for Cypress configuration. You can also pass false to the --config-file to not use any configuration file. Addresses #1369.nodeVersion to system in your configuration. This Node version will be used to build files in your integrationFolder and "supportFile" configuration#Folders-Files and also be used to execute code in your "pluginsFile" configuration#Folders-Files. If not set, Cypress will continue to use the Node version bundled with Cypress. Addresses #4432..dblclick() dblclick now accepts position, x, and y arguments. Addresses #116..dblclick() dblclick now accepts force and multiple in its options. Addresses #116..screenshot() now accepts a padding argument when screenshotting elements that will alter the dimensions of the screenshot of the element. Addresses #4440.cy.visit() now accepts a qs option representing an object of query paramaters to be used in the URL. Addresses #5034.cy.viewport() now allows for viewport sizes up to 4,000 pixels. Addresses #5181.cy.viewport() accepts new size presets for iphone-xr, iphone-x, samsung-s10 and samsung-note9. Addresses #4967.~ to CYPRESS_CACHE_FOLDER will automatically resolve to the user's home directory. Addresses #5386.Bugfixes:
.dblclick() dblclick and .click() now fire all appropriate mouse events including mouseover, mousemove, mouseout, pointerdown, pointerup, and pointermove. Fixes #1016, #1847, #2045, #2521, #2768, #2928, #2957, and #3224..dblclick() dblclick to follow the same actionability checks as .click(). Fixes #3798..click() are now correct if the element being clicked is within an iframe. Fixes #4347..type() to be used on any DOM element. The element will receive all of the type events. Fixes #2166 and #3661..type(), Cypress now continues typing into the newly focused element. Fixes #2240.maxLength when using .type() on an input. Fixes #4587.datetime-local inputs would not have their value updated during .type(). Fixes #2613..type() now allows you to type - into number inputs with text selection. Fixes #4767.input event when using .type() typing {enter} inserts a newline. Fixes #4870.{shift} modifier keys are typed in .type(). Fixes #5424.code property during keyboard events triggered during .type(). Fixes #3722screenX and screenY properties to events triggered using .trigger(). Fixes #3187.cy.visit() to IP addresses over HTTPS, leading to ERR_SSL_VERSION_OR_CIPHER_MISMATCH errors. Fixes #771.cy.visit() and cy.request() with a "handshake failed" error. Fixes #4394.cy.visit() that was introduced in 3.3.0. Fixes #4368.Cypress.env() now escapes <script> tags in the configuration file. Fixes #4952.content-type application/vnd.api+json to JSON. Fixes #5165.cy.route() that exceed 80kb in size no longer fail with an ERR_EMPTY_RESPONSE error. Fixes #76.dest.end errors on Windows machines. Fixes #2181.onFocus event no longer incorrectly fires on hidden elements. This fixes an issue introduced in 3.3.2. Fixes #4898..click() on inputs or textareas that are readonly. This fixes an issue introduced in 3.4.1. Fixes #4874."port" option should be a number or string error when receiving an erroneous HTTP CONNECT. Fixes #3250.done() callback is not called within the commandTimeout. Fixes #1075, #2478, #3349, and #4790.ENOTCONN error at the end of a test run when using Node >12.11.0 on Windows OS. Fixes #5241.. in Chrome 77. Fixes #5142 and #5206..js file containing Unicode transferred using Content-Encoding: gzip that could cause the JavaScript file to become corrupted. Fixes #1746.node_modules/cypress folder. Fixes #2364.Misc:
Could not start Xvfb was being thrown because Xvfb could not start within the allowed time. Addresses #5110.cypress run from the binary directly (not from an npm module) since this is not its intended use. Addresses #1573.cy.visit('file://...) to explain that this url format is not supported and suggest visiting a relative HTML file. Addresses #4452.CYPRESS_ENV environment variable will now throw an error. Addresses #1621.browser argument of the Browser Launch API explaining that a String is expected instead. Addresses #4966.name or value is supplied to cy.setCookie(), matching the RFC 6265 compliant validation of cookie names and values. Addresses #5206.cy.get() now throws an error explaining that an options Object is expected. Addresses #2953.cy.screenshot() that would result in a screenshot with 0 width or height. Addresses #5149.cypress run no longer truncates text such a filenames and instead wraps the text to fit within the width of the terminal. Addresses #4977.cy.request() errors. Addresses #3145.localhost to be in NO_PROXY. To make Cypress send traffic for localhost through the proxy, you will now have to pass <-loopback> in NO_PROXY. Addresses #4780.cy.visit() to more closely match the browser's behavior when setting cookies, particularly when using fetch with cookies. Addresses #4433.--disable-backgrounding-occluded-window, --disable-breakpad, --disable-ipc-flooding-protection, --password-store=basic, and --use-mock-keychain. Addresses #5132 and #3633.Cypress.Commands.overwrite() to not allow an options object as an argument. Addresses #5341.failures and message types when a run fails using the Module API. Addresses #5335.Documentation Changes:
.rightclick() doc..dblclick() doc to include new position, x, and y arguments plus force and multiple options.--config-file argument to Command Line and Module API doc.nodeVersion argument to Configuration doc and mentioned its uses in the Plugins Guide and Writing a Plugin doc.cypress.json file since this is not configurable via a --config-file argument.qs option to cy.visit() with examples.padding option to cy.screenshot() with examples.cy.viewport() doc to have a max viewport size of 4000.cy.viewport() doc.cypress-fiddle plugin used for playing around with small test cases.url in the cy.route() doc.file:// prefix is not supported in the cy.visit() doc.<-loopback> in NO_PROXY is necessary in the Proxy Configuration doc.Dependency Updates
cypress run and when selecting Electron browser in cypress open from 61 to 73. Addressed in #4720.electron from 2.0.18 to 5.0.10. Addressed in #4720.node from 8.9.3 to 12.0.0. Addressed in #4720.jquery from 2.2.4 to 3.1.1. Addressed in #1229.sanitize-filename from 1.6.1 to 1.6.3. Addressed in #5216.@cypress/get-windows-proxy from 1.5.4 to 1.6.0. Addressed in #5108.We upgraded the lodash dependency to fix a security vulnerability warning. Fixes #4699, #4730, #4743.
Released 7/29/2019
Dashboard Features:
Bugfixes:
and chainable getter. Fixes #4833.include and includes assertion chainers now correctly work the same as contain and contains assertion chainers. Fixes #4833.cy.type() now factors in the readonly property of <input /> elements, and will wait for this property to be false before attempting to type. Fixes #1246.top and location in your application code are no longer modified when modifyObstructiveCode is true. Fixes #4794.mocha-teamcity-reporter dependency so that it no longer errors in certain situations when trying to access duration on tests. Fixes #4654.lodash dependency to fix a security vulnerability warning. Fixes #4699, #4730, #4743.Misc:
react, mobx, etc. This should help to prevent conflicts with Developer Tools extensions and increase performance by reducing memory, heap allocation, and overall JS bundle size. Addresses #4844.npm install. Addresses #4719.npm package. Addresses #1573.cy.location() and .should(). Addresses #3684 and #4715.cy.contains(content, options) syntax have been added. Addresses #4727.cy.once() have been added. Addressed in #4788.{ parseSpecialCharSequences: false } option to cy.type() that disables parsing the special character sequences found between the {} characters. This will now type what you've provided literally without any special parsing. Fixes #4287.Documentation Changes:
Dependency Updates
@ffmpeg-installer/ffmpeg from 1.0.17 to 1.0.19. Addressed in #4792.browserify from 13.3.0 to 16.3.0. Addressed in #4751, #4825 and #4826.data-uri-to-buffer from 1.2.0 to 2.0.1. Addressed in #4622.duplexify from 4.0.0 to 4.1.1. Addressed in #4853.graceful-fs from 4.1.15 to 4.2.0. Addressed in #4818.lodash from 4.17.11 to 4.17.15. Addressed in #4684, #4709, #4784.mocha-junit-reporter from 1.23.0 to 1.23.1. Addressed in #4785.p-queue from 1.2.0 to 6.1.0. Addressed in #4750.semver from 6.0.0 to 6.3.0. Addressed in #4797.Users can now log in to the Test Runner using the browser installed on their system. Fixes #3583, #4337, and #1162.
Released 7/9/2019
User Authentication Changes:
Continuous Integration Support:
Bugfixes:
contain.text, contain.html, and contain.value assertions now support partial matching in all scenarios to match expected behavior. Fixes #1969.Misc:
cypress download that checks the checksum and filesize. This will fix issues with Cypress downloads being corrupted in transit. Fixes #812 and #3515.cy.route(). Fixes #2372.cy.click() fails because an element has the CSS pointer-events: none. Fixes #3164.cy.server() for the onAnyRequest, onAnyResponse, and onAnyAbort callback options. Fixes #3992.Documentation Changes:
cy.get()'s optional withinSubject argument. <!-- docs PR 1722 -->Dependency Updates:
string-to-stream since it was no longer being used. Addressed in #4619.@cypress/commit-info from 2.1.3 to 2.1.4. Addressed in #4597.@cypress/react-tooltip from 0.4.0 to 0.5.0. Addressed in #4610.errorhandler from 1.5.0 to 1.5.1. Addressed in #4618.fs-extra from 8.0.1 to 8.1.0. Addressed in #4620.request-progress from 0.4.0 to 3.0.0. Addressed in #4584.Released Jul 09, 2019
Features:
Users can now log in to the Test Runner through the browser installed on their system. This also allows for login via GitHub with U2F keys. Addresses #3583 , #4337 , and #1162 .
Google or SSO (if configured) login is now supported in the Test Runner. Addresses #3519 .
Bugfixes:
Cypress now properly supports partial matching of string values for assertions contain.text , contain.html , and contain.value . Fixes #1969 .
A form is now properly submitted when using .type('{enter}') on a form containing no buttons and only one input that allows implicit submission. Fixes #4495 .
Extra whitespace and quotations are now stripped from the CYPRESS_INSTALL_BINARY environment variable to help prevent some unexpected results when set in Windows. Fixes #4506 .
Electron rendering warnings are no longer printed to console output. Fixes #4288 .
Misc:
We now expose a downloadable binary for each commit made into the develop branch of the cypress repository so that pre-released versions can be installed. See this commit for an example. Addresses #4525 .
There are now a series of checks that are run during download of Cypress to verify that the zip file downloaded is the correct file. Addresses #812 and #3515 .
A warning now displays for Windows' users who have Group Policy settings that may interfere with usage of Cypress. Addresses #4391 .
There's a new warning when mouse interactions fail displaying that it failed due to the element having CSS pointer-events: none . Addresses #3164 .
If a URL is passed to cy.route() containing percent-encoded characters, we now display a warning explaining that cy.route() expects a decoded URL. Addresses #2372 .
Environment variables for Semaphore 2.0 are now captured when recording tests to the Dashboard. Fixes #4671 .
We now capture environment variables set from Concourse CI when recording tests to the Dashboard. Fixes #4376 .
We replaced capturing environment variables from SnapCI (which is no longer available) to instead capture ones set from GoCD when recording tests to the Dashboard. Fixes #2680 .
The JSON schema file used for intelligent code completion for the Cypress configuration file has been updated to match our documentation.
Documentation Changes:
New error message added about policy settings to our Error Messages doc. Addressed in #1567 .
Real World example tests were added to Example Applications doc. Addressed in #1567 .
More content was added to our Code Coverage doc.
Dependency Updates
Removed string-to-stream since it was no longer being used. Addressed in #4619 .
Upgraded @cypress/commit-info from 2.1.3 to 2.1.4 . Addressed in #4597 .
Upgraded @cypress/react-tooltip from 0.4.0 to 0.5.0 . Addressed in #4610 .
Upgraded errorhandler from 1.5.0 to 1.5.1 . Addressed in #4618 .
Upgraded fs-extra from 8.0.1 to 8.1.0 . Addressed in #4620 .
Upgraded request-progress from 0.4.0 to 3.0.0 . Addressed in #4584 .
We also updated and removed some dependencies used for development.
We fixed a regression introduced in 3.3.0 that was causing the Test Runner to do extremely unnecessary re-renders of the Command Log on any command ch
Released 6/27/2019
Performance Improvements:
3.3.0 or above. Fixes #4411 and #4313.cypress open. Fixes #2366. Thanks @"CoryDanielson"!numTestsKeptInMemory was set to 0. We now no longer record the snapshots at all when numTestsKeptInMemory is set to 0. This should slightly improve the performance of running tests with this setting. Fixes #4104 and #4164.Bugfixes:
cypress run. This will fix some runs that were crashing with an ENOSPC error. Fixes #4283.blur and focus events in situations where the browser has lost focus. Fixes #4039, #1176, and #1486..type() is already in focus, Cypress no longer attempts to click on the DOM element. This allows you to call .focus() on elements that are focusable, but not necessarily clickable and type into them using .type(). Fixes #3001 and #4420.overflow: hidden that flow outside of its parent are now properly considered hidden. #4161position: absolute which is itself inside of a parent element with overflow: hidden are now properly considered visible. Fixes #4395 and #755.<option> and <optgroup> elements are now properly considered visible if it is contained within a visible <select>. Fixes #4473.<body> and <html> elements are now properly always considered visible. Fixes #4475.<td> and <tr> elements with CSS visibility: collapse are now properly considered hidden. Fixes #4476..type('{enter}') on a form containing a button of type reset. Fixes #3909.content-type is null, undefined or cannot be determined during cy.visit(), we now look at the content of the site and evaluate whether it looks like HTML. If it does look like HTML we no longer error and continue as if it the site's content-type is text/html. #1727 #773 #3101.auth header to any URLs that match the CORS origin of the original auth header. We now correctly only send the auth headers when there is an exact match on the protection space. Fixes #4267.cy.visit() or cy.request() are now automatically retried on ENOTFOUND errors. Fixes #4424 and #1755.body paramater passed to cy.request() contains a circular reference. Fixed in #4407.ignoreTestFiles configuration was being filtered out when passed via a command line flag, so in effect being ignored. Fixes #1696.NO_PROXY is now respected for HTTPS urls, as it should be. Fixes #4303.cy.window().screenshot(), cy.window().scrollTo() or cy.window().trigger() in an application with multiple iframes. Fixes #4396.cypress open. This was caused by incorrectly routing requests for Cypress's internal server on localhost through the user's proxy. Fixes #4410.RangeError: Maximum call stack size exceeded. Fixes #1958 and #4346.window.performance.getEntriesByType would return undefined instead of an array within application code when using cy.clock(). Fixes #3625.ignoreTestFiles no longer causes an error to throw. Fixes #4312.cy.writeFile() no longer errors in TypeScript files when passing an options object as its third argument. Fixes #4461.cy.stub() no longer errors in TypeScript files when evaluating returns. Fixes #4302.Misc:
cypress run to warn when a project is nearing its organization's usage limit. They also clearly explain any consequences of going over a plan's usage limit. Addresses #4530.https://api.cypress.io by setting CYPRESS_CRASH_REPORTS=0 in your system environment variables. #4386Cypress.env() and the debug logs. Addresses #4501.projectId in now displayed in the configuration in the Test Runner settings like all other configuration values. Fixes #4500.Documentation Changes:
Dependency Updates
electron-positioner since it was no longer being used. Addressed in #4502.chokidar from 1.7.0 to 3.0.1. Addressed in #4487.cookie from 0.3.1 to 0.4.0. Addressed in #4329.dependency-tree from 6.5.0 to 7.0.2. Addressed in #4364.fs-extra from 0.30.0 to 8.0.1. Upgraded in CLI package only to 5.0.0. Addressed in #4418, #4419, #4422, #4437, #4555, #4559, #4571, #4581.mocha-junit-reporter from 1.18.0 to 1.23.0. Addressed in #4417.pluralize from 7.0.0 to 8.0.0. Addressed in #4438.shell-env from 0.3.0 to 3.0.0. Addressed in #4466, #4467, and #4471.winston from 0.9.0 to 2.4.4. Addressed in #4538.We've written a blog post about the 300% increase in proxy performance delivered in 3.3.0.
Released 5/23/2019
News:
Bugfixes:
cypress run. This bug would exhibit itself when verifying and running Cypress the first time after installation. You may have seen these logs when running in CI. Fixes #4255.multipart/form-data uploads to hang. Fixes #4240, #4252, and #4253.have.focus, not.have.focus, be.focused and not.be.focused assertions were not working. Fixes #4265.. character. Fixes #3512.{log: false} to a Cypress command that failed. Fixes #3847.Misc:
Xvfb in error messages. Addressed in #4262.Documentation Changes:
Cypress now automatically reads from your system's HTTP_PROXY, HTTPS_PROXY, and NO_PROXY environment variables and proxies traffic accordingly through
Released 5/17/2019
Features:
HTTP_PROXY, HTTPS_PROXY, and NO_PROXY environment variables and proxies traffic accordingly through Cypress based on these values. This includes network traffic within your application under test, when downloading Cypress, and when accessing 'Runs' within the Test Runner. Please read our new Proxy Configuration doc to understand more about proxy configuration in Cypress. Fixes #672, #733, #939, #1039, #1459, #1469, #1470, #1541, #1608, #2295, #3855, #3865, #1401 and #3857.have.focus, not.have.focus, be.focused and not.be.focused assertions have been added. Addresses #97.cy.visit() or cy.request() are now automatically retried under the hood when the request fails. This more closely reflects Chrome's default behavior on requests. Addresses #4013, #898 and #1013.cy.visit() and cy.request() now support new options retryOnStatusCodeFailure and retryOnNetworkFailure to allow changing Cypress's automatic request retry on status codes and network errors. Addresses #4013, #898 and #1013..type() now supports the special character sequences {insert}, {pageup}, and {pagedown}. Addresses #3845..wait() when they match an alias multiple times. Addresses #477.cy.visit() command now displays its resolved options arguments. Addresses #3721.xhr.abort() and the browser canceling the request due to page navigation. Addresses #3973.cypress run now supports scripts of type="module". Fixes #3696.Cypress.isCy() method to check if a value is a valid instance of cy or a cy chainable. Fixes #3822.Bugfixes:
NODE_OPTIONS environment variables set, Cypress no longer issues an incorrect 0 exit code. #1676.its() to no longer retry when it yields undefined. #3837cy.fixture() to throw a EISDIR error if a directory had the same name as a file within that same directory. Fixes #3739.user-agent headers sent as arguments to cy.request() and cy.visit() are now properly sent. Fixes #3873 and #3719.cypress verify, we now kill the verification process after 10 seconds and print the error message. This should prevent some situations where Cypress would hang during installation or verification and never exit. Fixes #819.cypress verify and cypress run commands by starting its own Xvfb server on Linux if the first attempt fails due to possible DISPLAY misconfiguration. Addresses #4034.hasOwnProperty) into .type(). Fixes #3423.form option to true if the Content-Type header equals application/x-www-form-urlencoded and json is not already set by a user. This fixes a situation where Cypress would try to parse the body as a string, resulting in a confusing error message. Fixes #2923.cy.contains() now correctly handles comma delimited arguments passed to the selector argument. Fixes #2407.--browser argument. Fixes #3979Cypress.log() now throws an error when not properly passed an object as its argument. Addresses #3658.Cypress.log() no longer throws when called before any other Cypress commands. Fixes #3658.Misc:
ffmpeg builds with Windows builds, resulting in a 35-40% reduction in zipped size and a 36-43% reduction in unzipped size of download. Addresses #3888.Connection: keep-alive header so that the connection will be reused if possible. Addresses #3857.timeout option in cy.hash(). Fixes #3844.match assertion so that it now only accepts RegExp type arguments. Fixes #2578..trigger() type definition now expects its options to be ObjectLike. Addressed in #3809.cy.clock() type definition now allows for type Date. Fixed in #4106.Cypress.LocalStorage.clear method. Fixes #4070.Cypress.isCy() method. Fixes #3822.cy.visit() options. Fixes #3989.Documentation Changes:
{insert}, {pageup}, and {pagedown} as supported special character sequences to .type(). Addressed in #1567.focus assertion to Assertions doc. Addresses #1372.retryOnStatusCodeFailure and retryOnNetworkFailure to cy.visit() and cy.request()..its() and .invoke() docs to better explain how default assertions are handled. Addresses #1643.Dependency Updates
commit-info from 2.1.2 to 2.1.2. Addressed in #4045data-uri-to-buffer from 0.0.4 to 1.2.0. Addresses #4152.electron from 1.8.2 to 2.0.18. Addresses #4000.electron-packager from 9.1.0 to 13.1.1. Addresses #4155.express-handlebars from 3.0.0 to 3.0.2. Addressed in #4086.find-process from 1.2.1 to 1.4.1. Addressed in #4087.getos from 2.8.4 to 3.1.1. Addressed in #4222.http-status-codes from 1.3.0 to 1.3.2. Addressed in #3949.jimp from 0.6.0 to 0.6.4. Addressed in #4097.method-override. Addressed in #4209.node from 8.2.1 to 8.9.3. Addressed in #4001.parse-domain from 2.1.7 to 2.0.0 to avoid a regression released in parse-domain. Addresses #3717.pluralize from 3.1.0 to 7.0.0. Addressed in #4205 and #4206.semver from 5.6.0 to 5.7.0. Addressed in #4112.send from 0.16.2 to 0.17.0. Addressed in #4134.supports-color from 5.5.0 to 6.1.0. Addressed in #4150.tar-fs. Addressed in #4148.term-size from 1.2.0 to 2.0.0. Addressed in #4148.tmp from 0.0.33 to 0.1.0. Addressed in #4111.trash from 4.3.0 to 5.2.0. Addressed in #4140.url-parse from 1.4.4 to 1.4.7. Addressed in #4110.widest-line from 2.0.1 to 3.1.0. Addressed in #4139.`cy.visit()` has been expanded to allow options url, method, body, and headers. This allows `cy.visit()` to be called with a POST method or with heade
Released 3/15/2019
Features:
cy.visit() has been expanded to allow options url, method, body, and headers. This allows cy.visit() to be called with a POST method or with headers like Accept-Language or Authorization. Fixes #1500, #1904 and #908.cy.request() now allows any valid HTTP method to be used including TRACE, COPY, LOCK, MKCOL, MOVE, PURGE, PROPFIND, PROPPATCH, UNLOCK, REPORT, MKACTIVITY, CHECKOUT, MERGE, M-SEARCH, NOTIFY, SUBSCRIBE, UNSUBSCRIBE, SEARCH, and CONNECT. Addresses #1302--browser argument of the Command Line and the browser argument of the Module API have been updated to allow passing a <path>. Addresses #1026.cy.type() now accepts {home} and {end} special character sequences to move the cursor to the start or end of a line. Addresses #2033.caljajdfkjjjdehjdoimjkkakekklcck. This allows Cypress to be added to extension whitelists for those working under corporate policies that prohibit extensions. Addresses #3673, #1239 and #2494.Bugfixes:
item.first is not a function. Fixes #2927.browser installations. Fixes #3183 and #3218.. in their filename while not specifying the file extension. We are also displaying a clearer warning when a fixture file cannot be found. Fixes #1402.@types have been moved from Cypress dependencies into devDependencies. This should fix situations where user's type dependencies were conflicting with Cypress's third party type definitions. Fixes #3371 and #1227.Cypress.config('baseUrl') has been updated to no longer strip singular / at the end of urls and instead only strip instances of multiple /. Fixes #3540.cy.wrap() no longer throws an error when a non-jQuery wrapped DOM element is passed in as an argument. Fixes #3549.setTimeout or setInterval were not properly passed on to the target function. Fixes #3592..filter() has been updated so that when called with a function, the options are now properly read. Fixes #3315.(). #3267.its() returns undefined it no longer errors. It will now follow the same logic as all other commands and only fail when directly by a .should() command with an assertion that is not met. Fixes #1531.cy.wrap() is followed directly by a .should() command, cy.wrap() will now retry when its argument evaluates to undefined until it meets the requirements of the assertion or the cy.wrap() command times out. Fixes #3241.Misc:
--spec that is not surrounded by quotes "" recommending that the argument instead be surrounded by quotes. In some cases, not providing quotes can cause the arguments to be read in a way that is likely not its intended use. Addresses #3318 and #2298.data attributes. The examples also have some small typo fixes. Fixes #502. Addressed in #3272, #3287, and #3700.loopback. Addresses #3712.yarn update instructions alongside npm. Addresses #2871.cypress run. Addresses #1449.Cypress.on to listen for window.alert events to allow for Sinon.stub. Fixes #3451..trigger options. Addressed in #3588.Documentation Changes:
--browser and browser args to accept path #1419{home} and {end} character sequences to cy.type() doc. Also wrote better description of what {downarrow} and {uparrow} character sequences actually do. #1347cy.request() doc.Dependency Updates
@cypress/commit-info from 2.1.1 to 2.1.2. #3327.@cypress/xvfb from 1.2.3 to 1.2.4. #3328.@ffmpeg-installer/ffmpeg from 1.0.15 to 1.0.17. #3329.cachedir from 1.3.0 to 2.1.0. #3660.chalk from 2.4.1 to 2.4.2. #3362.chokidar from 1.6.0 to 1.7.0. #3363.coffee-script from 1.12.5 to 1.12.7. #3365.commander from 2.11.0 to 2.19.0. #3366.common-tags from 1.4.0 to 1.8.0. #3368.compression from 1.7.2 to 1.7.3. #3379.cookie from 0.2.4 to 0.3.1. #3380.cookie-parser from 1.4.3 to 1.4.4. #3443.dependency-tree from 6.4.0 to 6.5.0. #3381.electron-context-menu from 0.8.0 to 0.11.0. #3383.electron-packager from 9.0.1 to 9.1.0. #3384.electron-positioner from 3.0.0 to 3.0.1. #3385.errorhandler from 1.1.1 to 1.5.0. #3386.express from 4.16.2 to 4.16.4. #3409.extract-zip from 1.6.6 to 1.6.7. #3410.glob from 7.1.2 to 7.1.3. #3412.image-size from 0.5.5 to 0.7.2. #3413 and #3500.is-ci from 1.0.10 to 1.2.1. #3414.lodash from 4.17.4 to 4.17.11. #3344.mocha-junit-reporter from 1.17.0 to 1.18.0. #3417.moment from 2.23.0 to 2.24.0. #3433.morgan from 1.3.0 to 1.9.1. #3434.node-uuid from 1.4.1 to 1.4.8. #3436.parse-domain from 2.0.0 to 2.1.7. #3437.request from 2.87.0 to 2.88.0. #3444.request-progress from 0.3.1 to 0.4.0. #3445.request-promise from 4.1.1 to 4.2.4. #3446 and #3476.return-deep-diff from 0.2.9 to 0.3.0. #3447.send from 0.14.2 to 0.16.2. #3448.ssl-root-cas from 1.2.5 to 1.3.1. #3449.supports-color from 5.1.0 to 5.5.0. #3464.through from 2.3.6 to 2.3.8. #3465.tmp from 0.0.31 to 0.0.33. #3466.tough-cookie from 2.4.3 to 3.0.1. #3477 and #3659.trash from 4.0.0 to 4.3.0. #3478.underscore.string from 3.3.4 to 3.3.5. #3480.yauzl from 2.8.0 to 2.10.0. #3481. Potentially fixes #3515.Fixed issue where the onLoad event was never being called when calling cy.visit() on the url Cypress is currently navigated to. Fixes #1311.
Released 1/30/2019
Bugfixes:
onLoad event was never being called when calling cy.visit() on the url Cypress is currently navigated to. Fixes #1311.3.1.4 that caused an InvalidStateError when visiting a page with an XHR request with a responseType other than text or ''. Fixes #3008.cy.visit() with localhost to fail, or using localhost inside of the baseUrl configuration option. Fixes #1872 and #3252 and #1777.timeout option for cy.request(). This should fix some instances where large timeout values would cause ESOCKETTIMEDOUT errors. Fixes #2669.<!DOCTYPE> declaration when the document only contained the doctype declaration. Fixes #2617.layout.html file would inadvertently get loaded instead of the spec file. Fixes #2891.autoplay. We now pass the --no-user-gesture-required command line switch to Chrome. Fixes #2376.--use-fake-ui-for-media-stream and --use-fake-device-for-media-stream to Chrome by default in order to better support testing webcam functionality. Fixes #2704.dtslint dependency introduced in 3.1.4. Fixes #3024 and #3136.cypress cache to not display [object Object] and made --help labels more descriptive. Fixes #2589.Misc:
cypress version, cypress cache list etc commands. Addresses #2705.Dependency Updates
sinon from 3.2.0 to 3.3.0. Addresses #1328.Documentation Changes:
Known regressions in this release ⚠️
Released 12/25/2018
🎄Merry Christmas everyone!
Known regressions in this release ⚠️
Omit and @ts-ignore combination #3024InvalidStateError when running tests #3008Bugfixes:
.click() would fail to click the center coordinates of elements with style display: inline. Cypress would instead report that the element was being covered causing the error: cy.click() failed because this element is being covered by another element. Fixes #210.abort() method called but are already complete. This fixes an edge case where complete XHR's were having their disposer function called in frameworks like rxJS which lead to Cypress accidentally re-aborting the XHR's after they were complete. Fixes #761unload event and allow the browser to handle natively calling abort. Fixes #2968devDependencies were being included in the Windows binary. Fixes #2896onreadystatechange was not receiving the proper event arguments. Fixes #2925Misc:
cy.request. Fixes #2305Dependency Updates
Fixed regression introduced in 3.1.1 with requestAnimationFrame that caused some animations not to run. Fixes #2725.
Released 12/03/2018
Bugfixes:
requestAnimationFrame that caused some animations not to run. Fixes #2725.cy.wrap() to no longer yield the proper jQuery array instance. Fixes #2820.windowsHide argument to the proper options. Fixes #2667 and #2809..check({ force: true }) no longer requires the checkbox or radio to be visible. Fixes #1376.Misc
cy.wrap. Fixes #2807.Cypress.$" $. Fixes #2830.cy.wait() now accepts a separate timeout option for requestTimeout and responseTimeout. Fixes #2446.Dependency Updates
^1.8.1 to ^1.8.7. Fixes #2864.^2.27.0 and ^2.28.0 to ^4.0.0, Fixes #2455.Documentation Changes:
requestTimeout and responseTimeout options to cy.wait()cy.wait()AssertionsFixed a regression caused in 3.1.1 where we attempted to set a property on an invalid cookie sent from a server. Fixes #2724.
Released 11/18/2018
Bugfixes:
3.1.1 where we attempted to set a property on an invalid cookie sent from a server. Fixes #2724.charCode and keyCode when using .type() on a few different special characters such as {. Fixes #2105.3.1.1 where passing undefined to a setTimeout caused Cypress to error. Fixes #2719.Windows for users on node >= 11. Fixes #2667..Trash files to show up. We now have opted to actually rm -rf the files in linux because trashing is too inconsistent between linux distros. Fixes #2742.Misc
Cypress.moment(). Fixes #2746.Dependency Updates
progress #2733.Known regressions in this release ⚠️
Released 11/2/2018
Known regressions in this release ⚠️
Features:
flag option to cy.writeFile(). The following flags are available. Fixes #1249.CYPRESS_DOWNLOAD_MIRROR environment variable for installing Cypress at a mirror url. Fixes #2609.runUrl from cypress.run(). Fixes #2596.Bugfixes:
https url without the subsequent secure flag. Due to the way Cypress was constructing the url, this would fail to actually remove the cookie. Fixes #1264, #1321, #1799.cy.writeFile() and passing an object to a .json file. The object is now correctly written to the JSON file instead of a string. Fixes #2373.trashAssetsBeforeRuns behavior. We now trash the contents of the screenshotsFolder and videosFolder directories instead of trashing the directories themselves. This helps maintain any file access permissions for the directories. Fixes #1943 and #2600.cy.clock() would not be an instance of Date. Fixes #2570.. are now correctly read as directories instead of spec files within the Test Runner. Fixes #2423.undefined from a cy.task() handler resulted in an incorrect runtime error. Fixes #2553.modifyObstructiveCode to account for framebusting techniques that use window.frameElement, so that Applications using this technique will run properly in Cypress. Fixes #2582.blackout within cy.screenshot(). Fixes #2508.cy.screenshot(). Fixes #2432.readyStateChanges with the same readyState. Fixes #1150.Misc
new Buffer with Buffer.from. Fixes #2626.autoScrollingEnabled to be saved in state.json. Fixes #2476.beforeSpecRun is not a function. Fixes #2401.cy.screenshot() to include screenshot specific options. Fixes #2654.Dependency Updates
^1.4.0 to ^1.8.0 #24151.1.0 to 1.1.1 #2513^1.5.2 to ^3.0.0 #2570
<!-- textlint-disable -->3.2.16 to 3.3.6 #2363
<!-- textlint-enable -->5.6.5 to 6.1.1 #2541Documentation Changes:
flag option to cy.writeFile() doc.runUrl to returned run in Module API doc.CYPRESS_DOWNLOAD_MIRROR flag and rewrote advanced install instructions to be clearer in Installing Cypress doc.Cypress can now run tests in parallel across multiple virtual machines, or can be parallelized on a single machine. Cypress will automatically figure
Released 8/13/2018
Summary:
--parallel flag and spinning up multiple machines on your CI provider. From our experiments you can expect to see approximately 40% reduction in overall run time per machine you add. However, attempting to run in parallel on a single machine requires server grade hardware with dozens (or even hundreds) of CPU's and GB of RAM to run efficiently. A much better and simpler approach is to use a cluster of docker containers that are all isolated from each other. Any standard CI service (CircleCI, TravisCI, etc) comes with the ability to do this. We automatically tap into their environment variables to make parallelization possible without you having to configure anything.Features:
cypress run accepts a new --parallel flag to run specs in parallel. Fixes #1690 and #64 and #2297.cypress run accepts a new --group flag to group multiple spec files within a single run. Fixes #2169cypress run accepts a new --ci-build-id flag. Fixes #2153.Bugfixes:
menu when using offscreen rendering. Fixes #2322 and #2294.3.0.2 that caused typing {enter} not to submit a form when there were <button> elements other than type='submit'. Fixes #2261 and #2326.Misc
--parallel or --group feature, we now visually indicate that to you in the standard output when recording. Fixes #2275.cypress-browserify-preprocessor was bumped to 1.1.0. This supports more JavaScript features by default, including async/await, object rest spread, and class properties. Fixes #2254.cypress run now creates a new browser profile per run per browser, but keeps the same browser profile for interactive mode with cypress open. This means you can run Cypress locally over multiple processes and the browser profiles will not conflict with each other. Fixes #1566.Documentation Changes:
Reverted the Chrome argument that disabled RootLayerScrolling which was used to prevent the application under test from "shaking" due to a bug in vers
Released 7/30/2018
Bugfixes:
RootLayerScrolling which was used to prevent the application under test from "shaking" due to a bug in versions 66 and 67. This workaround inadvertently created a different and much more severe bug in Chrome 68 that would miscalculate pointer coordinates. This led to Cypress giving confusing errors about elements being covered up on action. This is still a bug in Chrome, and is fixed in Canary but has not yet been released to the stable Chrome 68 channel. Nevertheless, removing the RootLayerScrolling flag does fix it. We did several experiments to try to ensure that the "shaking" behavior does not exhibit itself in Chrome 68. We have limited the --disable-blink-features=RootLayerScrolling flag to Chrome 66 and Chrome 67. Fixes #2223 and #2215 and #2037.chromeWebSecurity: false option to not be respected. This was due to Chrome progressively rolling out trials of a new option that attempts to isolate sites (and iframes) in their own child process if their origins are different. Fixes #1951 and #2001 and #715.cypress.open() or cypress.run(). Passing nested objects in reporterOptions now works correctly. This is especially useful when using mocha-multi-reporters. In addition to fixing the Module API, we are now also properly handling nested arguments from the Command Line. In order to pass nested objects within CLI params you must pass stringified JSON. This is useful for properties such as blacklistHosts. Fixes #1348 and #1357 and #2221.cy.screenshot() to be in different folders when you ran using cypress run vs cypress run . Fixes #2091.cypress run after navigation. Now the browser will always act as if it is focused no matter what and in all situations when running headlessly. If you were seeing focus related problems when running headlessly, this should fix them. Fixes issue #2190.cy.click() on an element that bound to the focus event while the browser was currently out of focus. We have now normalized all focus and blur events to behave the same as if the browser is always in focus. This should fix the other batch of blur and focus issues that users have been experiencing. Fixes #549 and #2198..type(). Fixes #1241..type() on an input of type email or number will no longer fire unnecessary additional blur and focus events. Fixes #2210..type() breaking on chains when passing the same options references. Fixes #365..clear() not behaving the same as cy.type('{selectall}{backspace}'). Fixes #420.blur and click event when chaining .clear().type(...). Fixes #593.[contenteditable] elements. WYSIWYG, Draft.js based, and other HTML editors now work correctly. Fixes #596 and #1686 and #2096.[contenteditable] elements. Fixes #1108..type() inserting a rogue <br> tag after the first letter in [contenteditable] elements. Fixes #1926..type() would not fire correctly for many more situations and edge cases. Fixes #651..value in response to certain events now works correctly. Fixes #940 and #1684..clear() on an input with a maxlength attribute now works. Fixes #1002 and #2056..type() not firing the change event on input[type=number]. Fixes #1171..type() that were not firing correctly. Fixes #1209..type() not inserting characters on input[type=number]. Fixes #1381.input[type=number] elements. Fixes #2173.selectionStart and selectionEnd with .type() when using {leftarrow} or {rightarrow}. Fixes #1234.datetime-local input. Fixes #1366..focus() or .blur() on cy.window() no longer fires blur events on the activeElement or causes it to become body. Fixes #2234.cy.get('body').click() now correctly changes the activeElement back to body and causes the existing activeElement to receive blur. Fixes #2236.Misc:
type attributes because the browser does still consider them regular text inputs and allows you to type into them. Fixes #586.{uparrow} or {downarrow} with .type() on an input[type=number] element now increments or decrements the number configured via the step attribute. Fixes #2110.{uparrow} or {downarrow} with .type() now correctly moves the cursor on textarea or [contenteditable] elements. Fixes #2187..focus() or .blur() on cy.get('body'). Fixes #2235.junit reporter dep from 1.12.1 to 1.17.0 which adds a few new features. Fixes #2238.npm audit was yelling about. Fixes #1701.Runs tab now more closely match how they display in the Dashboard. Fixes #2060.git data. Fixes #2129 and #2073.1.0.2. Fixes #2139.videoCompression. Allowing it to be a boolean. Fixes #2140.Documentation Changes:
Screenshots taken with `cy.screenshot()` on 2x DPI are now taken at the correct full size. Fixes #1857 and #2018.
Released 6/28/2018
Bugfixes:
cy.screenshot() on 2x DPI are now taken at the correct full size. Fixes #1857 and #2018.EPIPE errors when running cypress run in newer versions of node. Fixes #1841 and #2044.cypress run. #1909 and #1892.cypress run. Fixes #1939.document.hasFocus() method to return true if the top window (Cypress window) is in focus. This should now correctly match how your application behaves outside of Cypress. Fixes #1940.position: sticky. Fixes #1475.integrationFolder in Windows would lead to errors with plugins. Fixes #1704.gzip content. Also fixed issues with incorrectly gunzipping multibyte characters which would potentially lead to serving invalid HTML or JS. Fixes #1396 and #1756.--silent flag should now be respected during npm install cypress on all OSes. Fixes #817.pluginsFile now supports an absolute path instead of just a relative one. Fixes #1837.3.x.x where application code that used setTimeout with a string argument would see the error fn.apply is not a function. Fixes #1854.cypress run mode. Additionally we have optimized the code path to not read in the local state.json unnecessarily. Fixes #2013 and #1912 and #1905 and #1890.before:browser:launch when in the Electron browser. Fixes #1992.<header> tag instead of the <head> tag. Fixes #2026.modifyObstructiveCode. Fixes #2030 and #2059.<style> tags with programmatically inserted CSS rules. Fixes #1226.Misc:
cypress cache path, cypress cache list, and cypress cache clear. Fixes #1856.--no-exit for cypress run to keep the browser open after the tests finish running. Fixes #1871..npmrc file. Fixes #1399 and #1853.ffmpeg has now been bumped from 3.x.x to 4.x.x. This may help with some issues users were experiencing when recording videos. Fixes #1972.ffmpeg to determine why ffmpeg compression sometimes causes Cypress to crash (mostly while running in Travis CI). Fixes #1971.cypress verify. Fixes #1984.skipping install message if the Cypress binary is already installed locally. Fixes #1985.cypress/integration/foo/bar_spec.js will save screenshots inside of this directory: cypress/screenshots/foo/bar_spec.js/*. Fixes #1826.foo/bar/baz as the fileName arg to cy.screenshot() inside a spec, app.spec.js, will now result in the screenshot being saved to a nested folder path such as: cypress/screenshots/app.spec.js/foo/bar/baz.png. Fixes #1771 and #668.(failed) to the screenshot filename of screenshots taken automatically during test failure. Fixes #1923.test name (1).png. This prevents screenshot files with the same name from being overwritten. Fixes #1766.onAfterScreenshot and onBeforeScreenshot callbacks ar enow invoked for failed tests. They include a testFailure property to distinguish between automatic ones and your own use of cy.screenshot(). Fixes #2040.after:screenshot plugin event you can use in your pluginsFile to work with screenshots after they are taken. This enables you to rename them, move their location, resize them, send them to a service, etc. Fixes #2039.Cypress.browser object which contains information about the currently running browser. Fixes #1919 and #1961.Cypress.spec object which contains information about the currently running spec. Fixes #1918.cy.visit() are no longer arbitrarily truncated at a set width. Fixes #1995.Documentation Changes:
Seeded KitchenSink tests no longer fail. Fixes #1812.
Released 5/30/2018
Bugfixes:
Electron browser and then opening Chrome no longer causes cy.screenshot() to fail. Fixes #1820.tty.getWindowSize is not a function. Fixes #1815 and #1817.There is a new cy.task() command that enables you to go outside the browser to perform tasks directly in node. This will make it easy to setup, scaffo
Released 5/29/2018
Summary:
node. This will make it easy to setup, scaffold, seed, talk to your database, or anything else useful on a backend.cypress run we now run each spec file in isolation from others. We have rewritten our reporter to provide more details and provide a summary of the run at the bottom.--record mode and are beginning to offer the first analytics and insights into the health of your tests on our Dashboard service.Breaking Changes:
CYPRESS_BINARY_VERSION has been removed. You should use the equivalent environment variable CYPRESS_INSTALL_BINARY instead.CYPRESS_SKIP_BINARY_INSTALL has been removed. To skip the binary install, set CYPRESS_INSTALL_BINARY=0.screenshotOnHeadlessFailure has been removed as an option in cypress.json. Instead you can now control this behavior directly with code by setting screenshotOnRunFailure to false within the new Screenshot API. Fixes #1140 and #1754.trashAssetsBeforeHeadlessRuns has been renamed to trashAssetsBeforeRuns in our configuration. Fixes #1754.videoRecording has been renamed to video in our configuration to be clearer and prevent confusion about recording to our Dashboard. Fixes #562.circle.yml file. Fixes #1592.before and after hooks within a support file now run before/after every spec file, instead of only once before/after the entire run. #681Features:
node code.--spec argument of cypress run. Fixes #263, #416 and #681.example_spec.js file has been replaced by an examples folder with several spec files. This more closely reflects the recommended use of Cypress - as smaller groups of tests split among many files that will now be run in isolation. The tests were also updated from ES5 to ES6. You can see all changes in the cypress-example-kitchensink repo Fixes #1460.plugins file's entire dependency tree to make iterating on plugins easier. Fixes #1407.spec file that it represents. Fixes #980.skipped tests differently than pending tests. #244.skipped tests within the summary output during cypress run. #1559.cypress run. #494.cypress run. #833.Bugfixes:
media="print". Fixes #1568.window was being returned instead of AUT's window. Fixes #1436.close event now properly fires on file when manually closing the browser. Fixes #1560.cypress.env.json is now being watched for changes. Fixes #1464..type() and .clear() when typing into non-typeable elements or clearing non-clearable elements to accurately list the elements allowed. Fixes #1650.--disable-blink-features=RootLayerScrolling to prevent the application under test from "shaking" in recent versions of Chrome. Fixes #1620.cypress run. Fixes #1143 and #1550.cypress run about a "transparent titlebar" setting. Fixes #1745.Misc:
NO_COLOR=1 environment variable. Fixes #1747 and #1748.cypress run --record on forked PR's, we now detect that the Record Key is missing and do not fail the build. We will display a warning, but continue running the tests. Fixes #1193..as() was defined starting with the @ character. #1643.--disable-device-discovery-notifications flag automatically. This should prevent Chromium browser from automatically trying to communicate with devices in your network, such as printers, while running tests. Fixes #1600.cypress.open() or cypress.run() through the Module API, just as you would from the command line. #1442.Cypress.off and Cypress.log. Fixes #1110 and #1591.duration option. Fixes #1606.NODE_OPTIONS environment variables now print within the cypress:cli logs when running in DEBUG mode. Although using NODE_OPTIONS themselves should not be used due to #1676. Fixes #1673.cypress run. Fixes #1585.it and any accompanying hooks that run before or after a test. Cypress will correctly associate failures in those hooks to the test itself. We believe this more accurately models and just "makes sense". Fixes #1163.200 pixels to 20 pixels. Fixes #1169 and #1444.headed and headless to be more specific and instead reference run mode and interactive mode. Fixes #1140.cypress.json. Fixes #1783.Documentation Changes:
cy.task() docScreenshot API doccy.screenshot() doc to include new accepted usage and optionsInstalling Cypress doc to include new options for Cypress binary cachingWriting and Organizing Tests to include newly seeded examples foldercypress run spec argsDashboard ServiceLaunching Browsers to include our disabling of device discovery notificationsPreprocessors to reflect all ways close event could be triggeredcypress run"Prevent a bug with node-sass on OSX + Windows when local node version does not match bundled node when importing components directly in spec files. Th
Released 3/1/2018
Bugfixes:
node-sass on OSX + Windows when local node version does not match bundled node when importing components directly in spec files. The underlying issue was because we forgot to update Buildkite and Appveyor when we upgraded Electron in 2.0.0. Fixes #1387 and #1390.Features:
data-cy, data-test or data-testid attributes when providing the unique selector for an element. Additionally it now exposes a public API that you can use to control how it determines which selector to use. Fixes #1135.Documentation Changes:
The cypress npm package now has the correct engines set in package.json. This was accidentally getting overwritten and caused errors when engineStrict
Released 2/25/2018
Bugfixes:
cypress npm package now has the correct engines set in package.json. This was accidentally getting overwritten and caused errors when engineStrict was set in environments using node older than 8.2.1. Fixes #1373.The runner no longer appears to "hang" if a before hook fails in a test with siblings. Previously the test would never generate a status and look pend
Released 2/21/2018
Bugfixes:
before hook fails in a test with siblings. Previously the test would never generate a status and look pending forever. This was a visual bug only. Fixes #1343.Misc:
cypress.json. Fixes #1350.Your coding agent can read these notes before it upgrades. Set up the MCP server →