0.17.0
Released Released on August 29, 2016
Overview:
The desktop application has been completely redesigned. We have moved from a tray application to a standard dock application. The list of projects is now in the same window as the list of tests in a project. As each test runs, the application highlights the currently running spec and displays the browser version running. The configuration of a project is now displayed in its own tab. There is now a Desktop Menu where you can logout, check for updates, or view help links.
The test runner has been rebuilt from the ground up in React.js. The left side of the runner called the reporter is now a separate application. This, as well as other changes, markedly improved the performance of running tests. Your tests will now run faster. This will also enable you to test your application in full screen. Additionally this paves the way for being able to spawn multiple browsers at once and synchronize testing across them. This also means we'll be able to support mobile browsers. The UI for doing this hasn't been implemented but the vast majority of the work to accomplish this is done now.
We have rewritten the entire proxy layer of the Cypress server to finally fix all the problems with CORS.
Breaking Changes:
You cannot
cy.visit()two different super domains within a single test. Example:cy.visit('https://cypress.io').visit('https://anotherwebsite.com'). There shouldn't be any reason you ever need to do this in a single test, if you do, you should make these two separate tests.
Features:
All CORS related issues should finally be fixed now. Cypress now internally switches to the domain that you used in your
cy.visit(). This means that the correct domain will display in the URL based on the application currently under test. Your application's code will run under the current domain at all times. Previously we implemented an endless amount of hacks and internal translations to figure out the domain you were supposed to be on without actually being on the domain. This caused code to behave different and caused subtle issues. Those issues should now be resolved. The entire proxy layer has been rewritten to handle all HTTPS certificates flawlessly, continue to inject (even on HTTPS pages), and still know when to automatically bypass injection so you can open other tabs while testing in Cypress. These new proxy changes also unlock the ability to do things like allowing or blocking specific 3rd party domains, or even be able to stub not just XHR's but any kind of HTTP request.window.fetchnow works correctly. Stubbing these does not yet work but it is now possible for us to implement stubbing in a future version. Addresses #95.The list of tests now automatically refresh when test files are renamed, deleted, or added. In addition, because the list of tests is now displayed in the desktop application, we now synchronize the state of the current running spec.
cy.visit()has better error messages. Cypress now programmatically determines why acy.visit()failed and gives you a ridiculously accurate error message. Addresses #138.cy.visit()now displays redirects and any cookies set.The currently running test is now scrolled into view. This behavior can be turned off by scrolling in the Command Log or selecting to disable auto-scroll at the top of the Command Log. Addresses #194
Tests in the Command Log now automatically expand when specific commands take longer than
1000msto run. Previously when running more than 1 test we did not expand commands until a test failed. Now they will be expanded and automatically collapsed whenever a single command is taking a long time to finish.We now have full blown subdomain support. This means you can now navigate to a subdomain either directly via a
cy.visit()or by navigating in your application naturally (such as clicking an<a>).cy.request()now attaches and sets cookies transparently on the browser. Even though the browser will not physically make the request, we automatically apply outgoing cookies as if the browser had made the request. Additionally we will automatically set cookies on the browser based on the response. This means you can usecy.request()to bypass not just CORS but handle things like automatically logging in without having to manually perform these actions in the UI.We now handle HTTP request errors much better. Previously if your web server sent us back a
4xxor5xxresponse we would automatically send back a500. Now we transparently pass these through.Improved dozens of error messages.
.debug()output has been improved, and you can now easily inspect the current command's subject.Clicking the URL in the header of the runner now opens that URL in a new tab.
Bugfixes:
Fixed URL proxy issue with subdomains. Fixes #183.
Viewport size maximum has been decreased from
3001pxto3000pxand minimum has been increased from199pxto200pxto match error messages. Fixes #189WebSockets are now correctly proxied through HTTPS and through subdomains different than the current domain under test.
Stopped
.debug()from accidentally mutating subjects.Cypress now correctly injects and handles pages which are missing a
<head>, a<body>, or even an<html>tag. Previously it would bomb on pages missing these tags.All commands with a long message (such as assertions) are automatically scaled down in font size and truncated properly. In addition, assertions will correctly bold the
expectedandactualvalues.
Misc:
cypress run no longer requires being logged in.
Renamed configuration option
commandTimeouttodefaultCommandTimeout. Cypress will transparently rewrite this if you have it in yourcypress.json, so you don't have to do anything.Renamed
onConsoleandonRenderCommand Log options toconsolePropsandrenderProps. We still support the older property names for backwards compatibility.Added support for a command's
messageorrenderProps.messageto use markdown.The default value of
portwithin a project's global configuration has changed from2020to now being a random open port. You can still configure a specificportif needed within the configuration.We have upgraded the
Chromiumthat runs headlessly on cypress run to version51.The internal version of
nodewhich is built into Cypress is now6.1.0.Cypress
.jsfiles are no longer minified to make them easier to debug.We are cleaning up internal
__cypresscookies more so they won't get in the way of testing your application.We now opt into
gziphandling instead of forcing requests to omit it.The runner is now responsive. It will correctly scale down URLs on smaller screen sizes instead of looking completely broken in CSS. We also designed a much better loading indicator.
Added button to the reporter that focuses the Test Runner and shows the list of tests.
The reporter now updates the duration every
100msinstead of only when a test changes.In the reporter, suites that are pending or contain only pending tests have the blue "pending" indicator on the left instead of the white "processing" indicator.