chore(deps): update dependency @cypress/webpack-dev-server to v3
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
v3.10.1
v3.10.0
v3.9.0
v3.8.0: 3.8.0
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
--tagargument 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 anoptionsobject to allow changing logging options. Addresses #1450. - Cypress will now attempt to use the
unzipbinary duringcypress installbefore 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
--configor--envcommand line flags. Fixes #5466. - We fixed a regression in 3.5.0 where a supplied
Cookieheader during "cy.visit()visit orcy.request()would be overwritten by theCookieheader 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)orrotateY(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.
-
envconfiguration 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
0forcy.viewport()Addresses #5871 and #5892. - The Test Runner now shows a non-Chrome logo for browsers passed in via
config.browserthat 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.requestwill 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-escapesfrom4.2.1to4.3.0. Addressed in #5815. - Upgraded
electron-context-menufrom0.11.0to0.15.1. Addressed in #5495.
v3.7.4
v3.7.3
v3.7.2
v3.7.1
v3.7.0: 3.7.0
Released 11/27/2019
Features:
- Cypress now includes the full list of browsers found and their properties within the Cypress configuration. This means that the
browsersarray is also editable within plugins by accessingconfig.browsersvia 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 in order to display the proper git information for recorded runs. Fixes #5609.
Bugfixes:
- Fixed a regression in 3.5.0 where a
cy.visitthat 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.visitor in acy.requestwith a customDomainthat 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.typeto send duplicate modifier keys. Fixes #5622. - We fixed a regression in 3.6.1 where cy.request() with
followRedirect: falsewould fail if aSet-Cookieheader was present in the response. Fixes #5654. - The context of
windowis no longerundefinedwithin the application under test when called within asetTimeoutduring 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-idandgroupflag arguments duringcypress 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.keysassertion now correctly display. Fixes #753. - We fixed an issue where Cypress would throw an error when using
cy.visit()on acleverapp.iodomain. Fixes #5722. - Fixed a bug where fixtures consisting only of
nullwould 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: fixedand 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-domainfrom2.0.0to2.3.4. Addressed in #5726.
v3.6.1: 3.6.1
Released 11/08/2019
Bugfixes:
- The Electron browser no longer hangs when testing applications that have a prompt in a
beforeunloadhandler. 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 sameoptionsObject, Cypress now correctly sets the new cookie instead of the one passed into a previouscy.setCookie(). Fixes #2701. - We fixed a regression in 3.5.0 where
cy.clearCookie()would not act as expected when using certainbaseUrls. 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 nullon 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
clickevent 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 undefinedif the error's stack wasundefined. 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.deferappearing 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
Released 10/31/2019
Features:
-
testFilesnow 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:exceptionhandler, 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 verifywhen running as a non-root user on a non-Windows machine. We now always set the--no-sandboxflag 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()orcy.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
clickevents 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 typedate,time, anddatetime-localso 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 duringcy.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-handlebarswithsquirrellyto reduce dependency size. Addressed in #5521. - Upgraded
graceful-fsfrom4.2.0to4.2.3. Addressed in #5497.
v3.5.3
v3.5.2
v3.5.1
v3.5.0: 3.5.0
Released 10/23/2019
Features:
- We now record video during
cypress runin Chrome, Chromium, and Canary browsers. This requires passing the name or path of the Chrome browser to the--browserflag. Addresses #4608. - There is a new
.rightclick()command to right click on DOM elements. Addresses #53. - Cypress now accepts a
--config-fileargument to specify a different file to be used for Cypress configuration. You can also passfalseto the--config-fileto not use any configuration file. Addresses #1369. - You can now use your system's Node version by setting the
nodeVersiontosystemin your configuration. This Node version will be used to build files in yourintegrationFolderand "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 acceptsposition,x, andyarguments. Addresses #116. - "
.dblclick()dblclick now acceptsforceandmultiplein itsoptions. Addresses #116. -
.screenshot()now accepts apaddingargument when screenshotting elements that will alter the dimensions of the screenshot of the element. Addresses #4440. -
cy.visit()now accepts aqsoption 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 foriphone-xr,iphone-x,samsung-s10andsamsung-note9. Addresses #4967. - Passing a
~toCYPRESS_CACHE_FOLDERwill automatically resolve to the user's home directory. Addresses #5386.
Bugfixes:
- "
.dblclick()dblclick and.click()now fire all appropriate mouse events includingmouseover,mousemove,mouseout,pointerdown,pointerup, andpointermove. 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
maxLengthwhen using .type() on an input. Fixes #4587. - We fixed an issue where
datetime-localinputs would not have theirvalueupdated during.type(). Fixes #2613. -
.type()now allows you to type-into number inputs with text selection. Fixes #4767. - We now fire an
inputevent 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
codeproperty during keyboard events triggered during.type(). Fixes #3722 - Cypress now sends
screenXandscreenYproperties 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 toERR_SSL_VERSION_OR_CIPHER_MISMATCHerrors. Fixes #771. - We fixed a bug introduced in 3.3.0 where some HTTPS sites failed to load during
cy.visit()andcy.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-typeapplication/vnd.api+jsonto JSON. Fixes #5165. - XHR responses in
cy.route()that exceed 80kb in size no longer fail with anERR_EMPTY_RESPONSEerror. Fixes #76. - Cypress no longer crashes with
dest.enderrors on Windows machines. Fixes #2181. - The
onFocusevent 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 arereadonly. This fixes an issue introduced in 3.4.1. Fixes #4874. - Cypress no longer crashes with a
"port" option should be a number or stringerror 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 thecommandTimeout. Fixes #1075, #2478, #3349, and #4790. - We fixed a bug where Cypress would exit with an
ENOTCONNerror 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
.jsfile containing Unicode transferred usingContent-Encoding: gzipthat 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/cypressfolder. 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 Xvfbwas being thrown because Xvfb could not start within the allowed time. Addresses #5110. - We now warn when using
cypress runfrom 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_ENVenvironment variable will now throw an error. Addresses #1621. - We now throw a better error when passing in an Object to the
browserargument of the Browser Launch API explaining that a String is expected instead. Addresses #4966. - An error will now be thrown if an invalid
nameorvalueis supplied tocy.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 anoptionsObject 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 runno 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
localhostto be inNO_PROXY. To make Cypress send traffic forlocalhostthrough the proxy, you will now have to pass<-loopback>inNO_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 usingfetchwith 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 anoptionsobject as an argument. Addresses #5341. - We added
failuresandmessagetypes 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 newposition,x, andyarguments plusforceandmultipleoptions. - Added the
--config-fileargument to Command Line and Module API doc. - Added the
nodeVersionargument 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.jsonfile since this is not configurable via a--config-fileargument. - Added
qsoption tocy.visit()with examples. - Added
paddingoption tocy.screenshot()with examples. - Updated the
cy.viewport()doc to have a max viewport size of4000. - 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-fiddleplugin 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
urlin thecy.route()doc. - Mention that the
file://prefix is not supported in thecy.visit()doc. - Add a note about when passing
<-loopback>inNO_PROXYis 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 runand when selecting Electron browser incypress openfrom61to73. Addressed in #4720. - Upgraded
electronfrom2.0.18to5.0.10. Addressed in #4720. - Upgraded
nodefrom8.9.3to12.0.0. Addressed in #4720. - Upgaded
jqueryfrom2.2.4to3.1.1. Addressed in #1229. - Upgraded
sanitize-filenamefrom1.6.1to1.6.3. Addressed in #5216. - Upgraded
@cypress/get-windows-proxyfrom1.5.4to1.6.0. Addressed in #5108.
v3.4.1: 3.4.1
Released 7/29/2019
Dashboard Features:
- We’re excited to announce GitHub integration for the Cypress Dashboard. You can now get timely and useful test run information within pull-requests via status checks and pull-request comments. Learn all about it on our blog. Addresses #981.
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
andchainable getter. Fixes #4833. - The
includeandincludesassertion chainers now correctly work the same ascontainandcontainsassertion chainers. Fixes #4833. - Cypress now correctly works offline on Windows when visiting a localhost URL. Fixes #4763.
-
cy.type()now factors in thereadonlyproperty of<input />elements, and will wait for this property to befalsebefore attempting to type. Fixes #1246. - Variables beginning with
topandlocationin your application code are no longer modified whenmodifyObstructiveCodeistrue. 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-reporterdependency so that it no longer errors in certain situations when trying to access duration on tests. Fixes #4654. - We upgraded the
lodashdependency 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
npmpackage. 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 tocy.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:
- We have new instructions on how to set up GitHub Integration with the Cypress Dashboard.
- Updated instructions for adding types for custom commands in the TypeScript Support doc. Addressed in #1901
- Added a section about video encoding and how to speed up the encoding time to Screenshots and Videos doc. Addressed in #1880
Dependency Updates
- Upgraded
@ffmpeg-installer/ffmpegfrom1.0.17to1.0.19. Addressed in #4792. - Upgraded
browserifyfrom13.3.0to16.3.0. Addressed in #4751, #4825 and #4826. - Upgraded
data-uri-to-bufferfrom1.2.0to2.0.1. Addressed in #4622. - Upgraded
duplexifyfrom4.0.0to4.1.1. Addressed in #4853. - Upgraded
graceful-fsfrom4.1.15to4.2.0. Addressed in #4818. - Upgraded
lodashfrom4.17.11to4.17.15. Addressed in #4684, #4709, #4784. - Upgraded
mocha-junit-reporterfrom1.23.0to1.23.1. Addressed in #4785. - Upgraded
p-queuefrom1.2.0to6.1.0. Addressed in #4750. - Upgraded
semverfrom6.0.0to6.3.0. Addressed in #4797. - We also updated and removed some dependencies used for development.
v3.4.0: 3.4.0
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, andcontain.valueassertions 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 downloadthat 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 CSSpointer-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 theonAnyRequest,onAnyResponse, andonAnyAbortcallback 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 optionalwithinSubjectargument. - 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-streamsince it was no longer being used. Addressed in #4619. - Upgraded
@cypress/commit-infofrom2.1.3to2.1.4. Addressed in #4597. - Upgraded
@cypress/react-tooltipfrom0.4.0to0.5.0. Addressed in #4610. - Upgraded
errorhandlerfrom1.5.0to1.5.1. Addressed in #4618. - Upgraded
fs-extrafrom8.0.1to8.1.0. Addressed in #4620. - Upgraded
request-progressfrom0.4.0to3.0.0. Addressed in #4584. - We also updated and removed some dependencies used for development.
v3.3.1: 3.3.1
Released 5/23/2019
News:
- We've written a blog post about the 300% increase in proxy performance delivered in 3.3.0.
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-datauploads to hang. Fixes #4240, #4252, and #4253. - Fixed issue where support for
have.focus,not.have.focus,be.focusedandnot.be.focusedassertions 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
Xvfbin 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
Released 5/17/2019
Features:
- Cypress now automatically reads from your system's
HTTP_PROXY,HTTPS_PROXY, andNO_PROXYenvironment 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.focusedandnot.be.focusedassertions 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()orcy.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()andcy.request()now support new optionsretryOnStatusCodeFailureandretryOnNetworkFailureto 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 resolvedoptionsarguments. 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 runnow supports scripts oftype="module". Fixes #3696. - Exposed
Cypress.isCy()method to check if a value is a valid instance ofcyor acychainable. 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_OPTIONSenvironment 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 yieldsundefined. #3837 - Fixed a regression introduced in 3.2.0 that caused
cy.fixture()to throw aEISDIRerror if a directory had the same name as a file within that same directory. Fixes #3739. -
user-agentheaders sent as arguments tocy.request()andcy.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 verifyandcypress runcommands by starting its own Xvfb server on Linux if the first attempt fails due to possibleDISPLAYmisconfiguration. Addresses #4034. - Cypress now properly handles typing JavaScript object prototype methods (like
hasOwnProperty) into .type(). Fixes #3423. - We now set the
formoption totrueif theContent-Typeheader equalsapplication/x-www-form-urlencodedandjsonis not already set by a user. This fixes a situation where Cypress would try to parse thebodyas 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
--browserargument. 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
ffmpegbuilds 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-aliveheader 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
timeoutoption incy.hash(). Fixes #3844. - Fixed type definition for
matchassertion so that it now only acceptsRegExptype arguments. Fixes #2578. - The
.trigger()type definition now expects itsoptionsto beObjectLike. Addressed in #3809. - The
cy.clock()type definition now allows for typeDate. Fixed in #4106. - Added type definition for undocumented
Cypress.LocalStorage.clearmethod. 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:
- New Proxy Configuration doc. Addressed in #1486.
- Added
{insert},{pageup}, and{pagedown}as supported special character sequences to.type(). Addressed in #1567. - Added newly supported
focusassertion to Assertions doc. Addresses #1372. - Added new options
retryOnStatusCodeFailureandretryOnNetworkFailuretocy.visit()andcy.request(). - Updated install instructions for Windows on how to target 64bit and 32bit infrastructures. Addressed in #1568.
- Updated
.its()and.invoke()docs to better explain how default assertions are handled. Addresses #1643. - Updated our Roadmap to more closely reflect the work we are doing. Addressed in #1567.
- Added a section about how to request our new Open Source Plan in the Dashboard Service doc. Addressed in #1567.
Dependency Updates
- Upgraded
commit-infofrom2.1.2to2.1.2. Addressed in #4045 - Upgraded
data-uri-to-bufferfrom0.0.4to1.2.0. Addresses #4152. - Upgraded
electronfrom1.8.2to2.0.18. Addresses #4000. - Upgraded
electron-packagerfrom9.1.0to13.1.1. Addresses #4155. - Upgraded
express-handlebarsfrom3.0.0to3.0.2. Addressed in #4086. - Upgraded
find-processfrom1.2.1to1.4.1. Addressed in #4087. - Upgraded
getosfrom2.8.4to3.1.1. Addressed in #4222. - Upgraded
http-status-codesfrom1.3.0to1.3.2. Addressed in #3949. - Upgraded
jimpfrom0.6.0to0.6.4. Addressed in #4097. - Removed
method-override. Addressed in #4209. - Upgraded
nodefrom8.2.1to8.9.3. Addressed in #4001. - Downgraded
parse-domainfrom 2.1.7 to 2.0.0 to avoid a regression released inparse-domain. Addresses #3717. - Upgraded
pluralizefrom3.1.0to7.0.0. Addressed in #4205 and #4206. - Upgraded
semverfrom5.6.0to5.7.0. Addressed in #4112. - Upgraded
sendfrom0.16.2to0.17.0. Addressed in #4134. - Upgraded
supports-colorfrom5.5.0to6.1.0. Addressed in #4150. - Removed
tar-fs. Addressed in #4148. - Upgraded
term-sizefrom1.2.0to2.0.0. Addressed in #4148. - Upgraded
tmpfrom0.0.33to0.1.0. Addressed in #4111. - Upgraded
trashfrom4.3.0to5.2.0. Addressed in #4140. - Upgraded
url-parsefrom1.4.4to1.4.7. Addressed in #4110. - Upgraded
widest-linefrom2.0.1to3.1.0. Addressed in #4139. - We updated and removed some dependencies used for development.
v3.2.4
v3.2.3
v3.2.2
v3.2.1
v3.2.0: 3.2.0
Released 3/15/2019
Features:
-
cy.visit()has been expanded to allow optionsurl,method,body, andheaders. This allowscy.visit()to be called with aPOSTmethod or with headers likeAccept-LanguageorAuthorization. Fixes #1500, #1904 and #908. -
cy.request()now allows any valid HTTPmethodto be used includingTRACE,COPY,LOCK,MKCOL,MOVE,PURGE,PROPFIND,PROPPATCH,UNLOCK,REPORT,MKACTIVITY,CHECKOUT,MERGE,M-SEARCH,NOTIFY,SUBSCRIBE,UNSUBSCRIBE,SEARCH, andCONNECT. Addresses #1302 - The
--browserargument of the Command Line and thebrowserargument 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
browserinstallations. 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
@typeshave been moved from CypressdependenciesintodevDependencies. 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
setTimeoutorsetIntervalwere 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()returnsundefinedit 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 toundefineduntil it meets the requirements of the assertion or thecy.wrap()command times out. Fixes #3241.
Misc:
- We now display a warning when passing an argument to
--specthat 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
dataattributes. 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
yarnupdate instructions alongsidenpm. 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.onto listen forwindow.alertevents to allow forSinon.stub. Fixes #3451. - Fixed typo in typing for
.triggeroptions. Addressed in #3588.
Documentation Changes:
- New Retryability doc #1278
- Updated
--browserandbrowserargs to acceptpath#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 tocy.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-infofrom2.1.1to2.1.2. #3327. - Upgraded
@cypress/xvfbfrom1.2.3to1.2.4. #3328. - Upgraded
@ffmpeg-installer/ffmpegfrom1.0.15to1.0.17. #3329. - Upgraded
cachedirfrom1.3.0to2.1.0. #3660. - Upgraded
chalkfrom2.4.1to2.4.2. #3362. - Upgraded
chokidarfrom1.6.0to1.7.0. #3363. - Upgraded
coffee-scriptfrom1.12.5to1.12.7. #3365. - Upgraded
commanderfrom2.11.0to2.19.0. #3366. - Upgraded
common-tagsfrom1.4.0to1.8.0. #3368. - Upgraded
compressionfrom1.7.2to1.7.3. #3379. - Upgraded
cookiefrom0.2.4to0.3.1. #3380. - Upgraded
cookie-parserfrom1.4.3to1.4.4. #3443. - Upgraded
dependency-treefrom6.4.0to6.5.0. #3381. - Upgraded
electron-context-menufrom0.8.0to0.11.0. #3383. - Upgraded
electron-packagerfrom9.0.1to9.1.0. #3384. - Upgraded
electron-positionerfrom3.0.0to3.0.1. #3385. - Upgraded
errorhandlerfrom1.1.1to1.5.0. #3386. - Upgraded
expressfrom4.16.2to4.16.4. #3409. - Upgraded
extract-zipfrom1.6.6to1.6.7. #3410. - Upgraded
globfrom7.1.2to7.1.3. #3412. - Upgraded
image-sizefrom0.5.5to0.7.2. #3413 and #3500. - Upgraded
is-cifrom1.0.10to1.2.1. #3414. - Upgraded
lodashfrom4.17.4to4.17.11. #3344. - Upgraded
mocha-junit-reporterfrom1.17.0to1.18.0. #3417. - Upgraded
momentfrom2.23.0to2.24.0. #3433. - Upgraded
morganfrom1.3.0to1.9.1. #3434. - Upgraded
node-uuidfrom1.4.1to1.4.8. #3436. - Upgraded
parse-domainfrom2.0.0to2.1.7. #3437. - Upgraded
requestfrom2.87.0to2.88.0. #3444. - Upgraded
request-progressfrom0.3.1to0.4.0. #3445. - Upgraded
request-promisefrom4.1.1to4.2.4. #3446 and #3476. - Upgraded
return-deep-difffrom0.2.9to0.3.0. #3447. - Upgraded
sendfrom0.14.2to0.16.2. #3448. - Upgraded
ssl-root-casfrom1.2.5to1.3.1. #3449. - Upgraded
supports-colorfrom5.1.0to5.5.0. #3464. - Upgraded
throughfrom2.3.6to2.3.8. #3465. - Upgraded
tmpfrom0.0.31to0.0.33. #3466. - Upgraded
tough-cookiefrom2.4.3to3.0.1. #3477 and #3659. - Upgraded
trashfrom4.0.0to4.3.0. #3478. - Upgraded
underscore.stringfrom3.3.4to3.3.5. #3480. - Upgraded
yauzlfrom2.8.0to2.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
Released 11/18/2018
Bugfixes:
- Fixed a regression caused in
3.1.1where 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
charCodeandkeyCodewhen using .type() on a few different special characters such as{. Fixes #2105. - Fixed another regression in
3.1.1where passingundefinedto asetTimeoutcaused Cypress to error. Fixes #2719. - Fixed a bug in node core where Cypress would not show up in
Windowsfor users onnode >= 11. Fixes #2667. - Fixed a bug with trashing assets in linux that caused recursive
.Trashfiles to show up. We now have opted to actuallyrm -rfthe 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
- Removed
progress#2733.
v3.1.1: 3.1.1
Released 11/2/2018
Known regressions in this release
Features:
- You can now pass a
flagoption tocy.writeFile(). The following flags are available. Fixes #1249. - There is a new
CYPRESS_DOWNLOAD_MIRRORenvironment variable for installing Cypress at a mirror url. Fixes #2609. - The Module API now returns the
runUrlfromcypress.run(). Fixes #2596. - Specs now properly display as focused when navigating through specs via the keyboard. Fixes #2273.
Bugfixes:
- Fixed a bug where Cypress would error when a secure cookie flag was set and then expired from an
httpsurl 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.jsonfile. The object is now correctly written to the JSON file instead of a string. Fixes #2373. - We updated how we handle
trashAssetsBeforeRunsbehavior. We now trash the contents of thescreenshotsFolderandvideosFolderdirectories 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 ofDate. 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
undefinedfrom acy.task()handler resulted in an incorrect runtime error. Fixes #2553. - Update
modifyObstructiveCodeto account for framebusting techniques that usewindow.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
blackoutwithincy.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
readyStateChangeswith the samereadyState. 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 BufferwithBuffer.from. Fixes #2626. - Whitelisted
autoScrollingEnabledto be saved instate.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 common-tags from
^1.4.0to^1.8.0#2415 - Upgraded @cypress/browserify-preprocessor from
1.1.0to1.1.1#2513 - Upgraded lolex from
^1.5.2to^3.0.0#2570
- Upgraded @types/jquery from
3.2.16to3.3.6#2363
- Upgraded zunder from
5.6.5to6.1.1#2541
Documentation Changes:
- Added
flagoption tocy.writeFile()doc. - Added
runUrlto returned run in Module API doc. - Documented new
CYPRESS_DOWNLOAD_MIRRORflag and rewrote advanced install instructions to be clearer in Installing Cypress doc.
v3.1.0: 3.1.0
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
--parallelflag 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:
-
cypress runaccepts a new--parallelflag to run specs in parallel. Fixes #1690 and #64 and #2297. -
cypress runaccepts a new--groupflag to group multiple spec files within a single run. Fixes #2169 -
cypress runaccepts a new --ci-build-id flag. Fixes #2153.
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
menuwhen 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.2that caused typing{enter}not to submit a form when there were<button>elements other thantype='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
--parallelor--groupfeature, 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-preprocessorwas bumped to1.1.0. This supports more JavaScript features by default, including async/await, object rest spread, and class properties. Fixes #2254. -
cypress runnow creates a new browser profile per run per browser, but keeps the same browser profile for interactive mode withcypress 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:
- Added
Parallelizationdoc. - Update
Dashboard Servicedoc with new screenshots and run sections. - Update
Command Linedoc with new flags and alphabetized flags.
v3.0.1: 3.0.1
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
Electronbrowser and then openingChromeno longer causescy.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
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 runwe 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
--recordmode 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_VERSIONhas been removed. You should use the equivalent environment variableCYPRESS_INSTALL_BINARYinstead. - The environment variable
CYPRESS_SKIP_BINARY_INSTALLhas been removed. To skip the binary install, setCYPRESS_INSTALL_BINARY=0. -
screenshotOnHeadlessFailurehas been removed as an option incypress.json. Instead you can now control this behavior directly with code by settingscreenshotOnRunFailuretofalsewithin the new Screenshot API. Fixes #1140 and #1754. -
trashAssetsBeforeHeadlessRunshas been renamed totrashAssetsBeforeRunsin our configuration. Fixes #1754. -
videoRecordinghas been renamed tovideoin 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.ymlfile. 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.
-
beforeandafterhooks 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
nodecode. - You can now run multiple specs by passing a glob to the
--specargument ofcypress 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.jsfile has been replaced by anexamplesfolder 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 thecypress-example-kitchensinkrepo 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
specfile that it represents. Fixes #980. - The Test Runner now displays
skippedtests differently thanpendingtests. #244. - Standard output now displays the number of
skippedtests within the summary output duringcypress 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
windowwas being returned instead of AUT'swindow. Fixes #1436. - The
closeevent now properly fires onfilewhen manually closing the browser. Fixes #1560. -
cypress.env.jsonis 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=RootLayerScrollingto 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 runabout 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=1environment variable. Fixes #1747 and #1748. - When running
cypress run --recordon 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-notificationsflag 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()orcypress.run()through the Module API, just as you would from the command line. #1442. - Added type definitions for
Cypress.offandCypress.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
durationoption. Fixes #1606. -
NODE_OPTIONSenvironment variables now print within thecypress:clilogs when running inDEBUGmode. Although usingNODE_OPTIONSthemselves 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
itand any accompanyinghooksthat 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
200pixels to20pixels. 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
headedandheadlessto be more specific and instead referencerun modeandinteractive 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:
- New
cy.task()doc - New
Screenshot APIdoc - Update
cy.screenshot()doc to include new accepted usage and options - Update
Installing Cypressdoc to include new options for Cypress binary caching - Updated
Writing and Organizing Teststo include newly seededexamplesfolder - Updated
cypress runspec args - Updated
Dashboard Service - Updated
Launching Browsersto include our disabling of device discovery notifications - Updated
Preprocessorsto reflect all wayscloseevent could be triggered - Updated use of "running headlessly" to more accurate "during
cypress run"
v2.5.0
v2.4.1
v2.4.0
v2.3.0
v2.2.0
v2.1.0: 2.1.0
Released 3/1/2018
Bugfixes:
- Prevent a bug with
node-sasson OSX + Windows when localnodeversion does not match bundlednodewhen importing components directly in spec files. The underlying issue was because we forgot to updateBuildkiteandAppveyorwhen we upgradedElectronin2.0.0. Fixes #1387 and #1390.
Features:
- The Selector Playground has been updated to automatically prefer
data-cy,data-testordata-testidattributes 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:
- Added
Selector Playground Guide - Added
Selector Playground API - Updated
Best Practices - Updated
FAQ - Updated
Introduction to Cypress
v2.0.0: 2.0.0
Released 2/15/2018
Breaking Changes:
- The built in default
Electronbrowser has been bumped from version53to59. This version represents the version ofChromiumthat Electron is using. In other words, runningcypress run(or viaElectron) will be like running your tests inChrome 59now. 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
modifyObstructiveCodethat istrueby 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-Controlheaders will be cleaned and removed. In the future, we will expose a newcy.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
--specoption is now normalized against the current working directorycwdinstead 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 notcwd. Fixes #1159.
Bugfixes:
-
blacklistHostswould 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. -
blacklistHostsis now correctly accepted via the--configCLI flag. - Spies and Stubs created with
cy.stub()andcy.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 newauthoption to specify theusername/passwordusingcy.visit(url, options). All of the requests that match the origin of theurlwill have theAuthorization: Basic <...>headers added. Fixes #1288. - Fixed domain parsing failures when
localorlocalhostwas not used as atld. Fixes #1292 and #1278. - Removed the flag
--disable-background-networkingfrom 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.jsonin 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 to2.0.0delete the following folders:- OSX:
~/Library/Caches/Cypress - Linux:
~/.cache/Cypress - Windows:
%APPDATA%\Cypress\cy\production\browsers
- OSX:
Configuration
-
If you want to rebase/retry this MR, check this box
This MR has been generated by Renovate Bot.