Skip to content

chore(deps): update dependency @cypress/webpack-dev-server to v3

Renovate requested to merge renovate/cypress-webpack-dev-server-3.x into staging

This MR contains the following updates:

Package Type Update Change
@cypress/webpack-dev-server (source) devDependencies major ^1.8.4 -> ^3.11.0

Release Notes

cypress-io/cypress (@​cypress/webpack-dev-server)

v3.11.0

Compare Source

v3.10.1

Compare Source

v3.10.0

Compare Source

v3.9.0

Compare Source

v3.8.0: 3.8.0

Compare Source

Released 12/12/2019

Features:

  • Chrome can now be run in headless mode by using cypress run --headless --browser chrome. Addresses #​832.
  • Cypress now accepts a --tag argument to be used to identify separate runs. Any tags assigned will be shown on the run in the Cypress Dashboard. Addresses #​2561.
  • The commands .its() and .invoke() now accept an options object to allow changing logging options. Addresses #​1450.
  • Cypress will now attempt to use the unzip binary during cypress install before trying the slower, Node.js-based unzipping method. Addresses #​3803.
  • Upgraded Electron to 7.1.4. This bumps the internal Node version to 12.8.1 and the internal Chromium version to 78.0.3904.113.

Bugfixes:

  • We fixed a regression in 3.5.0 where Cypress would crash on Windows when trying to pass a url through --config or --env command line flags. Fixes #​5466.
  • We fixed a regression in 3.5.0 where a supplied 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.
  • We fixed a regression in 3.5.0 where cy.getCookie() would incorrectly filter cookies by their domain, leading to unexpected results. Fixes #​5656.
  • We fixed a regression in 3.5.0 where calling .type({ force: true }) on hidden inputs would not type the correct characters. Fixes #​5835.
  • We fixed a regression in 3.5.0 where .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.
  • During visibility checks, Cypress now properly evaluates a DOM element transformed by scale(0) or rotateY(90deg) as not visible. Fixes #​723.
  • Fixed a bug where the specs list in interactive mode would not refresh when files are changed on disk. Fixes #​5933.
  • env configuration option displays properly within the settings panel. Previously, setting env options would incorrectly render "undefined" as the value. Fixes #​5859.

Misc:

  • We removed the max viewport size and lowered min viewport size to 0 for cy.viewport() Addresses #​5871 and #​5892.
  • The Test Runner now shows a non-Chrome logo for browsers passed in via config.browser that are not of the Chrome family. It also supports showing the Firefox logo (in preparation for Firefox browser support). Fixes #​5745.
  • We updated the look of some of our icons. Addressed in #​5822.
  • We're continuing to make progress in converting our codebase from CoffeeScript to JavaScript. Addresses #​2690 in #​5643.
  • cy.request will now automatically encode special characters in the request URL, including Unicode. Addresses #​5274.
  • You can pass additional Electron launch command line arguments using environment variable ELECTRON_EXTRA_LAUNCH_ARGS. Addresses #​5807.

Dependency Updates:

  • Upgraded ansi-escapes from 4.2.1 to 4.3.0. Addressed in #​5815.
  • Upgraded electron-context-menu from 0.11.0 to 0.15.1. Addressed in #​5495.

v3.7.4

Compare Source

v3.7.3

Compare Source

v3.7.2

Compare Source

v3.7.1

Compare Source

v3.7.0: 3.7.0

Compare Source

Released 11/27/2019

Features:

Bugfixes:

  • Fixed a regression in 3.5.0 where a cy.visit that changes superdomain would incorrectly clear cookies of other domains. Fixes #​5756.
  • 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.
  • Fixed a regression introduced in 3.5.0 which caused cy.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.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.
  • 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.

Dependency Updates:

  • Upgraded parse-domain from 2.0.0 to 2.3.4. Addressed in #​5726.

v3.6.1: 3.6.1

Compare Source

Released 11/08/2019

Bugfixes:

  • The Electron browser no longer hangs when testing applications that have a prompt in a beforeunload handler. Fixes #​2118.
  • We fixed a regression in 3.5.0 where HTTP redirects could cause strange behavior, including cookies not being set as expected, leading to authentication issues and other problems. Fixes #​5436 and #​5432.
  • When using 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.
  • We fixed a regression in 3.5.0 where cy.clearCookie() would not act as expected when using certain baseUrls. Fixes #​5453.
  • Cypress no longer crashes with the error Failed to parse or set cookie named "xxx" when loading certain websites. Fixes #​4990.
  • Cypress now sends the expected headers or request body in a cy.visit() to an HTTPS URL using the default port, 443. Fixes #​5367.
  • We fixed a regression in 3.6.0 where Cypress would crash with TypeError: Cannot read property 'length' of null on some network requests. Fixes #​5585.
  • We fixed a regression in 3.5.0 that caused the red target to be rendered incorrectly when specifying offset coordinates to .click(). Fixes #​5635.
  • We fixed a regression in 3.6.0 that was causing an incorrect element to receive the click event during action commands. Fixes #​5578.
  • We fixed a regression in 3.5.0 causing text after using modifier keys in .type() to not be typed. Fixes #​5622.
  • Elements with backface-visibility: hidden; are now accounted for when asserting on the elemtent's visibility. Fixes #​2985.
  • We fixed a bug where a failed Cypress commands would incorrectly throw cannot read property 'replace' of undefined if the error's stack was undefined. Fixes #​1669.
  • The 'Log In' modal within Cypress when setting up a project now correctly closes when manually closed. Fixes #​5631.

Misc:

  • We improved the user experience around inspecting events fired during .click() and .type() commands within the console. Addresses #​5553.
  • We increased the timeout when connecting to the "Developer Tools Protocol" from 5 seconds to 20 seconds and also added logging for when the connection takes longer than 5 seconds. Addresses #​5610.
  • There is no longer a warning about Promise.defer appearing in stderr when running with video recording enabled. Addresses #​5611.
  • Types for .rightclick() and .dblclick() have been updated to correctly reflect their accepted options. Addresses #​5617.
  • We're continuing to make progress in converting our codebase from CoffeeScript to JavaScript. Addresses #​2690 in #​5556

v3.6.0: 3.6.0

Compare Source

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:

  • We fixed a regression in 3.5.0 where the maximum size of an HTTP header or body in a stubbed cy.route() was limited to 8kb causing requests to fail with a 431 HTTP error. Fixes #​5431.
  • We fixed a bug where certain types of uncaught errors originating from the application under test would not route through the 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.
  • We fixed a regression in 3.5.0 that would throw an error during 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.
  • We fixed a regression in 3.5.0 where sometimes cookies were not set on the correct URL during a redirect inside of a cy.visit() or cy.request(). Fixes #​5432.
  • We fixed a regression in 3.5.0 causing environment variables containing unicode values to be incorrectly resolved when read via Cypress.env(). Fixes #​5435.
  • We fixed a regression in 3.5.0 that prevented use of .click() or .type() inside of an iframe element. Fixes #​5449. Fixes #​5435.
  • We now throw the proper error message when an element cannot be interacted with due to being covered by an element with position:fixed. Fixes #​5430.
  • We fixed a regression in 3.5.0 that caused some click events to not be sent to the correct elements during .click(). Fixes #​5459.
  • We updated .type() to properly respect focus selection changes during typing. Fixes #​5456.
  • We fixed a regression in 3.5.0 that caused selected text to be overwritten while typing a modifer key during .type(). Fixes #​5439.
  • We now send all the proper events during .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.
  • We now properly render iframe placeholder content when previewing DOM snapshots. Fixes #​5295.

Misc:

  • We no longer log the default option {multiple: true} in the Command Log or the console during cy.dblclick(). Addresses #​5406.
  • The text color of inactive tabs within the Cypress Chrome browser has been set to white for better readability. Addresses #​1661.

Dependency Updates

  • Replaced express-handlebars with squirrelly to reduce dependency size. Addressed in #​5521.
  • Upgraded graceful-fs from 4.2.0 to 4.2.3. Addressed in #​5497.

v3.5.3

Compare Source

v3.5.2

Compare Source

v3.5.1

Compare Source

v3.5.0: 3.5.0

Compare Source

Released 10/23/2019

Features:

  • 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 --browser flag. Addresses #​4608.
  • There is a new .rightclick() command to right click on DOM elements. Addresses #​53.
  • Cypress now accepts a --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.
  • You can now use your system's Node version by setting the 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.
  • Passing a ~ 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.
  • We updated ".dblclick() dblclick to follow the same actionability checks as .click(). Fixes #​3798.
  • Coordinates clicked during .click() are now correct if the element being clicked is within an iframe. Fixes #​4347.
  • We now allow .type() to be used on any DOM element. The element will receive all of the type events. Fixes #​2166 and #​3661.
  • If a typeable element gains focus during .type(), Cypress now continues typing into the newly focused element. Fixes #​2240.
  • We now correctly borrow the property getter for maxLength when using .type() on an input. Fixes #​4587.
  • We fixed an issue where 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.
  • We now fire an input event when using .type() typing {enter} inserts a newline. Fixes #​4870.
  • We no longer input text when non-{shift} modifier keys are typed in .type(). Fixes #​5424.
  • We now properly send the code property during keyboard events triggered during .type(). Fixes #​3722
  • Cypress now sends screenX and screenY properties to events triggered using .trigger(). Fixes #​3187.
  • We fixed a bug where Cypress could not intercept traffic sent through cy.visit() to IP addresses over HTTPS, leading to ERR_SSL_VERSION_OR_CIPHER_MISMATCH errors. Fixes #​771.
  • We fixed a bug introduced in 3.3.0 where some HTTPS sites failed to load during cy.visit() and cy.request() with a "handshake failed" error. Fixes #​4394.
  • We fixed a bug where ECC SSL Certificates were not supported during cy.visit() that was introduced in 3.3.0. Fixes #​4368.
  • We fixed an issue introduced in 3.4.0 that would cause the Selector Playground to not properly highlight the currently hovered element. Fixes #​4872.
  • Cypress.env() now escapes <script> tags in the configuration file. Fixes #​4952.
  • Cypress now properly handles converting responses of content-type application/vnd.api+json to JSON. Fixes #​5165.
  • XHR responses in cy.route() that exceed 80kb in size no longer fail with an ERR_EMPTY_RESPONSE error. Fixes #​76.
  • Cypress no longer crashes with dest.end errors on Windows machines. Fixes #​2181.
  • The onFocus event no longer incorrectly fires on hidden elements. This fixes an issue introduced in 3.3.2. Fixes #​4898.
  • You can now call .click() on inputs or textareas that are readonly. This fixes an issue introduced in 3.4.1. Fixes #​4874.
  • Cypress no longer crashes with a "port" option should be a number or string error when receiving an erroneous HTTP CONNECT. Fixes #​3250.
  • Cypress tests now timeout if there are no Cypress commands enqueue and the done() callback is not called within the commandTimeout. Fixes #​1075, #​2478, #​3349, and #​4790.
  • We fixed a bug where Cypress would exit with an ENOTCONN error at the end of a test run when using Node >12.11.0 on Windows OS. Fixes #​5241.
  • We fixed a bug where the Chrome policy warnings introduced in 3.4.0 would not appear. Fixes #​4986.
  • We improved the way that cookies are handled for Chrome browsers. This fixes an issue when parsing cookies that were set with a domain beginning with a . in Chrome 77. Fixes #​5142 and #​5206.
  • We fixed a bug when visiting an application that does an HTTP request to a .js file containing Unicode transferred using Content-Encoding: gzip that could cause the JavaScript file to become corrupted. Fixes #​1746.
  • We now normalize the Cypress cache folder to resolve in the current folder and not with respect to the node_modules/cypress folder. Fixes #​2364.

Misc:

  • Cypress now displays a more precise error message when checking an element's visibility if an element is detached from the DOM. Addresses #​4946.
  • We increased the timeout to wait for Xvfb to start from 5 seconds to 30 seconds. This should resolve some issues where the error Could not start Xvfb was being thrown because Xvfb could not start within the allowed time. Addresses #​5110.
  • We now warn when using cypress run from the binary directly (not from an npm module) since this is not its intended use. Addresses #​1573.
  • We now warn on cy.visit('file://...) to explain that this url format is not supported and suggest visiting a relative HTML file. Addresses #​4452.
  • Setting the reserved CYPRESS_ENV environment variable will now throw an error. Addresses #​1621.
  • We now throw a better error when passing in an Object to the browser argument of the Browser Launch API explaining that a String is expected instead. Addresses #​4966.
  • An error will now be thrown if an invalid name or value is supplied to cy.setCookie(), matching the RFC 6265 compliant validation of cookie names and values. Addresses #​5206.
  • Passing an invalid type to the 2nd argument of cy.get() now throws an error explaining that an options Object is expected. Addresses #​2953.
  • We now throw a more helpful error message during cy.screenshot() that would result in a screenshot with 0 width or height. Addresses #​5149.
  • Stdout printed during cypress run no longer truncates text such a filenames and instead wraps the text to fit within the width of the terminal. Addresses #​4977.
  • We now display up to 2,000 characters of HTTP property values within error messages during cy.request() errors. Addresses #​3145.
  • Cypress now always considers 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.
  • We changed the way cookies are set in cy.visit() to more closely match the browser's behavior when setting cookies, particularly when using fetch with cookies. Addresses #​4433.
  • We've added more flags to send to Chrome upon launch that should help with issues encountered during browser automation including --disable-backgrounding-occluded-window, --disable-breakpad, --disable-ipc-flooding-protection, --password-store=basic, and --use-mock-keychain. Addresses #​5132 and #​3633.
  • Scrolling the specs list now only scrolls the list of spec files and no longer scrolls the search and filter bar. Addresses #​4904.
  • We fixed some layout issues within the Test Runner that were introduced in 3.4.1. Addresses #​4888, #​4912, and #​4959.
  • The counter badge for spies and stubs no longer appears visually cut off. Fixes #​4822.
  • TypeScript 3.6.2 no longer errors due to outdated jQuery types. Addresses #​5065.
  • We updated types for Cypress.Commands.overwrite() to not allow an options object as an argument. Addresses #​5341.
  • We added failures and message types when a run fails using the Module API. Addresses #​5335.
  • We're continuing to make process in converting our codebase from CoffeeScript to JavaScript. Addresses #​2690 in #​4869, #​4906, #​5096, #​5107, #​5156, #​5173, and #​5352.

Documentation Changes:

  • Added a .rightclick() doc.
  • Added a Webinars doc containing videos of all of the official Cypress webcasts.
  • Updated the .dblclick() doc to include new position, x, and y arguments plus force and multiple options.
  • Added the --config-file argument to Command Line and Module API doc.
  • Added the nodeVersion argument to Configuration doc and mentioned its uses in the Plugins Guide and Writing a Plugin doc.
  • Updated all docs to mention 'configuration file' instead of static cypress.json file since this is not configurable via a --config-file argument.
  • Added qs option to cy.visit() with examples.
  • Added padding option to cy.screenshot() with examples.
  • Updated the cy.viewport() doc to have a max viewport size of 4000.
  • Added newly supported viewport sizes to the cy.viewport() doc.
  • Documented new keyboard shortcuts in the Test Runner doc.
  • Added a new section on troubleshooting problems with Xvfb to the Continuous Integration doc.
  • Added a section to our Debugging doc about our cypress-fiddle plugin used for playing around with small test cases.
  • Added a section to our Debugging doc explaining how to patch an installed version of Cypress.
  • Mention not needing to decode portions of the url in the cy.route() doc.
  • Mention that the file:// prefix is not supported in the cy.visit() doc.
  • Add a note about when passing <-loopback> in NO_PROXY is necessary in the Proxy Configuration doc.
  • Updated our Dashboard docs to include screenshots containing our new Dashboard navigation design.
  • We have some newly translated documentation in Portuguese. If you'd like to help in translating more, please open a pull request in our documentation repo.

Dependency Updates

  • Upgraded Chrome browser version used during cypress run and when selecting Electron browser in cypress open from 61 to 73. Addressed in #​4720.
  • Upgraded electron from 2.0.18 to 5.0.10. Addressed in #​4720.
  • Upgraded node from 8.9.3 to 12.0.0. Addressed in #​4720.
  • Upgaded jquery from 2.2.4 to 3.1.1. Addressed in #​1229.
  • Upgraded sanitize-filename from 1.6.1 to 1.6.3. Addressed in #​5216.
  • Upgraded @cypress/get-windows-proxy from 1.5.4 to 1.6.0. Addressed in #​5108.

v3.4.1: 3.4.1

Compare Source

Released 7/29/2019

Dashboard Features:

Bugfixes:

  • Fixed a bug where the content of pages using non-UTF-8 character encoding would become corrupted when opened in Cypress. Fixes #​3479, #​1543, and #​3650.
  • Fixed a regression introduced in 3.4.0 that caused an error to be thrown when chaining together multiple assertions using the and chainable getter. Fixes #​4833.
  • The include and includes assertion chainers now correctly work the same as contain and contains assertion chainers. Fixes #​4833.
  • Cypress now correctly works offline on Windows when visiting a localhost URL. Fixes #​4763.
  • 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.
  • Variables beginning with top and location in your application code are no longer modified when modifyObstructiveCode is true. Fixes #​4794.
  • We removed erroneous socket connections when the browser is initially launching. Fixes #​4776.
  • Fixed a bug when dismissing pinned snapshots that would cause the page to be wiped with nothing rendered. Fixes #​4864.
  • We upgraded the mocha-teamcity-reporter dependency so that it no longer errors in certain situations when trying to access duration on tests. Fixes #​4654.
  • We upgraded the lodash dependency to fix a security vulnerability warning. Fixes #​4699, #​4730, #​4743.

Misc:

  • We now ensure we are shipping with production versions of dependencies such as 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.
  • Video recordings now wait after all tests finish to ensure that the video captures the final rendered frames of the browser. This prevents the last few paints from being cut off. Fixes #​2370.
  • Cypress now looks for any npm proxy configuration values as a fallback when no other system proxy configuration is found. This brings this feature into parity with how npm reads off proxy configuration values during an npm install. Addresses #​4719.
  • We updated the messaging when there is a failure downloading Cypress to recommend checking your proxy settings. Addresses #​1662.
  • A warning message now displays if you attempt to run the Cypress binary directly instead of going through the cypress npm package. Addresses #​1573.
  • There are newly added examples in the TypeScript definitions for custom commands, cy.location() and .should(). Addresses #​3684 and #​4715.
  • The types for the cy.contains(content, options) syntax have been added. Addresses #​4727.
  • Types for cy.once() have been added. Addressed in #​4788.
  • There is now a { 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.
  • You can now zoom in the main Test Runner window and also the Electron browser. Corresponding keyboard shortcuts for Zoom in, Zoom out and Actual Size are also available. Addresses #​1231.
  • When viewing the Test Runner's main window at its smallest size, the header text no longer incorrectly wraps. Addresses #​86.
  • We're continuing to make process in converting our codebase from CoffeeScript to JavaScript. Addresses #​2690 in #​4781 and #​4817.
  • We increased the cypress binary verification phase from 10 seconds to 30 seconds to accomodate underpowered or overwhelmed machines typically found in CI environments. Addresses #​4624.

Documentation Changes:

Dependency Updates

  • Upgraded @ffmpeg-installer/ffmpeg from 1.0.17 to 1.0.19. Addressed in #​4792.
  • Upgraded browserify from 13.3.0 to 16.3.0. Addressed in #​4751, #​4825 and #​4826.
  • Upgraded data-uri-to-buffer from 1.2.0 to 2.0.1. Addressed in #​4622.
  • Upgraded duplexify from 4.0.0 to 4.1.1. Addressed in #​4853.
  • Upgraded graceful-fs from 4.1.15 to 4.2.0. Addressed in #​4818.
  • Upgraded lodash from 4.17.11 to 4.17.15. Addressed in #​4684, #​4709, #​4784.
  • Upgraded mocha-junit-reporter from 1.23.0 to 1.23.1. Addressed in #​4785.
  • Upgraded p-queue from 1.2.0 to 6.1.0. Addressed in #​4750.
  • Upgraded semver from 6.0.0 to 6.3.0. Addressed in #​4797.
  • We also updated and removed some dependencies used for development.

v3.4.0: 3.4.0

Compare Source

Released 7/9/2019

User Authentication Changes:

  • Users can now log in to the Test Runner using the browser installed on their system. Fixes #​3583, #​4337, and #​1162.
  • Users can now log in to the Test Runner with Google or with SSO (if configured). Fixes #​3519.

Continuous Integration Support:

  • Environment variables for Semaphore CI v2 are now recognized when recording a test for the dashboard. Fixes #​4671.
  • Support for Concourse CI has been added when recording a test for the dashboard. Fixes #​4376.
  • SnapCI support has been removed and GoCD support has been added. Fixes #​2680.

Bugfixes:

  • contain.text, contain.html, and contain.value assertions now support partial matching in all scenarios to match expected behavior. Fixes #​1969.
  • Electron rendering warnings are no longer printed to console output. Fixes #​4288.

Misc:

  • Added verification for cypress download that checks the checksum and filesize. This will fix issues with Cypress downloads being corrupted in transit. Fixes #​812 and #​3515.
  • Added a warning when a percent-encoded URL is passed to cy.route(). Fixes #​2372.
  • Added an error for when cy.click() fails because an element has the CSS pointer-events: none. Fixes #​3164.
  • Added a warning for Windows users who have Group Policy settings that may interfere with usage of Cypress. Fixes #​4391.
  • The JSON schema file used for intelligent code completion for the Cypress configuration file has been updated to match our documentation. Addressed in #​4300.
  • Type definitions were added to cy.server() for the onAnyRequest, onAnyResponse, and onAnyAbort callback options. Fixes #​3992.
  • The outline when focusing on a panel heading within the 'Settings' tab of the Test Runner now correctly outlines the element. Fixes #​3357.

Documentation Changes:

  • Documented cy.get()'s optional withinSubject argument.
  • Documented "Expected to find element..." error message and potential causes.
  • Documented new "Cypress detected policy settings on your computer that may cause issues" warning in Error Messages.

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.

v3.3.1: 3.3.1

Compare Source

Released 5/23/2019

News:

Bugfixes:

  • Cypress no longer accidentally prints internal Electron logs when running 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.
  • Fixed a bug for users running external network proxies that prevented requests from completing. Requests should now all work correctly. Fixes #​4257.
  • Fixed a regression in 3.3.0 causing large requests such as multipart/form-data uploads to hang. Fixes #​4240, #​4252, and #​4253.
  • Fixed issue where support for have.focus, not.have.focus, be.focused and not.be.focused assertions were not working. Fixes #​4265.
  • Names given to .as() now work properly when they contain a . character. Fixes #​3512.
  • The proper error is now thrown when passing {log: false} to a Cypress command that failed. Fixes #​3847.
  • Fixed an issue where highlighting a command's snapshot would throw an error when no application was rendered in the AUT frame. Fixes #​4177.
  • We now properly detect the branch name when running Cypress in AppVeyor. Fixed in #​4234.

Misc:

  • Fix capitalization of Xvfb in error messages. Addressed in #​4262.

Documentation Changes:

  • We have some newly translated documentation in Chinese and Japanese. If you'd like to help in translating more, please open a pull request in our documentation repo.

v3.3.0: 3.3.0

Compare Source

Released 5/17/2019

Features:

  • Cypress now automatically reads from your system's 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.
  • Your project's current proxy settings now display in the Settings of the Test Runner. Addresses #​3856.
  • Support for have.focus, not.have.focus, be.focused and not.be.focused assertions have been added. Addresses #​97.
  • We now offer a separate 32bit and 64bit build for Windows. Addresses #​716, #​787, #​2095, #​706, #​3706, and #​4016.
  • Requests that go through 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.
  • We now indicate which XHRs match which alias in the Command Log on .wait() when they match an alias multiple times. Addresses #​477.
  • The console log when clicking on the cy.visit() command now displays its resolved options arguments. Addresses #​3721.
  • There's a new 'canceled' XHR status shown on the Command Log to indicate the difference between calling xhr.abort() and the browser canceling the request due to page navigation. Addresses #​3973.
  • The Electron browser now runs Chrome Version 61. Addresses #​4000.
  • Running Cypress via cypress run now supports scripts of type="module". Fixes #​3696.
  • Exposed Cypress.isCy() method to check if a value is a valid instance of cy or a cy chainable. Fixes #​3822.
  • There is a new "Download Chromium" menu item in the "Help" menu of the Test Runner links to Cypress's Chromium Download Tool. Addresses #​3977

Bugfixes:

  • Fixed a regression introduced in 3.2.0 that caused an error to throw when visiting domains with certain public suffixes. Fixes #​3717.
  • When running Cypress with NODE_OPTIONS environment variables set, Cypress no longer issues an incorrect 0 exit code. #​1676
  • Fixed a regression introduced in 3.2.0 that caused .its() to no longer retry when it yields undefined. #​3837
  • Fixed a regression introduced in 3.2.0 that caused cy.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.
  • When a request is proxied through Cypress and there is a network error, we no longer send an HTML response with a 500 status code. We now kill the browser-facing socket and let the network error be handled by the application under test. Fixes #​4101, #​4231, #​1036, #​4231, and #​1398.
  • We changed Cypress's implementation to no longer rely on internal XHR events when the browser navigates. This fixes a a bug in Chrome 71+ that could cause XHRs to pend forever. Fixes #​3973 and #​4130
  • We greatly improved the speed of proxied requests through our network layer. Fixes #​3192 and #​1469.
  • If an error occurs during 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 automatically retries 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.
  • Cypress now properly handles typing JavaScript object prototype methods (like hasOwnProperty) into .type(). Fixes #​3423.
  • We now set the 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.
  • Passing a browser path containing spaces now works properly when passed to the --browser argument. Fixes #​3979
  • Fixed display of tooltips when selecting elements from the Selector Playground so that they display at the correct coordinates when scrolling. Fixes #​1351.
  • The lists of spec files now display at the correct indentation level when they are nested more than 5 directories deep. Fixes #​3652.
  • Cypress now properly parses environment variables with empty values. Fixes #​3742.
  • Assertions running outside of a test are now properly handled in Cypress instead of throwing internal errors. Fixes #​3926.
  • Cypress.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:

  • We now better support capturing environment variables within Azure DevOps. Addresses #​3657.
  • Cypress now only scans for spec changes when the watcher sees changes, rather than polling to scan. Addresses #​3069.
  • The ability to open the context menu to see "Inspect Element" has been reenabled in the Electron browser. Addresses #​4002.
  • We no longer package non-Windows 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.
  • The warning messages when going over test recording limits have been updated to correctly display 'monthly tests' and 'private tests' where necessary. Addresses #​4024.
  • When an HTTP request is received by the proxy layer, by default, we send it with a Connection: keep-alive header so that the connection will be reused if possible. Addresses #​3857.
  • Improved accessibility of Test Runner for screen readers. Addresses #​3850.
  • Cypress type definition now allow a timeout option in cy.hash(). Fixes #​3844.
  • Fixed type definition for match assertion so that it now only accepts RegExp type arguments. Fixes #​2578.
  • The .trigger() type definition now expects its options to be ObjectLike. Addressed in #​3809.
  • The cy.clock() type definition now allows for type Date. Fixed in #​4106.
  • Added type definition for undocumented Cypress.LocalStorage.clear method. Fixes #​4070.
  • Added type definition for Cypress.isCy() method. Fixes #​3822.
  • Added missing type definitions for some cy.visit() options. Fixes #​3989.
  • The spinner animation should more smoothly spin when a command is pending in the Test Runner. Addressed in #​4005.

Documentation Changes:

Dependency Updates

  • Upgraded commit-info from 2.1.2 to 2.1.2. Addressed in #​4045
  • Upgraded data-uri-to-buffer from 0.0.4 to 1.2.0. Addresses #​4152.
  • Upgraded electron from 1.8.2 to 2.0.18. Addresses #​4000.
  • Upgraded electron-packager from 9.1.0 to 13.1.1. Addresses #​4155.
  • Upgraded express-handlebars from 3.0.0 to 3.0.2. Addressed in #​4086.
  • Upgraded find-process from 1.2.1 to 1.4.1. Addressed in #​4087.
  • Upgraded getos from 2.8.4 to 3.1.1. Addressed in #​4222.
  • Upgraded http-status-codes from 1.3.0 to 1.3.2. Addressed in #​3949.
  • Upgraded jimp from 0.6.0 to 0.6.4. Addressed in #​4097.
  • Removed method-override. Addressed in #​4209.
  • Upgraded node from 8.2.1 to 8.9.3. Addressed in #​4001.
  • Downgraded parse-domain from 2.1.7 to 2.0.0 to avoid a regression released in parse-domain. Addresses #​3717.
  • Upgraded pluralize from 3.1.0 to 7.0.0. Addressed in #​4205 and #​4206.
  • Upgraded semver from 5.6.0 to 5.7.0. Addressed in #​4112.
  • Upgraded send from 0.16.2 to 0.17.0. Addressed in #​4134.
  • Upgraded supports-color from 5.5.0 to 6.1.0. Addressed in #​4150.
  • Removed tar-fs. Addressed in #​4148.
  • Upgraded term-size from 1.2.0 to 2.0.0. Addressed in #​4148.
  • Upgraded tmp from 0.0.33 to 0.1.0. Addressed in #​4111.
  • Upgraded trash from 4.3.0 to 5.2.0. Addressed in #​4140.
  • Upgraded url-parse from 1.4.4 to 1.4.7. Addressed in #​4110.
  • Upgraded widest-line from 2.0.1 to 3.1.0. Addressed in #​4139.
  • We updated and removed some dependencies used for development.

v3.2.4

Compare Source

v3.2.3

Compare Source

v3.2.2

Compare Source

v3.2.1

Compare Source

v3.2.0: 3.2.0

Compare Source

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
  • The --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.
  • The Cypress Chrome extension now has a static ID of 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:

  • Problems logging in through GitHub in the Test Runner have been fixed. The GitHub login window no longer shows the browser support banner and the "Authorize cypress-io" button is no longer disabled. Fixes #​1251.
  • Fixed an issue when testing applications using older versions of jQuery. They now no longer throw item.first is not a function. Fixes #​2927.
  • Cypress now detects more instances of browser installations. Fixes #​3183 and #​3218.
  • Fixed issue with loading fixture files containing more than one . 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.
  • All third party @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.
  • The prompt to "Restore pages?" is no longer displayed within Chrome upon restarting a crashed Chrome window. Addresses #​2048.
  • cy.wrap() no longer throws an error when a non-jQuery wrapped DOM element is passed in as an argument. Fixes #​3549.
  • Fixed issue where all arguments passed to 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.
  • Cypress's recognition of websites attempting framebusting has been updated to include framebusting code wrapped within (). #​3267
  • When .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.
  • When 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:

  • We now display a warning when passing an argument to --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.
  • The number of logs printed when installing Cypress in docker has been reduced. Partially addresses #​1243.
  • The seeded Kitchen Sink examples have some new examples showing how to add a message to assertions, how to compare the text content of two elements, and how to make assertions about data attributes. The examples also have some small typo fixes. Fixes #​502. Addressed in #​3272, #​3287, and #​3700.
  • We now only mount internal servers on loopback. Addresses #​3712.
  • The instructions in Cypress's update window now include yarn update instructions alongside npm. Addresses #​2871.
  • The spec file's font weight has been increased within the Test Runner for better readability. Addressed in #​3065.
  • We improved the error message displayed when a record key is unrecognized during cypress run. Addresses #​1449.
  • We improved the typings when using Cypress.on to listen for window.alert events to allow for Sinon.stub. Fixes #​3451.
  • Fixed typo in typing for .trigger options. Addressed in #​3588.

Documentation Changes:

  • New Retryability doc #​1278
  • Updated --browser and browser args to accept path #​1419
  • Add documentation on how to 'accept' or 'reject' project transfer #​1474
  • Updated docs on explain how to run Chrome and Chromium browsers #​1339
  • Added {home} and {end} character sequences to cy.type() doc. Also wrote better description of what {downarrow} and {uparrow} character sequences actually do. #​1347
  • Added all newly supported HTTP methods to cy.request() doc.
  • Add new section to Debugging doc explaining whitelisting the Cypress Chrome extension.
  • Fixed code example for google analytics stubbing #​1454

Dependency Updates

  • Upgraded @cypress/commit-info from 2.1.1 to 2.1.2. #​3327.
  • Upgraded @cypress/xvfb from 1.2.3 to 1.2.4. #​3328.
  • Upgraded @ffmpeg-installer/ffmpeg from 1.0.15 to 1.0.17. #​3329.
  • Upgraded cachedir from 1.3.0 to 2.1.0. #​3660.
  • Upgraded chalk from 2.4.1 to 2.4.2. #​3362.
  • Upgraded chokidar from 1.6.0 to 1.7.0. #​3363.
  • Upgraded coffee-script from 1.12.5 to 1.12.7. #​3365.
  • Upgraded commander from 2.11.0 to 2.19.0. #​3366.
  • Upgraded common-tags from 1.4.0 to 1.8.0. #​3368.
  • Upgraded compression from 1.7.2 to 1.7.3. #​3379.
  • Upgraded cookie from 0.2.4 to 0.3.1. #​3380.
  • Upgraded cookie-parser from 1.4.3 to 1.4.4. #​3443.
  • Upgraded dependency-tree from 6.4.0 to 6.5.0. #​3381.
  • Upgraded electron-context-menu from 0.8.0 to 0.11.0. #​3383.
  • Upgraded electron-packager from 9.0.1 to 9.1.0. #​3384.
  • Upgraded electron-positioner from 3.0.0 to 3.0.1. #​3385.
  • Upgraded errorhandler from 1.1.1 to 1.5.0. #​3386.
  • Upgraded express from 4.16.2 to 4.16.4. #​3409.
  • Upgraded extract-zip from 1.6.6 to 1.6.7. #​3410.
  • Upgraded glob from 7.1.2 to 7.1.3. #​3412.
  • Upgraded image-size from 0.5.5 to 0.7.2. #​3413 and #​3500.
  • Upgraded is-ci from 1.0.10 to 1.2.1. #​3414.
  • Upgraded lodash from 4.17.4 to 4.17.11. #​3344.
  • Upgraded mocha-junit-reporter from 1.17.0 to 1.18.0. #​3417.
  • Upgraded moment from 2.23.0 to 2.24.0. #​3433.
  • Upgraded morgan from 1.3.0 to 1.9.1. #​3434.
  • Upgraded node-uuid from 1.4.1 to 1.4.8. #​3436.
  • Upgraded parse-domain from 2.0.0 to 2.1.7. #​3437.
  • Upgraded request from 2.87.0 to 2.88.0. #​3444.
  • Upgraded request-progress from 0.3.1 to 0.4.0. #​3445.
  • Upgraded request-promise from 4.1.1 to 4.2.4. #​3446 and #​3476.
  • Upgraded return-deep-diff from 0.2.9 to 0.3.0. #​3447.
  • Upgraded send from 0.14.2 to 0.16.2. #​3448.
  • Upgraded ssl-root-cas from 1.2.5 to 1.3.1. #​3449.
  • Upgraded supports-color from 5.1.0 to 5.5.0. #​3464.
  • Upgraded through from 2.3.6 to 2.3.8. #​3465.
  • Upgraded tmp from 0.0.31 to 0.0.33. #​3466.
  • Upgraded tough-cookie from 2.4.3 to 3.0.1. #​3477 and #​3659.
  • Upgraded trash from 4.0.0 to 4.3.0. #​3478.
  • Upgraded underscore.string from 3.3.4 to 3.3.5. #​3480.
  • Upgraded yauzl from 2.8.0 to 2.10.0. #​3481. Potentially fixes #​3515.
  • We also updated many dependencies used for development and removed some unused dependencies.

v3.1.2: 3.1.2

Compare Source

Released 11/18/2018

Bugfixes:

  • Fixed a regression caused in 3.1.1 where we attempted to set a property on an invalid cookie sent from a server. Fixes #​2724.
  • Fixed Cypress not correctly aborting long running connections (such as server sent events) on proxied requests. Fixes #​2612.
  • Fixed bug where tests were failing due to assertions causing Cypress to accidentally iterate through cross origin iframes. If you were seeing "random" cross origin errors, this likely fixes those issues. Fixes #​2784.
  • Fixed incorrectly setting charCode and keyCode when using .type() on a few different special characters such as {. Fixes #​2105.
  • Fixed another regression in 3.1.1 where passing undefined to a setTimeout caused Cypress to error. Fixes #​2719.
  • Fixed a bug in node core where Cypress would not show up in Windows for users on node >= 11. Fixes #​2667.
  • Fixed a bug with trashing assets in linux that caused recursive .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

  • Added type definitions for Cypress.moment(). Fixes #​2746.
  • We now display better error messages in the CLI when runs exceed billing limits. Fixes #​1689.

Dependency Updates

v3.1.1: 3.1.1

Compare Source

Released 11/2/2018

Known regressions in this release

  • #​2742 infinite .Trash-0 folder on Ubuntu 16
  • #​2724 setting HTTPS cookies in certain situations

Features:

Bugfixes:

  • Fixed a bug where Cypress would error when a secure cookie flag was set and then expired from an 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.
  • We now truncate filenames for screenshots to not exceed 255 characters in length. Previously there were cases where the screenshot filename would exceed 255 characters and error. Fixes #​2403 and #​2665.
  • Fixed issue when using 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.
  • We updated how we handle 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.
  • Fixed bug where mocked Dates using cy.clock() would not be an instance of Date. Fixes #​2570.
  • Directories within specs whose names contain . are now correctly read as directories instead of spec files within the Test Runner. Fixes #​2423.
  • Cypress no longer automatically takes screenshots of skipped tests. Fixes #​2368.
  • Fixed an issue where returning/resolving undefined from a cy.task() handler resulted in an incorrect runtime error. Fixes #​2553.
  • Update modifyObstructiveCode to account for framebusting techniques that use window.frameElement, so that Applications using this technique will run properly in Cypress. Fixes #​2582.
  • Fixed bug where only the first DOM element of an array of DOM elements would be blacked out after being passed as argument to blackout within cy.screenshot(). Fixes #​2508.
  • We fixed an issue involving timers after running cy.screenshot(). Fixes #​2432.
  • The Test Runner now retries node-originated errors from our internal API requests. Fixes #​2341
  • Fixed issue with multiple readyStateChanges with the same readyState. Fixes #​1150.
  • Fixed Type error being thrown for users using TypeScript 3. Fixes #​2363.

Misc

  • We are now collecting more environment variables from runs when run in Semaphore, GitLab, Bitbucket, Team Foundation Server, Codeship, and Shippable. Fixes #​2460, #​2358, #​2343, and #​2453.
  • We now display better error messages in the CLI when runs exceed billing limits. Fixes #​1689.
  • The Test Runner's search now resets when switching between projects. Fixes #​2512.
  • Fixed internal Cypress tests. Fixes #​2606.
  • Replaced use of new Buffer with Buffer.from. Fixes #​2626.
  • Whitelisted autoScrollingEnabled to be saved in state.json. Fixes #​2476.
  • Fixed internal test error beforeSpecRun is not a function. Fixes #​2401.
  • Switched our internal tests to use CircleCI workspaces. Fixes #​2398.
  • Update TypeScript definition for cy.screenshot() to include screenshot specific options. Fixes #​2654.
  • Urls printed within the CLI will now display as the color blue. Fixes #​2493.
  • We began bulk converting some of our codebase from CoffeeScript to JavaScript. Fixes #​2686 and #​2687.
  • We updated some of our internal ESLint rules to be more strict and also to help with CoffeeScript to JavaScript conversions. Fixes #​2688.

Dependency Updates

  • Upgraded zunder from 5.6.5 to 6.1.1 #​2541

Documentation Changes:

v3.1.0: 3.1.0

Compare Source

Released 8/13/2018

Summary:

  • Cypress can now run tests in parallel across multiple virtual machines, or can be parallelized on a single machine. Cypress will automatically figure out, detect, and load balance all of your specs in the fastest and most efficient way possible. There is no configuration other than passing a --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.
  • Beyond parallelization, you now have the ability to group multiple runs with each other so that they show up together (grouped) in the Dashboard. This enables you to test different applications, groups of specs, or different environments (like development, staging, production) and see all of the results together. We know how important cross browser testing is to everyone, so we built this to lead directly into aggregating the results of multiple browsers into a single run.
  • The Dashboard Service has been updated to show you more visual information about what happened during a run. You can see how specs were parallelized and you can calculate the effect of adding or removing machines to help reduce the overall run time.

Features:

Bugfixes:

  • We've finally tracked down the source of specs "hanging" and failing to start when running Electron. We finally tracked it down to a bug in Electron itself with setting menu when using offscreen rendering. Fixes #​2322 and #​2294.
  • Clicking on svg elements is now working. 3.0.2 introduced a bug that would throw an 'illegal invocation' error. Fixes #​2245 and #​2252 and #​2258 and #​2277 and #​2288.
  • Fixed a regression in 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.
  • Fixed a small visual bug where failed commands were not aligned to other commands. Fixes #​2314.
  • Fixes a race condition where async electron browser commands came in after the renderer had been destroyed, causing failures. Fixes #​2321.

Misc

  • When recording to the Dashboard Service, we now provide estimated durations per spec directly within the standard output, as long as the spec has had enough run history for this to be determined. Fixes #​2276.
  • When using the new --parallel or --group feature, we now visually indicate that to you in the standard output when recording. Fixes #​2275.
  • We have added support for more CI providers to automatically detect and show more relevant information in the Dashboard, instead of showing 'Unknown'. Fixes #​2146.
  • We have added better checks and reliability for detecting runs in Jenkins. Fixes #​1990.
  • The built in 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.
  • The Desktop-GUI has been updated to get the new routes provided by the Cypress API for runs. Fixes #​2189.
  • Cypress now retries multiple times (with a backoff strategy) when communicating with our API fails while recording runs. This will provide better feedback in situations when the API is temporarily unavailable. Fixes #​1590.
  • When Cypress retries due to an API timeout or failure it now displays a very nice message indicating to you the delay and number of retries left. Fixes #​2280.
  • We've added parallelization to our own internal tests for the driver and the desktop-gui. We've been able to reduce the number of concurrent instances our tests use by 4, and shaved about 6 minutes off of each build. Faster with less resources. Fixes #​2325.

Documentation Changes:

v3.0.1: 3.0.1

Compare Source

Released 5/30/2018

Bugfixes:

  • Seeded KitchenSink tests no longer fail. Fixes #​1812.
  • The binary cache now correctly works and will not reinstall Cypress if an existing version is already installed. Fixes #​1813.
  • Closing the Electron browser and then opening Chrome no longer causes cy.screenshot() to fail. Fixes #​1820.
  • Fixed a bug with Windows users seeing crashes with tty.getWindowSize is not a function. Fixes #​1815 and #​1817.

v3.0.0: 3.0.0

Compare Source

Released 5/29/2018

Summary:

  • 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, scaffold, seed, talk to your database, or anything else useful on a backend.
  • cy.screenshot() has been rewritten from the ground up. It now takes a screenshot of only the application under test by default. It also can take full page screenshots or element only screenshots. This is the first step of Cypress Dashboard support for screenshot diffing.
  • When running with 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.
  • The Dashboard has been upgraded to make it easier to understand the results of each spec run. This was done in anticipation of providing you the ability to parallelize and load balance your spec files automatically in CI.
  • We are now capturing the performance and timings data of every test when using --record mode and are beginning to offer the first analytics and insights into the health of your tests on our Dashboard service.
  • Cypress now caches globally per version which prevents it from being installed multiple times across projects.

Breaking Changes:

  • We now run each spec file in isolation from one another. This shouldn't technically break anything, but if you have set up your tests in a way that requires the state of a previous spec file, this could potentially break your tests. This will go a long ways towards reducing problems we were seeing with long runs in CI. Fixes #​431, #​681, #​1589, #​1539, and #​1692.
  • The environment variable CYPRESS_BINARY_VERSION has been removed. You should use the equivalent environment variable CYPRESS_INSTALL_BINARY instead.
  • The environment variable 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.
  • Cypress no longer copies screenshots and videos to artifacts for CircleCI. Copying artifacts should be left up to the user to handle themselves in their circle.yml file. Fixes #​1592.
  • The standard output has been redesigned to better visualize spec files running in isolation and to be more visually appealing. This may break any specialized logic written that expected the standard output to be structured in a specific way or contain specific words. Fixes #​1588.
  • cy.screenshot() no longer takes a screenshot of the runner by default. Instead it will hide the runner, remove application scaling and then scroll to take a full page picture of your application.
  • before and after hooks within a support file now run before/after every spec file, instead of only once before/after the entire run. #​681

Features:

  • There is a new cy.task() command for executing any arbitrary node code.
  • You can now run multiple specs by passing a glob to the --spec argument of cypress run. Fixes #​263, #​416 and #​681.
  • There is a new Screenshot API and new cy.screenshot() options that allow you set defaults for how screenshots are captured, whether to scale your app, disable timers and animations, or which elements to black out in the screenshot. You can also set defaults for whether to automatically take screenshots when there are test failures or whether to wait for the Command Log to synchronize before taking the screenshot. Fixes #​1424.
  • cy.screenshot() can now be chained off of commands that yield a DOM element and will only take a screenshot that element.
  • During install of cypress, the Cypress binary is now downloaded to a global cache. This prevents multiple projects from downloading the same Cypress version. Fixes #​1300.
  • The seeded 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.
  • Cypress now watches all the plugins file's entire dependency tree to make iterating on plugins easier. Fixes #​1407.
  • Videos will now be saved locally with a filename named after the associated spec file that it represents. Fixes #​980.
  • The Test Runner now displays skipped tests differently than pending tests. #​244.
  • Standard output now displays the number of skipped tests within the summary output during cypress run. #​1559.
  • The url to view the run in the Dashboard is now printed to output during cypress run. #​494.
  • We now print the browser and browser version run in the output during cypress run. #​833.
  • The build number and url to CI for tests run within Drone are now captured and displayed on the run within the Dashboard. #​1709.

Bugfixes:

  • Cypress no longer crashes when attempting to proxy a websocket connection that fails. Fixes #​556.
  • Asserting that an attribute equals a falsy value no longer fails when the value was falsy. Fixes #​831 and #​1491.
  • Snapshots now ignore stylesheets with media="print". Fixes #​1568.
  • Fixed issue where the Cypress window was being returned instead of AUT's window. Fixes #​1436.
  • The 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.
  • Fixed issue when using TypeScript that caused namespace errors to be thrown. Fixes #​1627.
  • Fixed error message on .type() and .clear() when typing into non-typeable elements or clearing non-clearable elements to accurately list the elements allowed. Fixes #​1650.
  • Added Chrome flag --disable-blink-features=RootLayerScrolling to prevent the application under test from "shaking" in recent versions of Chrome. Fixes #​1620.
  • Fixed issue where some TTY characters were not properly formatted in the terminal for Windows during cypress run. Fixes #​1143 and #​1550.
  • Removed an extraneous error display from Electron during cypress run about a "transparent titlebar" setting. Fixes #​1745.

Misc:

  • We are now aggressively turning on colors when running in CI. If you're using Jenkins and do not have an ANSI color plugin installed, you can turn off colors with the NO_COLOR=1 environment variable. Fixes #​1747 and #​1748.
  • When running cypress run --record on forked MR'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.
  • Searching in the Test Runner now filters out any non-matching folders. Fixes #​1706.
  • Duplicate, subsequent logs in the Command Log are now collapsed and can be expanded to view all logs. Fixes #​1580.
  • We now throw a descriptive error if an alias using .as() was defined starting with the @ character. #​1643.
  • We now pass the --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.
  • We now pass any reporter errors along and provide a stack if a custom reporter you've provided does not exist. Fixes #​1192.
  • You can now pass a normal object to cypress.open() or cypress.run() through the Module API, just as you would from the command line. #​1442.
  • Added type definitions for Cypress.off and Cypress.log. Fixes #​1110 and #​1591.
  • Update type definitions for cy.screenshot() to reflect new changes to command's options. Fixes #​1753.
  • The type definition for .filter() now correctly supports a function argument.
  • The type definition for .scrollIntoView() no longer errors when passed a 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 will error and exit with status 1 if no specs were found during cypress run. Fixes #​1585.
  • We are now counting and aggregating the stats at the end of test runs separately from Mocha. Cypress considers a test to be the 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.
  • The minimum viewport size has been lowered from 200 pixels to 20 pixels. Fixes #​1169 and #​1444.
  • Internal changes to our API structure and communication. Fixes #​1170, #​1413, #​1415.
  • We output a much more complete test results object when using cypress as a module. Fixes #​1248.
  • Added keywords to Cypress NPM package. Fixes #​1508.
  • Centered the animating icon in the Test runner when 'running'. Fixes #​1695.
  • We made some changes to internal references of headed and headless to be more specific and instead reference run mode and interactive mode. Fixes #​1140.
  • The test name text is now selectable inside the Command Log. Fixes #​1476.
  • Minor improvements to contributing docs and scripts. Fixes #​1665.
  • We now collect Semaphore CI params and provide URL's to click into the builds from the Dashboard. Fixes #​1785.
  • Config overrides coming from the CLI or environment variables are now validated the same way as if they've been set in cypress.json. Fixes #​1783.
  • There is a better / more helpful experience around passing unknown options to the CLI. Fixes #​837.
  • Display an empty message when there is no commit information on recorded runs. Fixes #​1809.

Documentation Changes:

v2.5.0

Compare Source

v2.4.1

Compare Source

v2.4.0

Compare Source

v2.3.0

Compare Source

v2.2.0

Compare Source

v2.1.0: 2.1.0

Compare Source

Released 3/1/2018

Bugfixes:

  • 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. 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:

  • The Selector Playground has been updated to automatically prefer 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:

v2.0.0: 2.0.0

Compare Source

Released 2/15/2018

Breaking Changes:

  • The built in default Electron browser has been bumped from version 53 to 59. This version represents the version of Chromium that Electron is using. In other words, running cypress run (or via Electron) will be like running your tests in Chrome 59 now. Although it is unlikely this would actually break any of your tests - it is technically possible they could behave differently. Fixes #​895 and #​891 and #​823 and #​860 and #​1011 and #​1252 and #​1276.
  • We are now detecting and automatically stripping code that obstructs Cypress from being able to test your application. Specifically, we are removing JavaScript code that tries to prevent clickjacking and framebusting. We have written very conservative rules that do their best to only strip these specific JS snippets, but it is technically possible that it may unintentionally rewrite valid JS if they match the regexp patterns. There is a new configuration option called modifyObstructiveCode that is true by default. If you are experiencing problems after upgrading, you can turn this off and this will disable modifying your JS code. If you were using Cypress and upon visiting your website you would experience seemingly "random" redirects - these problems should now be eliminated. Fixes #​886 and #​1245 and #​1064 and #​992 and #​692 and #​352.
  • We are now clearing the browser's disk cache each time it opens (before any tests run). This means that any files that have been cached from Cache-Control headers will be cleaned and removed. In the future, we will expose a new cy.clearCache() method to provide finer grained control of clearing the cache on a per test basis. But for now, this is an improvement. Fixes #​1124.
  • The --spec option is now normalized against the current working directory cwd instead of the project that you are running Cypress in. That means passing a path from the command line to a spec file will now work even when the project path is not cwd. Fixes #​1159.

Bugfixes:

  • blacklistHosts would occasionally not work if you were blacklisting a host that had previously cached a file. In this case, the browser would serve it from disk and not make an actual HTTP request. This issue has been solved by clearing the cache when the browser opens. Fixes #​1154.
  • blacklistHosts is now correctly accepted via the --config CLI flag.
  • Spies and Stubs created with cy.stub() and cy.spy() will now retry their assertions when utilized from an alias. Fixes #​1156.
  • Basic auth is working again in Chrome 63 and Chrome 64. We "for real" fixed it this time by adding auth headers automatically at the network proxy layer and bypassed the browser altogether. We automatically apply auth headers if you provide a username/password in the URL of a cy.visit(url). We also added a new auth option to specify the username/password using cy.visit(url, options). All of the requests that match the origin of the url will have the Authorization: Basic <...> headers added. Fixes #​1288.
  • Fixed domain parsing failures when local or localhost was not used as a tld. Fixes #​1292 and #​1278.
  • Removed the flag --disable-background-networking from the Chrome launch args to fix problems in CI that would throttle XHR callbacks by up to 20-30 seconds. Fixes #​1320.

Misc:

  • We now properly display nested objects and arrays that come from cypress.json in the Settings tab in the Desktop Application.
  • There's now a proper "empty view" when you go to setup your project to record on our Dashboard and you have not created any Organizations. Fixes #​1306.
  • Removed the message about private projects requiring a paid account in the future. There will be a free tier including private projects. Fixes #​827.
  • We moved the location of the browser's disk cache. That means that if you've been using Cypress for a really long time - you may have built up quite a large existing cache (in the hundreds of mb). Before upgrading, you should open the browser and then manually clear the Cache. Or - if you have already upgraded to 2.0.0 delete the following folders:
    • OSX: ~/Library/Caches/Cypress
    • Linux: ~/.cache/Cypress
    • Windows: %APPDATA%\Cypress\cy\production\browsers

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this MR and you won't be reminded about this update again.


  • If you want to rebase/retry this MR, check this box

This MR has been generated by Renovate Bot.

Merge request reports

Loading